Комментарии 28
Примечание. Эта заметка появилась по двум причинам. Во-первых, никто не знает про список и вновь и вновь предлагают посмотреть одни и те-же проекты. Во-вторых, раз никто не знает, значит масса людей пропустила интересные статьи. А в списке можно найти тот проект, который интересен для души читателя.
Тихо как-то. Давайте, бодрее, веселее! Оставляем комментарии.
Вот коллега скоро про проверку ОС Haiku напишет.
А вы бы какие проекты хотели предложить?
Вот коллега скоро про проверку ОС Haiku напишет.
А вы бы какие проекты хотели предложить?
Было бы интересно посмотреть на результат проверки sqlite с ихним 100% branch test coverage и Millions and millions of test cases.
Мы проверяли SQLite. Код качественный. Написать статью не о чем. Была только пара мелочей типа:
static int fts3EvalPhraseStart(....) { .... int bIncrOk = (bOptOk && pCsr->bDesc==pTab->bDescIdx && p->nToken<=MAX_INCR_PHRASE_TOKENS && p->nToken>0 && p->nToken<=MAX_INCR_PHRASE_TOKENS && p->nToken>0 && pTab->bNoIncrDoclist==0 ); .... }
Я тыкал палочкой пару гиганских проектов с неплохим покрытием тестами; и могу сказать, что как правило находится постфактум немного, только в заброшенных углах.
Но это всё приходит ценой неслабых затрат энергии на ревью, багтестах, и крови пользователей.
Статический анализатор позволяет экономить в этом месте.
То есть если добавить статический анализатор к идеальному проекту, то просто разработка станет дешевле на 10-30% (в зависимости от опыта команды).
Разумеется, если воткнуть анализатор к «альтернативно одаренному» проекту, то разработка станет дороже на 300-500%, так как вместо исправления люди начнут его игнорировать и пытаться подавлять.
Но это всё приходит ценой неслабых затрат энергии на ревью, багтестах, и крови пользователей.
Статический анализатор позволяет экономить в этом месте.
То есть если добавить статический анализатор к идеальному проекту, то просто разработка станет дешевле на 10-30% (в зависимости от опыта команды).
Разумеется, если воткнуть анализатор к «альтернативно одаренному» проекту, то разработка станет дороже на 300-500%, так как вместо исправления люди начнут его игнорировать и пытаться подавлять.
Спасибо за комментарий. Чуть раскрою мысль.
Тут очень важно понимать, что хотя мы рекламируемся через проверку проектов (часто разовую), это самый неправильный способ использования статического анализатора :-).
Фразы от программистов типа: «Ага, фигня ваш инструмент! Я прогнал на нашем релизе — всего ошибок нашел!» мы слышим часто. И приходится как раз объяснять, что смысл анализатора в регулярном использовании, когда ошибка обнаруживается и исправляется сразу при написании кода. А не когда тестеры ее нашли (или пользователи).
Тут очень важно понимать, что хотя мы рекламируемся через проверку проектов (часто разовую), это самый неправильный способ использования статического анализатора :-).
Фразы от программистов типа: «Ага, фигня ваш инструмент! Я прогнал на нашем релизе — всего ошибок нашел!» мы слышим часто. И приходится как раз объяснять, что смысл анализатора в регулярном использовании, когда ошибка обнаруживается и исправляется сразу при написании кода. А не когда тестеры ее нашли (или пользователи).
Скажите, а есть ли у вас, даже не планы, а так, задумки/размышления на будущее, чтобы разработать статический анализатор для чего-то ещё, кроме C++? Меня прежде всего интересует платформа .NET (и C# как самый популярный язык на ней).
Да, мы начинаем думать в сторону статического анализа для C#. Так как там понятная конкретная среда (Visual Studio), понятная аудитория (коммерческие пользователи Visual Studio). Так что очень даже может быть.
Только чувак на картинке совсем не лайкает.
Интересно, когда-нибудь появятся анализаторы, находящие архитектурные просчеты (ну или хотя бы проблемы с многопоточностью)? :)
Появятся, даже не сомневайтесь: сложность алгоритмов и лигики в софте постоянно растёт и, чтобы не стагнировать, индустрия делает средства разработки и анализа всё интелектуальнее.
Например,
FindBugs (Java) уже умеет находить проблемы с многопоточностью.
Этот анализатор (PHP) умеет находить проблемы с шаблонами проектирования и памятью.
Можно вспомнить ещё ReSharper Inspections.
А вот как людей будут обучать и готовить к подобному окружению в разработке ПО, я пока не представляю.
Например,
FindBugs (Java) уже умеет находить проблемы с многопоточностью.
Этот анализатор (PHP) умеет находить проблемы с шаблонами проектирования и памятью.
Можно вспомнить ещё ReSharper Inspections.
А вот как людей будут обучать и готовить к подобному окружению в разработке ПО, я пока не представляю.
на тему многопоточности — есть же code.google.com/p/data-race-test/wiki/ThreadSanitizer
Тулза, бесспорно, полезная, но это отнюдь не статический анализатор, а очень даже инструмент для выявления рейсов в рантайме, причем с недетерминированным результатом (нельзя гарантировать, что если рейс есть, то эта тулза его обязательно найдет).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Баги. Баги никогда не меняются