Инструменти за статичен анализ на Java в Eclipse и IntelliJ IDEA

1. Общ преглед

В нашето въведение към FindBugs разгледахме функционалността на FindBugs като инструмент за статичен анализ и как тя може да бъде директно интегрирана в IDE като Eclipse и IntelliJ Idea.

В тази статия ще разгледаме някои от алтернативните инструменти за статичен анализ за Java - и как те се интегрират с Eclipse и IntelliJ IDEA.

2. ПМД

Нека започнем с PMD.

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

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

Плъгинът PMD може да бъде инсталиран директно от Eclipse Marketplace. Приставката също може да бъде изтеглена ръчно и тук. Веднъж инсталирани, можем да стартираме проверката на PMD директно от самата IDE:

Заслужава да се отбележи, че можем да стартираме PMD на ниво проект или на ниво индивидуален клас.

Резултатите са показани по-долу - с различни цветове за различни нива на находката, която варира от „предупреждение“ до „блокиране“ в нарастващия ред на тежестта:

Можем да разгледаме подробностите за всеки запис, като щракнете с десния бутон върху него и изберете „показване на подробности“ от контекстното меню. Eclipse ще покаже кратко описание на проблема и възможни мерки за отстраняване на проблема:

Също така е възможно да промените конфигурацията на сканирането на PMD - можем да го направим в менюто, под Прозорец -> Предпочитания -> PMD, за да стартираме страницата за конфигурация. Тук можем да конфигурираме параметри за сканиране, набор от правила, настройки за показване на резултатите и т.н.

Ако трябва да деактивираме някои специфични правила за проекта - можем просто да ги премахнем от сканирането:

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

Разбира се, IntelliJ има подобен плъгин PMD - който може да бъде изтеглен и инсталиран от магазина за приставки JetBrains.

По подобен начин можем да стартираме приставката точно в IDE - като щракнем с десния бутон на мишката върху източника, който трябва да сканираме, и изберете PMD сканиране от контекстното меню:

Резултатите се показват веднага, но за разлика от Eclipse, ако се опитаме да отворим описанието, ще се отвори браузър с публична уеб страница за намиране на информация:

Можем да зададем поведението на приставката PMD от страницата с настройки, като отидем на Файл -> Настройки -> други настройки -> PMD, за да видим страницата за конфигурация. От страницата с настройки можем да конфигурираме набора от правила, като заредим персонализиран набор от правила със собствени правила за тестване.

3. JaCoCo

Продължавайки - JaCoCo е инструмент за тестово покритие - използва се за проследяване на тестовото покритие в кодовата база. Най-просто казано, инструментът изчислява покритието, като използва редица стратегии, например: линии, клас, методи и т.н.

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

JaCoCo може да бъде инсталиран директно от пазара. Връзка за инсталиране също се хоства на официалния сайт, достъпен тук.

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

Нашият метод е разделяне на два предвидени цели числа и връщане на резултата. Ако вторият параметър е нула, той ще върне максимална стойност за целочисления тип данни.

В нашия тестов случай тестваме само сценария, при който вторият параметър е нула:

В този случай можем да видим, че ред 6 е оцветен в жълто. Само един клон на условието „ако“ е тестван и работи в нашия прост тест. Следователно не е напълно тестван и маркиран в жълто.

Освен това линия 7 има зелен цвят - това означава, че е напълно тествана. И накрая, ред 9 е подчертан с червен цвят, което означава, че този ред изобщо не е тестван от нашите модулни тестове.

Можем да видим обобщение на покритието на теста, където се показва колко код е обхванат от модулни тестове на ниво клас и пакети:

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

JaCoCo е включен по подразбиране с най-новата дистрибуция на IntelliJ IDEA, така че няма изискване да инсталирате приставката отделно.

Когато изпълняваме модулни тестове, можем да изберем какъв бегач на покритие трябва да използваме. Можем да стартираме тестовите случаи на ниво проект или на ниво клас:

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

Можем да видим резюмето на покритието на теста, където той показва каква част от кода е обхванат от модулни тестове на ниво клас и пакети.

4. Кобертура

И накрая, заслужава да се спомене Cobertura - това се използва по подобен начин за проследяване на покритието на единични тестове в кодовата база.

Най-новата версия на Eclipse не поддържа приставката Cobertura по време на писането; приставката работи с по-ранни версии на Eclipse.

По същия начин IntelliJ IDEA няма официален плъгин, който да изпълнява Cobertura покритието.

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

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

Изходният код на този урок може да бъде намерен в проекта GitHub - това е проект, базиран на Maven, така че трябва да е лесно да се импортира и стартира както е.