Подтвердить что ты не робот

Код для проверки стиля c (имена переменных, а не отступы)

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

У этого есть несколько ответов уже в этом потоке Coding style checker для C

из которого Vera ++ может быть наиболее перспективным, так как большинство других предложений являются форматированными не валидаторами. Там есть веб-страница о работе vera ++ at 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
  • Требуется полное дерево src для повышения, например, из 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/, но не автозаписывает значение по умолчанию (его можно скопировать из него в дистрибутиве)

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

../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