Часто Checkstyle используется для повышения качества кода в тех командах, где присутствует негармоничное соотношение джуниоров, интермидов и синиоров. Когда кода много в таких проектах, рефакторить его просто некому и некогда. Был в моей практике проект, где самая основная операция осуществлялась в одном методе с длиной порядка 1500 строк. Использовав эту утилиту, рефакторинг кода осуществился бы в принудительном порядке (например, параметры длина метода и code complexity).
Подключается плагин при помощи maven так:
При этом обычно настраивают так, что при любом несоответствии стандартам билд ломается.org.apache.maven.plugins maven-checkstyle-plugin 2.6 src/config/checkstyle.xml true package check
Основные элементы для настройки стиля:
- Ограничения размеров
- FileLength - ограничение на количество строк в файле:
- LineLength - ограничение на длину строки для повышения читабельности кода:
- MethodLength - ограничение на длину метода (ограничение, о котором говорилось выше):
- ParameterNumber - ограничение на количество параметров в метода. Как известно, кода большое количество параметров у метода является "дурным запахом" и подлежит рефакторингу. В данном случае всего можно избежать заранее.
- FileLength - ограничение на количество строк в файле:
- Метрики
Также очень полезно использовать ограничения по основным метрикам кода- BooleanExpressionComplexity - ограничение на количество условий в boolean выражении:
- CyclomaticComplexity - ограничение вложенность for, if, switch и тп конструкций. Величина "запутанности" кода:
- BooleanExpressionComplexity - ограничение на количество условий в boolean выражении:
- Дубликаты.
Любителям copy+paste посвящается :)
- StrictDuplicateCode - длина кода, который при дублировании должен быть отрефакторен:
- StrictDuplicateCode - длина кода, который при дублировании должен быть отрефакторен:
- Стандарты именования
- В данном случае представлен пример именования методов, классов, переменных
- В данном случае представлен пример именования методов, классов, переменных
- И не забываем javadoc.
- JavadocType - наличие javadock у классов, интерфейсов, enum:
- JavadocMethod - наличие javadock у методов:
- JavadocType - наличие javadock у классов, интерфейсов, enum:
Комментариев нет:
Отправить комментарий