Я работаю в компании, у которой есть строгие рекомендации по стилю кодирования, но нет автоматического инструмента для их проверки. Я огляделся, и единственными инструментами, которые я смог найти, были инструменты типа lint, которые, похоже, нацелены на проверку того, что делает код, и предотвращение ошибок, а не на проверку правильности стиля кодирования.
Какой инструмент мы должны использовать, если вообще?
ПРИМЕЧАНИЕ. Я ищу что-нибудь для кода C, хотя было бы неплохо и то, что работает для C++.





Вы ищете "украшение кода". Uncrustify - бесплатный.
Вам нужно только иметь возможность описать свой стиль кодирования в файле конфигурации, и он будет следить за тем, чтобы каждый файл соответствовал описанному стилю.
Я бы возражал против использования здесь формального инструмента. Лучшее обеспечение соблюдения стандартов кодирования - это давление со стороны сверстников. Давление со стороны сверстников и взаимное уважение между членами команды являются ключевыми элементами этой атмосферы командообразования ... ничем не отличается от добродушного преследования, которое необходимо, когда кто-то непреднамеренно "ломает сборку" и т. д.
Обзор кода новых членов команды является ключевой частью процесса обучения и интеграции в команду, изучения стандартов кодирования и т. д. инструмент для проверки стандарта, вам следует искать новый стандарт кодирования.
@Vinko - вы могли бы это сделать, и это может быть полезно для участников, работающих неполный рабочий день, или для импорта внешнего кода, но для членов команды, работающих полный рабочий день, я действительно верю, что вы хотите, чтобы все они «думали в соответствии со стандартом кодирования», чтобы вы получили реальная выгода от наличия стандарта кодирования в первую очередь.
Не могу с этим согласиться. Проверка кода и четкое определение стандартов кодирования должны сделать свою работу.
Я считаю, что ни один стандарт кодирования не должен применяться каким-либо образом, если нет средства украшения, доступного для обеспечения соответствия. У меня есть свои собственные правила украшения, которые я использую для всех манипуляций с кодом, затем я обычно возвращаю код к тому стандарту, который мой клиент предпочитает, чтобы его код был представлен. К сожалению, побочным эффектом этого является то, что непечатаемые изменения часто появляются при проверке - когда предыдущие заявители не соблюдали стандарт, а рецензенты его пропустили.
@jwdonahue Спасибо за дополнительную точку зрения. Большинство моих мыслей относится к преданным членам команды в долгосрочной перспективе. Вы поднимаете хороший вопрос о поддержке множества стандартов, каждый из которых предназначен для конкретного клиента, и при этом можете поддерживать тот, который вам больше нравится. Я согласен, что здесь определенно будет полезна некоторая автоматизация.
Для этого существует (или было) множество инструментов. Одним из самых старых является cb (C Beautifier), который использовался в древних версиях Unix - в данном случае это версия 7 Unix:
CB ( 1 ) UNIX Programmer’s Manual CB ( 1 )
NAME
cb – C program beautifier
SYNOPSIS
cb
DESCRIPTION
Cb places a copy of the C program from the standard input on the standard
output with spacing and indentation that displays the structure of the
program.
BUGS
GNU indent - гораздо более сложный и настраиваемый зверь. Были и коммерческие инструменты. Например, Программное обеспечение Abraxas предоставляет инструмент CodeCheck, например; мы использовали его ненадолго в середине 90-х, но изменения, которые он хотел от нас внести, были (очень необходимы, но) слишком навязчивыми для руководства.
Стиль делает то, что вы хотите:
Artistic Style is a source code indenter, formatter, and beautifier for the C, C++, C# and Java programming languages.
Для Eclipse доступен Плагин AStyle.
Eclipse также имеет форматировщик кода, но я не уверен, работает ли он в CDT.
Традиционный beautifier отступ, доступный на каждой машине Unix. На некоторых есть версия Отступ GNU, которую можно скомпилировать и установить на любой машине. GNU indent может считывать набор правил из файла ~/.indent.pro, например:
--original --dont-format-first-column-comments --no-blank-lines-after-commas --parameter-indentation 8 --indent-level 8 --line-length 85 --no-space-after-parentheses --no-comment-delimiters-on-blank-lines
Таким образом, простое выполнение отступа перед фиксацией гарантирует единообразие представления. Если вы хотите использовать принуждать, определите ловушку перед фиксацией в системе управления версиями, которую вы используете, которая будет запускать отступ и отказываться от фиксации, если зафиксированная версия отличается от того, что создает отступ.
Из аналогичного вопроса: Вера ++:
Vera++ is a programmable tool for verification, analysis and transformation of C++ source code.
The main usage scenarios that are foreseen for Vera++ are:
Ensure that the source code complies with the given coding standards and conventions.
Provide source code metrics and statistics.
Perform automated transformations of the source code, which can range from pretty-printing to diagnostics to fault injection and advanced testing.
@Tino Tnx для заметки, обновлено (похоже, GitHub является зеркалом, в то время как основной сайт находится на BitBucket).
Пожалуйста, используйте VIM и наслаждайтесь легкостью. Вы можете делать все, что связано с программированием исходного кода, с помощью простых команд. Также вы можете сделать VIM более надежным и мощным, отредактировав файл .vimrc. Помощь в этом вам очень поможет.
/ Ренджит г
Вы получили отрицательное голосование, потому что исходный вопрос касался красивого принтера кода или средства проверки стиля. А вы отвечаете текстовым редактором. Разница в том, что текстовый редактор - это то место, где вы пишете код, а средство проверки стиля проверяет формат исходного кода независимо от текстового редактора, который использовался. например, это средство проверки стиля: en.wikipedia.org/wiki/Checkstyle
Попробуйте UniversalIndentGUI, который представляет собой оболочку графического интерфейса для популярных инденторов / украшений, таких как Uncrustify, Artistic Style и GNU Indent. Его графический интерфейс и функция предварительного просмотра в реальном времени позволяют очень легко попробовать разные инденторы, и как только вы найдете нужный индентор и конфигурацию, вы можете экспортировать конфигурацию или даже экспортировать сценарий оболочки. Отлично, если вы все еще пытаетесь.
Вы можете использовать clang-format. Более подробную информацию можно найти на официальном сайте:
http://clang.llvm.org/docs/ClangFormat.html
Вот почему я предлагаю вместо этого средство для украшения, которое будет получать файлы в требуемом стиле, а не валидатор, который не принесет никакой пользы. Вы можете кодировать в любом стиле, и перед регистрацией вы запускаете beautifier, который будет соответствовать требованиям.