Pull to refresh

Comments 28

Примечание. Эта заметка появилась по двум причинам. Во-первых, никто не знает про список и вновь и вновь предлагают посмотреть одни и те-же проекты. Во-вторых, раз никто не знает, значит масса людей пропустила интересные статьи. А в списке можно найти тот проект, который интересен для души читателя.
А есть тот же список на английском?
Тихо как-то. Давайте, бодрее, веселее! Оставляем комментарии.
Вот коллега скоро про проверку ОС Haiku напишет.
А вы бы какие проекты хотели предложить?
V8 смотрели.
И MongoDB смотрели (ссылку не могу найти).
На интересные статьи не набралось.
Было бы интересно посмотреть на результат проверки 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
  );
  ....
}

Андрей, не планируете написать статью про Magellan SQLite BUG?
Был ли он в той версии SQLite, которая проверялась?
Была ли в той версии PVS-Studio диагностика, которая потенциально должна была его выявить?
Сорри. Я первый раз про этот баг слышу и не могу дать ответ ни на один вопрос.
Я тыкал палочкой пару гиганских проектов с неплохим покрытием тестами; и могу сказать, что как правило находится постфактум немного, только в заброшенных углах.
Но это всё приходит ценой неслабых затрат энергии на ревью, багтестах, и крови пользователей.
Статический анализатор позволяет экономить в этом месте.

То есть если добавить статический анализатор к идеальному проекту, то просто разработка станет дешевле на 10-30% (в зависимости от опыта команды).

Разумеется, если воткнуть анализатор к «альтернативно одаренному» проекту, то разработка станет дороже на 300-500%, так как вместо исправления люди начнут его игнорировать и пытаться подавлять.
Спасибо за комментарий. Чуть раскрою мысль.

Тут очень важно понимать, что хотя мы рекламируемся через проверку проектов (часто разовую), это самый неправильный способ использования статического анализатора :-).

Фразы от программистов типа: «Ага, фигня ваш инструмент! Я прогнал на нашем релизе — всего ошибок нашел!» мы слышим часто. И приходится как раз объяснять, что смысл анализатора в регулярном использовании, когда ошибка обнаруживается и исправляется сразу при написании кода. А не когда тестеры ее нашли (или пользователи).
… а еще при наличии анализаторов (желательно автоматически работающих по каждому чиху) писать на С++ становится не так погано.

… тяжело плюсокодить после динамических языков

… особенно тяжело после языков с нормальной системой типов
Скажите, а есть ли у вас, даже не планы, а так, задумки/размышления на будущее, чтобы разработать статический анализатор для чего-то ещё, кроме C++? Меня прежде всего интересует платформа .NET (и C# как самый популярный язык на ней).
Да, мы начинаем думать в сторону статического анализа для C#. Так как там понятная конкретная среда (Visual Studio), понятная аудитория (коммерческие пользователи Visual Studio). Так что очень даже может быть.
Это связанно с аннонсом Rosylin или такие идеи витали и раньше?
Напрямую не связано. Да и аннонс Рослина был давно уже.
Только чувак на картинке совсем не лайкает.
Да, я знаю. И я был большой любитель Fallout. :)
Для тех кто не знает: Если вы видите облако–гриб ядерного взрыва, вытяните руку в его направлении и поднимите большой палец. Если гриб больше большого пальца — вы в зоне поражения
Мораль: хочешь жить — качай большой палец или укорачивай руки.
Интересно, когда-нибудь появятся анализаторы, находящие архитектурные просчеты (ну или хотя бы проблемы с многопоточностью)? :)
Появятся, даже не сомневайтесь: сложность алгоритмов и лигики в софте постоянно растёт и, чтобы не стагнировать, индустрия делает средства разработки и анализа всё интелектуальнее.

Например,

FindBugs (Java) уже умеет находить проблемы с многопоточностью.
Этот анализатор (PHP) умеет находить проблемы с шаблонами проектирования и памятью.
Можно вспомнить ещё ReSharper Inspections.

А вот как людей будут обучать и готовить к подобному окружению в разработке ПО, я пока не представляю.
Тулза, бесспорно, полезная, но это отнюдь не статический анализатор, а очень даже инструмент для выявления рейсов в рантайме, причем с недетерминированным результатом (нельзя гарантировать, что если рейс есть, то эта тулза его обязательно найдет).
Видел и статические реализации, правда, ограниченного применения.
В целом же, тут скорее ближе тулзы доказательства корректности
Sign up to leave a comment.