Nikolay
Точнее вот поправил код
Nikolay
Реальный случай)
Nikolay
А потому, что должно быть так:
if length = 4 then
()
else if length > 0.Count then
printf "asds"
let a = b
if a = b then
()
else
()
Roman
Roman
ну так это человек, который пишет код, знает, что на принте не должна останавливаться ветка
Roman
Но он так же вполне имеет право ее там и остановить
Roman
линтер намерения читать точно не может)
Nikolay
Линтер должен тебя заставлять пробелы ставить
Nikolay
И если бы там стоял пробел, человек бы увидел ошибку свою
Nikolay
А так даже я когда глянул в код не сразу раздуплил
Анна
Nikolay
Крылатый
Анна
Тогда я тоже не сильна в терминологии
Nikolay
Глупо ожидать от PVS Studio форматинга кода, у него работа - статический анализ
Крылатый
pylint -> Code score: 10/10 o bozhe
Roman
короч, имхо, проще Василия научить ставить пробелы, чем научить софт читать мысли
Nikolay
Nikolay
Явно вот это пахнущий код:
if a = b then
printf "a = b"
else if b = a then
printf "b = a"
else
printf "b <> a"
Nikolay
Или ты не согласишься?
Крылатый
Nikolay
С точки зрения компилятора он правильный
Nikolay
Линтер может распознать такой кейс
Roman
Roman
Ты понимаешь, что из-за того, что у нас скоупы определяются отступами, понятие правильности пробела не такое же, как в сишарпе, например?
Nikolay
Человекочитаемо
Roman
да епт. Линтер же не человек
Nikolay
Roman
Ты, по-моему, хочешь магии от него
Nikolay
Но линтер есть, и насколько знаю очень мощный
Nikolay
Крылатый
Читаемость через единообразие.
Roman
Твои примеры отличаются не форматированием, они отличаются тем, что делает код
Vladislav
Roman
Линтер не должен менять поведение. Насколько я понимаю
Nikolay
Nikolay
Я не говорю, что линтер должен всё расставлять
Roman
автоформаттер может вам помочь с косметикой, но не поможет с багами
Nikolay
Я не говорю, что линтер должен такой код:
if a = b then
printf "a = b"
doSomeWork
должен превращать в такой
if a = b then
printf "a = b"
doSomeWork
А он должен превращать его в такой:
if a = b then
printf "a = b"
doSomeWork
Чтобы программист видел ошибку свою
Roman
поэтому твоя изначально озвученная претензия про то, что "а потом вылезают баги" не решится.
Roman
а, вот оно че
Nikolay
Ура
Nikolay
Если тебе линтер будет на лету править код так, при переводе каретки например, ты же сразу баг заметишь
Nikolay
Но тебя будет скорее всего бесить линтер, и ты будешь его ругать)
Крылатый
Roman
тогда осталось найти рабочую пежню под райдер
Ayrat
Ну дык там Фантомас
Hog
Roman
но неужели с Васей не договориться на этот счет? Это же сугубо практичное и логичное требование
Ayrat
Рабочая пежня
Nikolay
Линтер тебе не исправит баг, но укажет на него по крайней мере
Nikolay
Явно выделит так сказать
Hog
Ayrat
Ayrat
Бля, есть Фантомас
Nikolay
Nikolay
Vladislav
Ayrat
Да что опять???
Vladislav
на элмише
Ayrat
Hog
Vladislav
Чо так
https://github.com/fsprojects/fantomas/issues/470
Ayrat
Igor
Vladislav
Ну почини
да там более сложная проблема - вон выше кинул
Vladislav
я тут занят более приземленными вещами занят
Nikolay
Vladislav
например как починить аот под айос который падает с стектрейсом в сишный код
Roman
Ну почини
во, вместо решения бизнес задач начинаешь в рабочее время чинить фантомас. Василий видит, чем ты занят, и принимает решение расставлять пробелы самостоятельно. Профит!
Vladislav
как оказалось Seq.collect может взорвать моно
Vladislav
при должной удаче
Vladislav
internal error: Exception of type 'System.OutOfMemoryException' was thrown.