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

151

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

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

Ответы:

57

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

YRP
источник
Я проверил это, и это довольно просто. Но это работает!
Джадер Диас
7
Я попробовал это, но был разочарован. Он токенизировал код C ++, но имеет только один тип токенов для «идентификаторов», поэтому он не различает, скажем, имена классов, переменные-члены и локальные переменные. Поэтому я не мог найти способ применить разные соглашения об именах для разных типов идентификаторов.
Джон W
Вера не имеет полный набор правил - но они расширяемые (в TCL)
fmuecke
2
«Расширяемый» только для очень простых задач. Так как Вера понимает С ++ поверхностно, любая «глубокая проверка стиля» (рассмотрим возможное правило (я не предлагаю хорошего): для каждого выделения в соответствующей функции есть соответствующее освобождение) придется кодировать соответствующие знания С ++, и это действительно очень сложно, а это значит, что этого не произойдет.
Ира Бакстер
Исправлена ​​ссылка на Веру: bitbucket.org/verateam/vera
congusbongus
49

Google c ++ lint из руководства по стилю кода Google .

janesconference
источник
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.

tatsuhirosatou
источник
1
Cxxchecker сейчас кажется мне очень мертвым.
stefanct
cxx checker - неработающая ссылка.
Wolf
7

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

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

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

Джошуа
источник
2

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

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

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

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

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

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

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

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

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

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

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

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

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

Ура,

Thomi
источник
4
Последний коммит был в июне 2009 года. Кажется, он больше не разрабатывается.
одноименный