Обнаружение высокого предела цикломатической сложности перед регистрацией кода

Я хотел бы знать, какие инструменты доступны для обнаружения плохого кода (высокий предел циклической сложности) перед проверкой кода. Работаю над унаследованным проектом, а уже так много спагетти-кода. Sonar не обязательно полезен в этом случае, потому что его целью не является рефакторинг унаследованного кода. Только ожидается, что вновь добавленный код будет чистым (er).

Важно! Различие между чистым и плохим кодом в данном случае заключается просто в "цикломатической сложности".


person aug70co    schedule 24.09.2015    source источник


Ответы (2)


Есть три лучших игрока для статического анализа кода, а именно:

  1. Findbug: все нарушения стандартов и логические проблемы указываются здесь вместе с запрошенными проблемами CC.
  2. PMD: все проблемы с нарушением стандартов снова указаны здесь вместе с CC.
  3. Checkstyle: все нарушения стандартов, а также проблемы с форматированием кода.

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

Sonar — хороший инструмент, но он слишком зависим от управления, а его настройка не очень проста. Напротив, можно установить проверки Findbug, PMD и Checkstyle только для соответствующих POM проекта и даже настроить его для прекращения процесса сборки при любом обнаружении нарушения и обязать разработчика сначала соответствовать всем стандартам, прежде чем двигаться дальше. проверка кода или сборка для тестирования.

Ниже приведены сведения о соответствующих плагинах Maven:

<groupId>org.codehaus.mojo</groupId>
  <artifactId>findbugs-maven-plugin</artifactId>

<groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-pmd-plugin</artifactId>

<groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-checkstyle-plugin</artifactId>
person Avis    schedule 24.09.2015

Вы можете использовать инструмент JArchitect для таких нужд, его мощный язык запросов позволяет легко создавать правила и интегрировать их. в процесс сборки, например, вы можете выполнять такие запросы:

from m in Methods where m.CyclomaticComplexity>20
select m
person James from CppDepend Team    schedule 29.09.2015