Поиск по этому блогу
понедельник, 23 июля 2012 г.
Паттерны для SimpleDateFormat
Ссылка на все паттерны для SimpleDateFormat:
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
среда, 11 июля 2012 г.
Sonar + maven
Как подводные лодки исследуют морское дно и обнаруживают вражеские корабли с помощью такого прибора как сонар, так и opensource проект для анализа кода с идентичным названием Sonar позволяет, используя метрики, обнаружить недостатки в программе.
Установка Sonar
Отчеты будут доступны по url, что вы прописали в sonar.host.url.
Вот так выглядит общая страница отчета по проекту:
Каждый раздел можно посмотреть подробнее.
Например, покрытие тестами:
Или отчет complexity кода:
Установка Sonar
- Загрузить последнюю версию Sonar тут и распаковать.
- В settings.xml в maven (обычно лежат в $MAVEN_HOME/conf или ~/.m2) добавить новый профиль Sonar:
sonar true jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 com.mysql.jdbc.Driver sonar sonar http://localhost:9000
В любом случае необходимо прописать sonar.host.url. -
Запускаем Sonar:
$SONAR_PATH/bin/windows-x86-32/StartNTService.bat - А теперь можно проанализировать ваш проект, запустив
mvn sonar:sonar
Отчеты будут доступны по url, что вы прописали в sonar.host.url.
Вот так выглядит общая страница отчета по проекту:
- Показывает статистику по проекту, такую как количество строк, пакетов и тп.
- Количество комментариев и дубликатов.
- Соответветсвие стандартам по разным метрикам (в данном примере Rules compliance 81.8% ).
- Зависимости между пакетами.
- Уровень complexity (запутанности) кода.
- Результаты юнит-тестов и уровень покрытия кода
Каждый раздел можно посмотреть подробнее.
Например, покрытие тестами:
Или отчет complexity кода:
понедельник, 9 июля 2012 г.
Сheckstyle (java) + maven
Для оценки соответствия кода заданным в команде стандартам могут использоваться разные утилиты, но чаще в моей практике использовалась Checkstyle
Часто Checkstyle используется для повышения качества кода в тех командах, где присутствует негармоничное соотношение джуниоров, интермидов и синиоров. Когда кода много в таких проектах, рефакторить его просто некому и некогда. Был в моей практике проект, где самая основная операция осуществлялась в одном методе с длиной порядка 1500 строк. Использовав эту утилиту, рефакторинг кода осуществился бы в принудительном порядке (например, параметры длина метода и code complexity).
Подключается плагин при помощи maven так:
Основные элементы для настройки стиля:
Часто 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:
пятница, 6 июля 2012 г.
Coberture + maven
Пожалуй, уже некого убеждать о важности юнит-тестов в программировании, и многие используют каждый день такие инструменты как:
Данная статья является просто быстрым стартом использования cobertura под Maven. Во-первых, для создания отчета о покрытии кода юнит-тестами достаточно просто прописать в pom:, а в :
/site/coberture/):
Данная статья является просто быстрым стартом использования cobertura под Maven. Во-первых, для создания отчета о покрытии кода юнит-тестами достаточно просто прописать в pom:
А для того чтобы билд фейлился, если покрытие ниже заданного (ниже в примере задано покрытие не меньше 75%) прописываем уже не вorg.codehaus.mojo cobertura-maven-plugin 2.5.1
При этом можно некоторым важным пакетам повышать покрытие кода:org.codehaus.mojo cobertura-maven-plugin 2.5.1 75 75 true 75 75 75 75 clean check
а некоторые пакеты "убирать" из базы анализа:75 75 true 75 75 75 75 com.mobiletech.aker.parsers.* 75 100
А вот так выглядит сгенерированный отчет (по умолчанию генерируется вorg.codehaus.mojo cobertura-maven-plugin 2.5.1 com.example.boringcode.* com/example/dullcode/**/*.class
Подписаться на:
Сообщения (Atom)