Тестирование кодирования и соглашения о присвоении имен кода C/C++

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

Это должно проверить, например:

  • Строки кода перенесены довольно долго.
  • Частные переменные имеют префикс _
  • Код форматируется правильно.
  • Все функции документируются.

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

8
задан zoli2k 4 April 2010 в 13:15
поделиться

6 ответов

Инструмент GNU indent может делать то, о чем вы просите. Не уверен, что можно проверить документацию, но остальное кажется выполнимым

2
ответ дан 5 December 2019 в 18:58
поделиться

Не знаю, действительно ли это стоит потраченного времени, но если вы действительно хотите, вы могли бы попробовать создать что-то похожее на cpplint google , которое проверяет их руководство по стилю .

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

Почему люди лучше сценария? Ответ довольно прост: людям придется иметь дело с кодом позже, они должны заботиться о том, что они пишут. Имя переменной вроде i подойдет для сценария, но не ускользнет от моих глаз, если это clientCount , его следует просто назвать соответствующим образом, сценарий, который будет способный сделать это может довольно скоро захватить мир. :)

3
ответ дан 5 December 2019 в 18:58
поделиться

Если у вас много денег, попробуйте Klocwork . Он имеет возможность проверять исходный код на соответствие рекомендациям по стилю. Я использовал его в разных магазинах. Много работы по настройке и поддержке, но очень мощная.

0
ответ дан 5 December 2019 в 18:58
поделиться

В основном то, что сказали другие люди. Но могу ли я просто указать, что:

  • Все функции задокументированы.

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

//-------------------------------------------------------------
// Name: foo
// Purpose: 
// Returns: integer
//-------------------------------------------------------------

Другими словами, шаблонная «документация», которая говорит вам меньше, чем ничего. Такого рода вещи могут быть устранены только проверкой кода.

1
ответ дан 5 December 2019 в 18:58
поделиться

Универсальный отступ включает в себя множество инструментов для отступов в красивом графическом интерфейсе. Если что-то вам подходит, оно, вероятно, включено. ( Здесь - список функций) Поддерживаются все основные операционные системы.

Есть также другие инструменты, проверяющие другие вещи:

lint для безопасности и прочее прочее.

Для программ Qt вы можете использовать Крейзи . Это немного хлопотно, чтобы найти, загрузить и запустить его, поскольку он спрятан в глубине дерева исходных текстов KDE (подкаталоги обеспечения качества ... где-то). Но однажды работает, это действительно круто. Он проверяет всевозможные милые штуки. Как неиспользуемые заголовки Qt. Плохое использование строки. Отсутствуют инструкции tr () для видимых пользователем строк, странные конструкции итераций, точка точка точка.

Само собой разумеется, что все упомянутые инструменты можно настраивать.

3
ответ дан 5 December 2019 в 18:58
поделиться

Я использую Understand 4 c ++, созданный scitools. Он поставляется с Perl и C api. Однако я написал для него управляемый API. Этот инструмент позволяет сканировать исходный код и анализировать его, как это делает отражение для нативного кода. Он действительно отлично работает, позволяя вам получать имена ваших переменных, классов и т. Д. Я лично написал десятки инструментов статического анализа, использующих этот API. С помощью этого инструмента было бы легко обеспечить соблюдение всех видов стандартов кодирования. Особенно стандартное имя переменной.

Ссылка на товар: http://www.scitools.com/ и моя управляемая оболочка: http://understandapi.codeplex.com/

0
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: