Инструменты проверки C++ кода

Посоветуйте инструменты проверки C++ кода.

На данный момент на просторах инета удалось выкопать этот пост. Этот онлайновый валидатор. Эту тулзень для подсчета различных метрик, и эту для анализа сырцов.

У кого-нибудь есть опыт использования подобных приложений, посоветуйте что можно использовать в практике.

Последняя правка: пн, 29/08/2011 - 21:59
Submitted by Victor on

Комментарии

А проверять что собсно? В смысле статический анализ С++ слабо возможен. Т.е. имеется софт за десятки килобаксов, но его просто так посмотреть нереально. Если в runtime ошибки памяти ловить, то Rational Purify (пожалуй самое практичное), Bounds Checker (попса конечно, но иногда находит интересное), Memory Validator (если поразбираться в настройках, толк извлечь можно). LINT и тому подобная хрень на практике слабополезна (к тому же только для С). У SourceInsight весьма неплохой анализатор С++ -- особенно полезен когда нужно много чужого кода ковырять (на самом деле там и С# и жава и всякое другое есть).
Submitted by BLK Dragon on
Ну хотябы чтобы валидировало:
  • методы, дефайны и классы которые нигде не используются.
  • переменные которые можно было бы объявить константами.
Submitted by Victor on
методы, дефайны и классы которые нигде не используются. Стать на определение и посмотреть ссылки переменные которые можно было бы объявить константами. А как они вообще появились? В смысле если такое есть, то как раз написано с расчётом вынести эту переменную в конфиг. Вообще непонятно, зачем (пытаться) делать всё это автоматом -- либо codebase регулярно чистится (review'иться и refactor'иться), либо нет. В первом случае всё равно код изучается и правиться, во втором -- код представляет собой мусорку которой всё одно мало что поможет.
Submitted by BLK Dragon on

>> Стать на определение и посмотреть ссылки

Вообщем случаи можно, но если в проекте сотня файлов, в каждом файле с два-три десятка методов - сильно много раз придется становится и смотреть.

>> Вообще непонятно, зачем (пытаться) делать всё это автоматом.

Ну хотябы чтобы убрать рутину от человека и актулизировать его внимание на нужный вещах. Чтобы машина ему сказала - вот из этих 1000-и файлов тебе надо заострить внимании на этих 5-ти.

Вообщем я так понял что валидация кода либо не поддается автоматизации либо игра не стоит свечь?

Submitted by Victor on
Вообщем случаи можно, но если в проекте сотня файлов, в каждом файле с два–три десятка методов — сильно много раз придется становится и смотреть Если у тебя уже есть на руках codebase в котором сотни файлов и килобайты неиспользуемого кода, то это в любом случае проблема; автоматика тут чудес не сделает. Конечно coverage прогнать можно (если есть тесты которые покрывают весь код), но скорее всего придётся всё равно вручную ковырять. Вообщем я так понял что валидация кода либо не поддается автоматизации либо игра не стоит свечь? В случае С++ это слабо поддаётся. Статический анализ, как я уже говорил, сложно для С++ сделать; софт вроде есть, но я его не видел (т.е. его достать крайне сложно и стоит сильно дорого). Если конкретно про игры говорить, то кода обычно не запредельное количество, если конечно не брать какой-нить UE3 с его несколькими тысячами файлов исходников. 200..400К строк вполне можно осилить "вручную" если работать с этим кодом постоянно и/или в процессе появления.
Submitted by BLK Dragon on

>> Если у тебя уже есть на руках codebase в котором сотни файлов и килобайты неиспользуемого кода...

Вроде бы еще не все так плачевно. На данный момент в проекте 406 файлов сырцов, общим объемом 2.4 мб (и это только своих, не считая стороних библиотек). Пока справляемся и держим все в голове, но что будет дальше - не известно. Поэтому и интересно как этого не допустить и желательно в автоматическом или полуавтоматическом режиме.

Хотелось бы исходить из принципа: все что можно автоматизировать - должно быть автоматизировано.

Находить хотябы слабые места в кодярнике по Мейерсу (тут и тут подробнее) и жизнь была бы проще. Smile

Половину из этих ошибок может найти компилятор, но остальную приходится искать программеру... жаль.

На данный момент идет просто проработка вопроса - возможна ли автоматизация и каких затрат она стоит (и стоит ли она этих затрат Smile ). Поэтому и хотелось бы услышать опыт других людей в этом вопросе.

Submitted by Victor on
возможна ли автоматизация и каких затрат она стоит (и стоит ли она этих затрат ) Возможна -- если вы готовы выбросить несколько десятков килобаксов :) Судя по размеру проекта -- не стоит оно того; Кстати считается, что один человек способен "контролировать" до 200К строк кода; исходя из собственного опыта это похоже на правду. Практический совет тут такой -- постоянно, регулярно отсматривать код и править всё что криво (обычно этим занимается самый квалифицированный разработчик), т.е. не допускать чтобы codebase превращался в мусорку.
Submitted by BLK Dragon on

GameDev.by