kb
24.08.2011 09:01 Gajim
Чувак на хабре привел пример статического анализатора кода от Apple. Вы не могли бы мне объяснить, что конкретно он пытается сказать на этом скриншоте? http://habrahabr.ru/blogs/programming/12... Что при x < 0 вернётся чепуха или что?

16 comments
recommend
bookmark
subscribe
обвиусли да
да
Хреново чувак показал, да. Анализатор здесь просто ищет наличие хотя бы одного присваивания до того, как сработает return. Ясен хрен, можно извратиться и инициализировать через указатель, но это уже совсем другая и-C-тория.
ну и вообще такие штуки только засоряют, как мне кажется, внимание. Как кто-то правильно сказал: "автоматические анализаторы разного рода постоянно улучшают защиту от тупых ошибок. Мне не нужна защита от тупых ошибок, с ними я и сам справлюсь. Мне нужна защита от охуенно сложных ошибок!". В чем-то он прав.
Не, анализатор — это ок. Но для языков с более простой грамматикой, я считаю. В плюсах как ни старайся, получится либо монстр, либо пустые места.
ну в питоне есть, казалось бы, простенький pylint, но даже тот своими "капитан очевидность" (типа "неиспользованная переменная") чаще засоряет внимание только.
В нормальных конторах проталкивание исходников в главное дерево должно сопровождаться запуском тестов и статическим анализом (хотя бы на соответствие стилю). Такие вещи можно и нужно автоматизировать и скриптовать.
дада, и еще pep8.py (который стиль кодирования), еще coverage.py. Всё равно pylint нужен как минимум чтоб на летку ошибки синтаксиса подсвечивал (в питоне с его форматированием строк и % dict() иногда помогает, потому что бывает таки херня с переносами)
ага, не пользуюсь им, ибо ещё ни разу ничего полезного не посоветовал
pylint?
да
нет, ну если придерживаться правила 80 символов и извращаться чтоб всё правильно переносилось — pylint бывает реально полезен
мне показалось глупым, что он требовал от меня заменить {} на dict()
да, этого вроде бы нету уже :-) А вообще мне очень интересно самому пописать статический анализатор, обязательно займусь в будущем. Конкретно хочется сделать его таким, чтоб можно было в питоне его assert'ами обучать уму и подсказки давать. И в рантайме полезно и критические куски можно свести практически к статическому коду в теории.
красиво же!
всё правильно говорил, рли