kb 24.08.2011 09:01 Gajim

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

1. analizer 24.08.2011 09:05 mcabber

обвиусли да

2. werehuman 24.08.2011 09:14 Psi+

да

3. DZhon 24.08.2011 09:25

Хреново чувак показал, да. Анализатор здесь просто ищет наличие хотя бы одного присваивания до того, как сработает return. Ясен хрен, можно извратиться и инициализировать через указатель, но это уже совсем другая и-C-тория.

4. kbDZhon /3 24.08.2011 09:27 Gajim

ну и вообще такие штуки только засоряют, как мне кажется, внимание. Как кто-то правильно сказал: "автоматические анализаторы разного рода постоянно улучшают защиту от тупых ошибок. Мне не нужна защита от тупых ошибок, с ними я и сам справлюсь. Мне нужна защита от охуенно сложных ошибок!". В чем-то он прав.

5. DZhonkb /4 24.08.2011 09:29

Не, анализатор — это ок. Но для языков с более простой грамматикой, я считаю. В плюсах как ни старайся, получится либо монстр, либо пустые места.

6. kbDZhon /5 24.08.2011 09:30 Gajim

ну в питоне есть, казалось бы, простенький pylint, но даже тот своими "капитан очевидность" (типа "неиспользованная переменная") чаще засоряет внимание только.

7. DZhonkb /6 24.08.2011 09:33

В нормальных конторах проталкивание исходников в главное дерево должно сопровождаться запуском тестов и статическим анализом (хотя бы на соответствие стилю). Такие вещи можно и нужно автоматизировать и скриптовать.

8. kbDZhon /7 24.08.2011 09:35 Gajim

дада, и еще pep8.py (который стиль кодирования), еще coverage.py. Всё равно pylint нужен как минимум чтоб на летку ошибки синтаксиса подсвечивал (в питоне с его форматированием строк и % dict() иногда помогает, потому что бывает таки херня с переносами)

9. werehumankb /6 24.08.2011 09:37 Psi+

ага, не пользуюсь им, ибо ещё ни разу ничего полезного не посоветовал

10. kbwerehuman /9 24.08.2011 09:39 Gajim

pylint?

11. werehumankb /10 24.08.2011 09:40 Psi+

да

12. kbwerehuman /11 24.08.2011 09:40 Gajim

нет, ну если придерживаться правила 80 символов и извращаться чтоб всё правильно переносилось — pylint бывает реально полезен

13. werehumankb /12 24.08.2011 09:41 Psi+

мне показалось глупым, что он требовал от меня заменить {} на dict()

14. kbwerehuman /13 24.08.2011 09:42 Gajim

да, этого вроде бы нету уже :-) А вообще мне очень интересно самому пописать статический анализатор, обязательно займусь в будущем. Конкретно хочется сделать его таким, чтоб можно было в питоне его assert'ами обучать уму и подсказки давать. И в рантайме полезно и критические куски можно свести практически к статическому коду в теории.

15. 238328 24.08.2011 15:11 >>>

красиво же!

16. 238328werehuman /13 24.08.2011 15:12

всё правильно говорил, рли

Do you really want to delete ?