Выглядит довольно легко найти такой инструмент для Java (Checkstyle, JCSC), но я не могу найти его для C / C++. Я не ищу статический анализатор кода, похожий на линт, я только хотел бы проверить стандарты кодирования, такие как именование переменных, использование заглавных букв, интервал, идентификация, размещение скобок и т. д.





Единственный известный мне инструмент - Вера. Однако не использовал его, поэтому не могу комментировать, насколько он жизнеспособен. Демо выглядит многообещающе.
Я это протестировал, и это довольно просто. Но это работает!
Я попробовал, но был разочарован. Он токенизирует код C++, но имеет только один тип токена для «идентификаторов», поэтому он не различает, скажем, имена классов, переменные-члены и локальные переменные. Поэтому я не мог найти способа принудительно применять разные соглашения об именах для разных типов идентификаторов.
У Vera нет исчерпывающего набора правил, но они расширяемы (в TCL).
«Расширяемый» только для очень простых задач. Поскольку Вера плохо разбирается в C++, любая «глубокая проверка стиля» (рассмотрите возможное [я не предлагаю хорошее] правило: для каждого выделения в той же функции есть соответствующее освобождение) должна закодировать соответствующие знания C++, и это действительно очень сложно, а это значит, что этого не произойдет.
Фиксированная ссылка на Веру: bitbucket.org/verateam/vera
Я просто быстро попробовал: он полностью отказался от синтаксического анализа, обнаружив что-то, казалось бы, тривиальное, как однострочный комментарий, следующий за закрывающей скобкой объявления пространства имен. Он сказал, что я должен "исправить" или исключить файл ...
Vera невероятно невозможно построить с нуля, что вам нужно сделать, если вы используете систему CI и не хотите использовать TCL. Я передам.
Я использовал в своей работе инструмент Набор инструментов LDRA
Он используется для тестирования кода c / C++, но также может проверять стандарты кодирования, такие как MISRA и т. д.
Почему это понижено? Даже если LDRA также является статическим анализатором - то, чего вопрос не ищет - я считаю, что он также способен проверять код на нарушения стандарта кодирования.
LDRA стоит примерно столько же, сколько ваша обычная машина ... я не думаю, что это бесплатно.
Есть список. Также есть предполагаемый Интерфейс C++ на шине.
-1 потому что в вопросе прямо сказано «не ищу статический анализатор кода».
Не совсем то, о чем вы просите, но мне было проще просто договориться о стандарте кодирования, который стиль может генерировать, а затем автоматизировать процесс.
Вы лучше проясните, что ArtisticStyle фокусируется исключительно на форматировании, что, конечно, неплохо :)
Проверьте universalindentgui на sourceforge.net.
в нем есть много проверок стиля для C, и вы можете настроить их.
В настоящее время я работаю над другим проектом, чтобы написать именно такой инструмент. Я посмотрел на другие инструменты статического анализа кода и решил, что у меня получится лучше.
К сожалению, проект еще не готов к использованию без достаточно глубокого знания кода (читай: глючит как черт возьми). Однако мы продвигаемся довольно быстро и надеемся выпустить бета-версию в течение следующих 8 недель.
Это проект с открытым исходным кодом - вы можете посетить страницу проекта, и если вы хотите принять участие, мы хотели бы получить больше внешнего вклада.
Я не буду утомлять вас деталями - для этого вы можете использовать посетите страницу проекта, но скажу одно: большинство инструментов статического анализа кода нацелены на проверку вашего кода на наличие ошибок и не очень озабочены проверкой правил кодирования. Мы выбрали более гибкий подход, который позволяет нам писать плагины для проверки как «домашних правил», так и возможных ошибок.
Если вам нужна дополнительная информация, пожалуйста, свяжитесь со мной.
Ваше здоровье,
Последний коммит был в июне 2009 года. Вроде больше не разрабатывается.
Google C++ lint от Руководство по стилю кода Google.
+1. Это очень красиво, хотя и имеет очень строгий стиль. Не так просто расширить собственные правила, как с vera ++.
Отлично, если вы используете стиль Google C++ :) +1
Я предполагаю, что теперь это то, что называется cpplint. Его можно найти по адресу github.com/google/styleguide/tree/gh-pages/cpplint, ссылка выше на C++ lint не работает.
Для справки: для установки вы можете использовать «pip install cpplint». Затем вы можете просто использовать «cpplint file.cpp» или «cpplint --recursive». вместо "./cpplint.py", что намного предпочтительнее IMO. Проще чем качать через github хотя бы
Я бы действительно добавил пару слов о недостатках руководства по стилю Googles для C++, возможно, ссылку на интересную статью, упомянутую в @ LưuVĩnhPhúc. Для меня самый важный вопрос - можно ли легко изменить инструмент, чтобы он соответствовал различным устаревшим руководствам?
Существует cppcheck, который также поддерживается Hudson через одноименный плагин.
cppcheck - это инструмент статического анализа, а не то, что ищет вопрос.
Возможно, это изменилось с 2010 года: сегодня Cppcheck также включает предупреждения о стилистических проблемах. Но, что ж, ОП явно исключила статические анализаторы кода.
Попробуйте nsiqcppstyle. Это средство проверки стиля кодирования на основе Python для C / C++. Легко расширить, добавив свои собственные правила.
Ознакомьтесь с проверкой кода Abraxas http://www.abxsoft.com/codchk_user.html
кроме документации это не бесплатно: abxsoft.com/codchk.htm Plus, вроде уже устаревший abxsoft.com/pricing.htm
Проверьте Metrix ++ http://metrixplusplus.sourceforge.net/. Может потребоваться несколько расширений, которые подходят именно вам.
Если вы не нашли здесь нужного ответа, подумайте над этим вопросом: stackoverflow.com/q/10819398/120163