Автоматический тест стиля кода для С++

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

Я начинаю проект С++ с участием нескольких людей, к которым у меня нет прямого доступа. Мы договорились о руководстве по стилю кодирования, которое, например, определяет оболочку для членов класса в зависимости от доступности (т.е. частное лицо в случае с паскалем, общественность и защищенные в верблюжьем корпусе.Пожалуйста, не начинайте обсуждение руководства по стилю. У меня было достаточно. Спасибо.).

Теперь я хочу создать отчет о нарушениях стиля. Я не хочу применять руководство по стилю, например. при фиксации, но я хочу предоставить инструмент, который каждый разработчик может использовать, чтобы увидеть, где его/ее код нарушает руководство по стилю (если он/она хочет его проверить).

Знаете ли вы инструмент, который может выполнять Job?

(Он должен уметь понимать некоторые С++, например, чтобы обнаружить доступность членов класса.)

Ответ 1

ну, вы можете запустить свой код через AStyle или Uncrustify на коммит, который, по крайней мере, переформатировал бы плохой код на какой-то стандарт. Я нахожу, что проблема большинства с кодовыми коммитами и стандартами - если вы переформатируете после того, как объявили, это проявляется как множество изменений дельты, которые являются тривиальными.

В противном случае проверьте другой SO ответ.

Ответ 2

Я успешно использовал инструмент vera ++, чтобы сделать это для наших проектов. Я написал ряд правил (в TCL), чтобы принять наши руководящие принципы в стиле компании. Это было немного больно, пока я не обошел все ложные срабатывания, о которых сообщалось из моих чеков. По крайней мере, он хорошо работает сейчас, и я включил отчеты в анализ сборки Jenkins.

Отчеты также могут быть легко адаптированы к пользовательскому анализу ошибок в Eclipse IDE.

Ответ 3

Руководства по стилям имеют тенденцию быть специфичными для конкретной компании, и для их достижения необходимо написать проверки для конкретной компании.

Моя компания предлагает настраиваемые проверки стиля С++, в которых можно проверить устаревшие идиомы по синтаксису, проверить, что переменные и типы имеют определенные свойства, или убедитесь, что определенные команды выполняются в определенных заказах локально. Эти шашки используют точные парсеры диалектов С++ в исходном коде. Настройка не простая; вам нужен базовый движок и некоторые знания синтаксического анализа программ на С++.

Можно писать правила, которые проверяют макет, но это много неудачной работы, и решение таких жалоб не является продуктивным использованием ресурса программиста ИМХО. И если вы не собираетесь применять свой стиль, почему вы раздражаете программиста жалобами? Кажется, что проще (как заметил еще один плакат) просто запустить макет-форматирование, которое дает правильный результат бесплатно для программиста.

Одна из проблем с родовыми форматировщиками заключается в том, что, будучи неточным языком, они могут неправильно интерпретировать исходный код и иногда прерывать его по мере их форматирования, что приводит к ошибкам компиляции, отладке и времени впустую. Мы также предлагаем С++ Formatters для выполнения форматирования с использованием точных парсеров того же языка, что и проверка стиля; они не могут сломать ваш код во время переформатирования.