Поиск по этому блогу

понедельник, 9 июля 2012 г.

Сheckstyle (java) + maven

Для оценки соответствия кода заданным в команде стандартам могут использоваться разные утилиты, но чаще в моей практике использовалась Checkstyle
Часто Checkstyle используется для повышения качества кода в тех командах, где присутствует негармоничное соотношение джуниоров, интермидов и синиоров. Когда кода много в таких проектах, рефакторить его просто некому и некогда. Был в моей практике проект, где самая основная операция осуществлялась в одном методе с длиной порядка 1500 строк. Использовав эту утилиту, рефакторинг кода осуществился бы в принудительном порядке (например, параметры длина метода и code complexity).

Подключается плагин при помощи maven так:

 org.apache.maven.plugins
 maven-checkstyle-plugin
 2.6
 
  src/config/checkstyle.xml
  true
 
 
  
   package
   
    check
   
  
 

При этом обычно настраивают так, что при любом несоответствии стандартам билд ломается.

Основные элементы для настройки стиля:
  1. Ограничения размеров
    • FileLength - ограничение на количество строк в файле:
      
            
      
      
    • LineLength - ограничение на длину строки для повышения читабельности кода:
      
          
      
      
    • MethodLength - ограничение на длину метода (ограничение, о котором говорилось выше):
      
         
         
      
      
    • ParameterNumber - ограничение на количество параметров в метода. Как известно, кода большое количество параметров у метода является "дурным запахом" и подлежит рефакторингу. В данном случае всего можно избежать заранее.
      
         
         
      
      
  2. Метрики
    Также очень полезно использовать ограничения по основным метрикам кода
    • BooleanExpressionComplexity - ограничение на количество условий в boolean выражении:
      
          
      
      
    • CyclomaticComplexity - ограничение вложенность for, if, switch и тп конструкций. Величина "запутанности" кода:
      
          
      
      
  3. Дубликаты. Любителям copy+paste посвящается :)
    • StrictDuplicateCode - длина кода, который при дублировании должен быть отрефакторен:
      
         
       
      
  4. Стандарты именования
    • В данном случае представлен пример именования методов, классов, переменных
        
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
  5. И не забываем javadoc.
    • JavadocType - наличие javadock у классов, интерфейсов, enum:
          
      
    • JavadocMethod - наличие javadock у методов:
      
         
         
           
      

Комментариев нет:

Отправить комментарий