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
линтер намерения читать точно не может)
Nikolay
Линтер должен тебя заставлять пробелы ставить
Крылатый
По-моему, линтер это статический анализатор. А форматирует какой-то автоформаттер 🤔
Линтеры бывают разные. Или я не понимаю, что это такое. Как-то писал в jslint (или какой-то из них) ишуй, что они не детектят очевидный признак бесконечной рекурсии. Сказали, что это не задача линтера и закрыли ишуй.
Nikolay
И если бы там стоял пробел, человек бы увидел ошибку свою
Nikolay
А так даже я когда глянул в код не сразу раздуплил
Roman
Линтер должен тебя заставлять пробелы ставить
ну так смотря где. Если пробел меняет поведение — линтер не может тебе на этот счет ничего сказать. Линтер же не знает, что ты хочешь написать
Анна
Линтеры бывают разные. Или я не понимаю, что это такое. Как-то писал в jslint (или какой-то из них) ишуй, что они не детектят очевидный признак бесконечной рекурсии. Сказали, что это не задача линтера и закрыли ишуй.
набор правил для линтеров, их качество и глубина анализа могут быть разными. Но в моём мире это всё равно статический анализатор, который именно что ловит подозрительные места с точки зрения логики
Анна
Тогда я тоже не сильна в терминологии
Nikolay
Глупо ожидать от PVS Studio форматинга кода, у него работа - статический анализ
Крылатый
pylint -> Code score: 10/10 o bozhe
Roman
короч, имхо, проще Василия научить ставить пробелы, чем научить софт читать мысли
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
да епт. Линтер же не человек
Roman
Ты, по-моему, хочешь магии от него
Nikolay
Но линтер есть, и насколько знаю очень мощный
Roman
Какой магии?
понимания линтером задуманного поведения
Крылатый
Читаемость через единообразие.
Roman
Твои примеры отличаются не форматированием, они отличаются тем, что делает код
Vladislav
С точки зрения компилятора он правильный
предлагаю просто людей бить палкой
Roman
Линтер не должен менять поведение. Насколько я понимаю
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
Ну дык там Фантомас
Roman
но неужели с Васей не договориться на этот счет? Это же сугубо практичное и логичное требование
Ayrat
Рабочая пежня
Ayrat
А где тут ошибка, простите?
Программист ожидал что ворк будет пож условием
Nikolay
А где тут ошибка, простите?
doSomeWork должен выполняться в блоке if
Roman
А где тут ошибка, простите?
ошибки компиляции нет. Просто очень легко неправильно понять, что делает код
Nikolay
Линтер тебе не исправит баг, но укажет на него по крайней мере
Nikolay
Явно выделит так сказать
Ayrat
Бля, есть Фантомас
Roman
Ты себе хрустальный шар завёл?
ворвался в беседу в конце, и щас мы все еще разок по кругу пройдем)
Vladislav
Ayrat
Да что опять???
Vladislav
на элмише
Ayrat
Vladislav
Чо так
https://github.com/fsprojects/fantomas/issues/470
Ayrat
на элмише
Ну почини
Vladislav
Ну почини
да там более сложная проблема - вон выше кинул
Vladislav
я тут занят более приземленными вещами занят
Nikolay
я тут занят более приземленными вещами занят
Он в АОТ компиляторе ковырялся!
Vladislav
например как починить аот под айос который падает с стектрейсом в сишный код
Roman
Ну почини
во, вместо решения бизнес задач начинаешь в рабочее время чинить фантомас. Василий видит, чем ты занят, и принимает решение расставлять пробелы самостоятельно. Профит!
Vladislav
как оказалось Seq.collect может взорвать моно
Vladislav
при должной удаче
Vladislav
internal error: Exception of type 'System.OutOfMemoryException' was thrown.