«1. Обзор

В нашем введении в FindBugs мы рассмотрели функциональность FindBugs как инструмента статического анализа и то, как его можно напрямую интегрировать в IDE, такие как Eclipse и IntelliJ Idea.

В этой статье мы рассмотрим несколько альтернативных инструментов статического анализа для Java и то, как они интегрируются с Eclipse и IntelliJ IDEA.

2. PMD

Начнем с PMD.

Этот зрелый и хорошо зарекомендовавший себя инструмент анализирует исходный код на наличие возможных ошибок, неоптимальных кодов и других неправильных практик; он также рассматривает более продвинутые показатели, такие как цикломатическая сложность для анализируемой кодовой базы.

2.1. Интеграция с Eclipse

Плагин PMD можно установить напрямую из Eclipse Marketplace. Плагин также можно загрузить вручную здесь. После установки мы можем запустить проверку PMD непосредственно из самой IDE:

Стоит отметить, что мы можем запускать PMD на уровне проекта или на уровне отдельного класса.

Результаты показаны ниже — с разными цветами для разных уровней обнаружения, которые варьируются от «предупреждение» до «блокирует» в порядке возрастания серьезности:

Мы можем углубиться в детали каждого запись, щелкнув ее правой кнопкой мыши и выбрав «показать подробности» в контекстном меню. Eclipse отобразит краткое описание проблемы и возможных способов ее устранения:

Также можно изменить конфигурацию сканирования PMD — мы можем сделать это в меню, в разделе «Окно» -\u003e «Настройки» -\u003e «PMD». для запуска страницы конфигурации. Здесь мы можем настроить параметры сканирования, набор правил, настройки отображения результатов и т.д.

Если нам нужно деактивировать какие-то конкретные правила для проекта — мы можем просто удалить их из сканирования:

2.2. Интеграция с IntelliJ

Конечно, у IntelliJ есть аналогичный подключаемый модуль PMD, который можно загрузить и установить из магазина подключаемых модулей JetBrains.

Мы можем аналогичным образом запустить плагин прямо в IDE — щелкнув правой кнопкой мыши источник, который нам нужно просканировать, и выбрав сканирование PMD в контекстном меню:

Результаты отображаются немедленно, но, в отличие от Eclipse, если мы попробуйте открыть описание, он откроет браузер с общедоступной веб-страницей для поиска информации:

Мы можем установить поведение плагина PMD со страницы настроек, перейдя в Файл -\u003e Настройки -\u003e другие настройки -\u003e PMD для просмотра страницы конфигурации. На странице настроек мы можем настроить набор правил, загрузив собственный набор правил с нашими собственными правилами тестирования.

3. JaCoCo

Продолжаем: JaCoCo — это инструмент покрытия тестами, используемый для отслеживания покрытия модульными тестами в кодовой базе. Проще говоря, инструмент вычисляет покрытие, используя ряд стратегий, например: линии, класс, методы и т. д.

3.1. Интеграция с Eclipse

JaCoCo можно установить напрямую из магазина. Ссылка для установки также размещена на официальном сайте, доступном здесь.

Инструмент может выполняться от уровня проекта до уровня отдельного метода. Плагин Eclipse использует разные цветовые схемы, чтобы точно определить, какая часть кода покрыта тестовыми примерами, а какая нет:

Наш метод разделяет два заданных целочисленных параметра и возвращает результат. Если второй параметр равен нулю, он вернет максимальное значение для целочисленного типа данных.

В нашем тестовом примере мы тестируем только сценарий, в котором второй параметр равен нулю:

В этом случае мы видим, что строка 6 окрашена в желтый цвет. В нашем простом тесте проверяется и выполняется только одна ветвь условия «если». Поэтому он не полностью протестирован и отмечен желтым цветом.

Кроме того, строка 7 имеет зеленый цвет — это означает, что она полностью протестирована. Наконец, строка 9 выделена красным цветом, что означает, что эта строка вообще не тестируется нашими модульными тестами.

Мы можем увидеть сводку покрытия тестами, где показано, сколько кода покрыто модульными тестами на уровне классов и уровнях пакетов:

3.2. Интеграция с IntelliJ IDEA

JaCoCo по умолчанию поставляется в комплекте с последним дистрибутивом IntelliJ IDEA, поэтому нет необходимости устанавливать подключаемый модуль отдельно.

«При выполнении модульных тестов мы можем выбрать, какой бегун покрытия нам нужно использовать. Мы можем запускать тестовые примеры либо на уровне проекта, либо на уровне класса:

Подобно Eclipse, JaCoCo отображает результаты, используя разные цветовые схемы для покрытия.

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

4. Cobertura

Наконец, стоит упомянуть Cobertura — он также используется для отслеживания покрытия модульными тестами в кодовой базе.

Последняя версия Eclipse на момент написания статьи не поддерживает подключаемый модуль Cobertura; плагин работает с более ранними версиями Eclipse.

Точно так же IntelliJ IDEA не имеет официального плагина, который может выполнять покрытие Cobertura.

5. Заключение

Мы рассмотрели интеграцию с Eclipse и IntelliJ IDEA для трех широко используемых инструментов статического анализа. FindBug был рассмотрен в предыдущем введении в FindBugs.

Исходный код этого руководства можно найти в проекте GitHub — это проект на основе Maven, поэтому его легко импортировать и запускать как есть.