средство проверки стиля кодирования для c (имена переменных, не отступы) - PullRequest
17 голосов
/ 29 марта 2011

Этот вопрос задает вопрос о проверке стиля кодирования, но, похоже, основное внимание уделяется отступам и расстановке фигурных скобок. Отступ GNU имеет дело с отступом (что, на удивление, не является проблемой в этой кодовой базе).

Я работаю с кучей кода, который полон различных схем именования: camelCase, everythingruntogetherinlowercase, underscores_as_separators, SomeStructsEndWithT и т. Д.

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

Есть ли хороший инструмент для проверки имен в C? Что-то вроде инструмента проверки pep8 в Python, я не хочу украшать.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 29 марта 2011

Похоже, что Google cpplint (средство проверки стиля C ++) может быть взломан для отправки на проверку C, как я хочу.

(мне все еще интересно знать, есть ли что-нибудь лучшешашки там.)

2 голосов
/ 20 мая 2013

Это неортодоксальный выбор, но я бы выбрал cxref, если вы готовы потратить полдня на работу. Это перекрестная ссылка, поставляется с исходным кодом, имеет чистый синтаксический анализатор и не создает дерево разбора. Тем не менее, с помощью нескольких строк кода вы можете сбросить все переменные, чтобы изучить их, или переписать их в соответствии со своим предпочтительным стилем (или, если вы так же ленивы, как и я, вместо перезаписи вы можете сгенерировать команды замены для emacs / sed). Мне удалось построить его только для Mac.

1 голос
/ 20 мая 2013

На этот вопрос уже есть несколько ответов в этой теме Средство проверки стиля кодирования для C

, из которого Vera ++ может быть наиболее перспективным, поскольку большинство других предложений форматеры не валидаторы .Есть веб-страница о запуске vera ++ на https://bitbucket.org/verateam/vera/wiki/Running.

Есть загрузка с https://bitbucket.org/verateam/vera/downloads/vera++-1.1.1.tar.gz Компиляция представляет несколько проблем:

  • sudo apt-get install libboost-dev tcl-dev
  • Включение tcl.h, которое должно было быть tcl/tcl.h
  • Требуется дерево полного усиления, например, из http://sourceforge.net/projects/boost/files/boost/1.53.0/boost_1_53_0.tar.gz/download
  • Команда сборки становится примерно такой: make BOOST_DIR=/home/fluffy/tmp/boost_1_53_0
  • vera ++ требуется ~/.vera++/profiles/, но по умолчанию он не создается автоматически (однако его можно скопировать из каталога в дистрибутиве)

Наконец, запуск его на выходе из файла C ++ приводит к выводукак (с дубликатами ошибок для краткости опущено):

../dllist.c:1: no copyright notice found
../dllist.c:4: horizontal tab used
../dllist.c:10: horizontal tab used
../dllist.c:10: closing curly bracket not in the same line or column
../dllist.c:29: horizontal tab used
../dllist.c:38: keyword 'if' not followed by a single space
../dllist.c:38: negation operator used in its short form
../dllist.c:40: horizontal tab used
../dllist.c:40: full block {} expected in the control structure
../dllist.c:42: horizontal tab used
../dllist.c:71: keyword 'if' not followed by a single space
../dllist.c:71: negation operator used in its short form
../dllist.c:72: horizontal tab used
../dllist.c:72: full block {} expected in the control structure
../dllist.c:73: horizontal tab used
...