Показатели кода и предупреждения для C ++

У меня есть довольно новая кодовая база, написанная на C ++. Я уже начинаю видеть, как в проект проникают некоторые плохие практики (файл класса с более чем 1000 строками кода, функции с большим количеством параметров, ...).

Я хотел бы сразу остановиться на этом и остановиться на некоторых автоматизированных инструментах, которые могут подключаться к сборке и проверять плохие методы кодирования. Какие у вас есть предложения по таким инструментам? Меня интересуют метрики, но больше интересует стилистический вид линта, который выделяет функции с 37 параметрами.


person stimms    schedule 09.06.2009    source источник
comment
Дубликат: stackoverflow.com/questions/93260/   -  person Bastien Léonard    schedule 10.06.2009


Ответы (4)


Как и в случае с другими, я не уверен в инструменте, который поможет судить о стиле. Но CCCC выдает множество показателей, которые могут помочь вам найти проблемные места. Такие показатели, как цикломатическая сложность, дадут вам количественные доказательства того, где находятся проблемные места. Обратной стороной является то, что вам придется включить эти показатели в руководство по стилю, которое вы принимаете или создаете самостоятельно.

person nathan    schedule 13.11.2010
comment
Обратите внимание, что к настоящему времениCCС устарел. Последние действия на их веб-сайте относятся к 2002 году и поддерживают только платформу Microsoft Visual Studio 2003. У меня также были проблемы с его запуском, так как он был не очень удобен для пользователя. Я настоятельно рекомендую SourceMonitor: вместо этого campwoodsw.com/sourcemonitor.html, как предлагает Torial. - person ForceMagic; 15.10.2012
comment
@ForceMagic: Я считаю, чтоCCC по-прежнему является жизнеспособным выбором, если не работает под Windows, поскольку SourceMonitor, похоже, требует Windows. Также есть плагин Jenkins, чтобы подключить его к сборке и визуализировать регрессии. - person Benjamin Bannier; 12.08.2013

Извините, я не могу вам помочь в отношении стиля, но отличный инструмент для измерения показателей, который поддерживает C ++ и является бесплатно: SourceMonitor.

В частности, вы получите полезную информацию, такую ​​как Cyclomatic Complexity (которую я считаю более ценной для плохой практики программирования, чем количество параметров), а также строки кода, процент комментариев, самую длинную функцию и т. Д.

Попробуйте - и это тоже очень быстро.

person torial    schedule 09.06.2009
comment
При использовании этого инструмента попробуйте модифицированную сложность. Я цитирую справку SourceMonitor: Параметр метрики измененной сложности изменяет способ определения метрики сложности для новых контрольных точек, добавленных в проект. Когда этот параметр включен, SourceMonitor вычисляет метрику сложности, добавляя единицу к сложности для каждого оператора switch. Операторы case в операторе switch анализируются на предмет других показателей, но сами операторы case не вносят вклад в сложность (как они это делают, когда этот параметр не включен). - person Wolf; 27.11.2017

Metrix ++ соответствует этому варианту использования и имеет несколько показателей, которые могут вас заинтересовать. Проверьте это здесь: http://metrixplusplus.sourceforge.net/

person Andrew    schedule 12.08.2013
comment
Обычно считается хорошим тоном четко разъяснять, когда вы рекомендуете свой собственный продукт. - person Crowman; 12.08.2013
comment
Спасибо. Узнаем об этом и сделаем в следующий раз. Ответ по-прежнему совпадает с вопросом. - person Andrew; 13.08.2013

Убедитесь, что вы всегда компилируете с параметром компилятора -Wall и старайтесь не проверять код, если предупреждения не исчезнут.

Найдите стандартный стиль, например этот.

person ddcruver    schedule 09.06.2009
comment
-Wall не предупреждает автоматически об упомянутых проблемах OP (длинные функции, высокая цикломатическая сложность). - person Benjamin Bannier; 12.08.2013
comment
Ваша ссылка this one не работает, что делает все предложение бесполезным. Может быть, вы ссылаетесь на Руководство по стилю Google C ++? - person Wolf; 27.11.2017