Бесплатный инструмент для проверки исходного кода C / C ++ на соответствие стандартам кодирования? [закрыто]


151

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


3
Если вы не нашли здесь нужного ответа, подумайте над этим вопросом: stackoverflow.com/q/10819398/120163
Ира Бакстер

Ответы:


57

Единственный инструмент, который я знаю, это Вера . Тем не менее, не использовал его, поэтому не могу комментировать, насколько он жизнеспособен. Демо выглядит многообещающе.


Я проверил это, и это довольно просто. Но это работает!
Джадер Диас

7
Я попробовал это, но был разочарован. Он токенизировал код C ++, но имеет только один тип токенов для «идентификаторов», поэтому он не различает, скажем, имена классов, переменные-члены и локальные переменные. Поэтому я не мог найти способ применить разные соглашения об именах для разных типов идентификаторов.
Джон W

Вера не имеет полный набор правил - но они расширяемые (в TCL)
fmuecke

2
«Расширяемый» только для очень простых задач. Так как Вера понимает С ++ поверхностно, любая «глубокая проверка стиля» (рассмотрим возможное правило (я не предлагаю хорошего): для каждого выделения в соответствующей функции есть соответствующее освобождение) придется кодировать соответствующие знания С ++, и это действительно очень сложно, а это значит, что этого не произойдет.
Ира Бакстер

Исправлена ​​ссылка на Веру: bitbucket.org/verateam/vera
congusbongus

49

4
+1. Это очень мило - хотя у него очень строгий стиль. Нелегко расширить с помощью собственных правил, как с vera ++.
fmuecke

Отлично, если вы используете стиль Google C ++ :) +1
jkp

3
Я предполагаю, что теперь это называется cpplint. Его можно найти по адресу github.com/google/styleguide/tree/gh-pages/cpplint , ссылка выше на c ++ lint не работает.
Цитракс

Просто для справки, для установки вы можете использовать "pip install cpplint". Тогда вы можете просто использовать «cpplint file.cpp» или «cpplint --recursive». вместо "./cpplint.py", что намного предпочтительнее IMO. Проще, чем скачивать через github
Colin D


8

Я уверен, что это может помочь в некоторой степени CXX Checker . Также этот инструмент, кажется, довольно хорош KWStyle. Это от Kitware, ребята, которые разрабатывают Cmake.


1
Cxxchecker сейчас кажется мне очень мертвым.
stefanct

cxx checker - неработающая ссылка.
Wolf

7

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


1
Вам лучше пояснить, что ArtisticStyle фокусируется исключительно на форматировании, что, конечно, не плохо :)
Wolf

6

Попробуйте nsiqcppstyle . Это проверяющий стиль программирования C ++ для C / C ++. Это легко расширить, чтобы добавить свои собственные правила.



2

В своей работе я использовал инструмент - набор инструментов LDRA

Он используется для тестирования кода на языке c / c ++, но также может проверять соответствие стандартам кодирования, таким как MISRA и т. Д.


1
Почему это мод? Даже если LDRA также является статическим анализатором - что-то, чего не нужно искать, - я считаю, что он также способен проверять код на наличие нарушений стандарта кодирования.
Вит Пи

4
LDRA стоит примерно столько же, сколько ваша средняя машина ... не моя идея бесплатной.
Лундин

2

Проверьте universalindentguiна sourceforge.net .

у него есть много стилей проверки для C, и вы можете настроить шашки.


UniversalIndentGUI Имеет функцию предварительного просмотра, может экспортировать конфигурацию и экспортировать скрипт. Он отлично подходит для опробования различных «отступов», таких как GNU Indent, Artistic Style и Uncrustify.
congusbongus

1

Существует cppcheck, который также поддерживается Hudson через одноименный плагин.


4
cppcheck - это инструмент статического анализа, а не то, что ищет вопрос.
Вит Пи

Может быть, это изменилось с 2010 года: сегодня Cppcheck также включает предупреждения о стилистических проблемах. Но, хорошо, OP явно исключил статические анализаторы кода.
Wolf



-1

В настоящее время я работаю над проектом с другим проектом, чтобы написать именно такой инструмент. Я посмотрел на другие инструменты статического анализа кода и решил, что смогу работать лучше.

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

Проект с открытым исходным кодом - вы можете посетить страницу проекта , и если вы хотите принять участие, мы хотели бы получить еще несколько внешних отзывов.

Я не буду утомлять вас подробностями - вы можете зайти на страницу проекта , но скажу одно: большинство инструментов статического анализа кода нацелены на проверку вашего кода на наличие ошибок и не очень связаны с проверкой правил кодирования. Мы выбрали более гибкий подход, который позволяет нам писать плагины для проверки как «домашних правил», так и возможных ошибок.

Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь обращаться ко мне.

Ура,


4
Последний коммит был в июне 2009 года. Кажется, он больше не разрабатывается.
одноименный
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.