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

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

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

Ira Baxter 30.05.2012 23:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
152
1
120 838
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Ответ принят как подходящий

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

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

Jader Dias 31.05.2011 22:47

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

John W 31.08.2011 10:56

У Vera нет исчерпывающего набора правил, но они расширяемы (в TCL).

fmuecke 08.10.2011 11:00

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

Ira Baxter 30.05.2012 23:38

Фиксированная ссылка на Веру: bitbucket.org/verateam/vera

congusbongus 20.05.2013 04:56

Я просто быстро попробовал: он полностью отказался от синтаксического анализа, обнаружив что-то, казалось бы, тривиальное, как однострочный комментарий, следующий за закрывающей скобкой объявления пространства имен. Он сказал, что я должен "исправить" или исключить файл ...

foraidt 10.07.2014 10:12

Vera невероятно невозможно построить с нуля, что вам нужно сделать, если вы используете систему CI и не хотите использовать TCL. Я передам.

Qix - MONICA WAS MISTREATED 23.10.2016 03:08

Я использовал в своей работе инструмент Набор инструментов LDRA

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

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

Vitor Py 16.07.2010 01:58

LDRA стоит примерно столько же, сколько ваша обычная машина ... я не думаю, что это бесплатно.

Lundin 02.07.2015 17:27

Есть список. Также есть предполагаемый Интерфейс C++ на шине.

-1 потому что в вопросе прямо сказано «не ищу статический анализатор кода».

squelart 12.04.2010 12:27

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

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

Wolf 27.11.2017 19:04

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

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

UniversalIndentGUI It has a live preview function, can export config and export script. It's great for trying out different "indenters", such as GNU Indent, Artistic Style and Uncrustify.
congusbongus 20.05.2013 08:21

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

cxxchecker мне сейчас кажется мертвым.

stefanct 17.02.2017 15:32
cxx чекер is a dead link.
Wolf 27.11.2017 18:56

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

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

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

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

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

Ваше здоровье,

Последний коммит был в июне 2009 года. Вроде больше не разрабатывается.

Eponymous 06.05.2011 18:34

Google C++ lint от Руководство по стилю кода Google.

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

fmuecke 08.10.2011 11:04

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

jkp 04.01.2012 15:49

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

Zitrax 09.12.2015 18:30

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

Colin D 22.09.2016 05:37

Я бы действительно добавил пару слов о недостатках руководства по стилю Googles для C++, возможно, ссылку на интересную статью, упомянутую в @ LưuVĩnhPhúc. Для меня самый важный вопрос - можно ли легко изменить инструмент, чтобы он соответствовал различным устаревшим руководствам?

Wolf 27.11.2017 18:55

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

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

Vitor Py 16.07.2010 01:59

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

Wolf 27.11.2017 19:11

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

Ознакомьтесь с проверкой кода Abraxas http://www.abxsoft.com/codchk_user.html

кроме документации это не бесплатно: abxsoft.com/codchk.htm Plus, вроде уже устаревший abxsoft.com/pricing.htm

Wolf 27.11.2017 19:15

Проверьте Metrix ++ http://metrixplusplus.sourceforge.net/. Может потребоваться несколько расширений, которые подходят именно вам.

Другие вопросы по теме