Ответ 1
Похоже, что Google cpplint (проверка стиля на С++) может быть взломана в представлении для проверки C, как я хочу.
(Мне все еще интересно узнать, есть ли там лучшие шашки.)
Этот вопрос задает вопрос о проверке стиля кодирования, но основное внимание, похоже, уделяется отступу и размещению фигур. Отступ GNU имеет дело с отступом (что не является проблемой в этой базе кода, что удивительно).
Я работаю с кучей кода, который полон различных схем именования: camelCase, allruntogetherinlowercase, underscores_as_separators, SomeStructsEndWithT и т.д.
Я хотел бы иметь возможность выбрать соглашение и, по крайней мере, иметь автоматическую проверку того, что новые изменения согласуются с соглашением.
Есть ли хороший инструмент для проверки именования в C? Что-то вроде Python pep8 checker tool, я не хочу, чтобы украшатель.
Спасибо.
Похоже, что Google cpplint (проверка стиля на С++) может быть взломана в представлении для проверки C, как я хочу.
(Мне все еще интересно узнать, есть ли там лучшие шашки.)
Это неортодоксальный выбор, но я бы пошел с cxref
, если вы готовы вложить полдня работы. Это перекрестный референс, поставляется с исходным кодом, он имеет чистый парсер и не создает дерево синтаксического анализа. Тем не менее, с несколькими строками кода вы можете сбросить все переменные, чтобы изучить их, или переписать их в свой предпочтительный стиль (или если вы ленивы, как я, а не переписывать, вы можете генерировать команды замены для emacs/sed). Мне удалось создать его только для Mac.
У этого есть несколько ответов уже в этом потоке 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
make BOOST_DIR=/home/fluffy/tmp/boost_1_53_0
~/.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