Рубрики
Без рубрики

Обзор инструментов статического анализа Java

Если вы пишете код на Java и обзоры кода являются частью вашего рабочего процесса, мы рекомендуем вам просмотреть список… Помеченный качеством кода, производительностью, java, производительностью.

Если вы пишете код на Java и обзоры кода являются частью вашего рабочего процесса, мы рекомендуем вам ознакомиться со списком ниже. Вот некоторые из инструментов статического анализа Java, о которых вы должны знать:

1. PMD Ява

PMD сканирует исходный код Java и ищет потенциальные проблемы .

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

Проект PMD также поддерживает JavaScript, PL SQL, Apache Velocity, XML и XSL. Он также поставляется с CPD, инструментом для обнаружения дублированного кода на нескольких языках.

PMD интегрируется с несколькими инструментами и редакторами, включая Eclipse, NetBeans, IntelliJ IDEA, TextPad, Maven, Ant и Emacs.

Вот пример того, как выглядит запуск PMD через некоторый код:

$ pmd pmd -R java-basic,java-unusedcode -d Deck.java
/Users/pmd/my/project/Deck.java:35: Avoid unused private fields such as 'classVar2'.
/Users/pmd/my/project/Deck.java:47: Avoid unused private fields such as 'instanceVar3'.

Вы можете подавлять предупреждения (различными способами), а также писать свои собственные правила на Java или XPath..

2. Стиль проверки

Как следует из названия, Checkstyle проверяет, соответствует ли ваш код стандарту кодирования.

Инструмент настраивается, что позволяет ему поддерживать различные соглашения о стиле кода. Двумя примерами являются соглашения о коде Sun и Стиль Google Java (хотя один из Sun не поддерживался с 1999 года).

Вы можете найти файл конфигурации для стиля Java Google в репозитории checkstyle.

Говоря о конфигурации, это делается в XML-файле, где вы устанавливаете, какие модули должны использоваться. Вот (крошечный) пример файла конфигурации:

$ checkstyle -c checkstyle.xml Deck.java
Starting audit...
/Users/checkstyle/my/project/Blah.java:0: File does not end with a newline.
/Users/checkstyle/my/project/Deck.java:23: Line has trailing spaces.
/Users/checkstyle/my/project/Deck.java:70: Line has trailing spaces.
Audit done.
Checkstyle ends with 3 errors.

3. Найди жучков

FindBugs ищет ошибки в коде Java, а это означает более 400 различных ошибок .

Шаблоны разделены на несколько категорий: плохая практика, корректность, уязвимость вредоносного кода, многопоточная корректность, производительность, безопасность и сомнительный код (существуют две дополнительные категории, в каждой из которых всего по паре шаблонов: экспериментальный и интернационализация).

Существует несколько способов запуска FindBugs, но вот как может выглядеть интерфейс командной строки :

$ findbugs -textui .
M P UuF: Unused field: java.deck.Deck.classVar2  In Deck.java
M P UuF: Unused field: java.deck.Deck.instanceVar3  In Deck.java
M D UuF: Unused public or protected field: java.deck.Deck.instanceVar2  In Deck.java
M D UuF: Unused public or protected field: java.deck.Deck.classVar1  In Deck.java
M D UuF: Unused public or protected field: java.deck.Deck.instanceVar1  In Deck.java
Warnings generated: 5

Первая буква в выводе указывает на серьезность (потенциальной) ошибки (низкая, средняя, высокая), а вторая – на категорию (в данном случае P для производительности и D для сомнительного кода).

Он интегрируется с Eclipse, Maven, Netbeans, Дженкинсом, Хадсоном и IntelliJ.

FindBugs поддерживает архитектуру плагинов, которая позволяет любому пользователю добавлять новые детекторы ошибок; что приводит нас к…

4. Поиск Ошибок в Системе Безопасности

Найти ошибки безопасности – это плагин для FindBugs, который добавляет проверки на 80 дополнительных различных типов уязвимостей .

Вы найдете ряд шаблонов, связанных с уязвимостями OWASP 10 , от различных типов инъекций и защиты XSS до раскрытия конфиденциальных данных и непроверенных перенаправлений.

Существует также несколько шаблонов, специфичных для Android.

Существуют также другие распространенные вещи, такие как методы хеширования и уязвимости DOS, не забывая о более простых вещах, таких как жестко закодированные пароли.

Вывод

Как и в случае с аналогичными инструментами на разных языках, эти инструменты статического анализа Java дополняют друг друга, и мы рекомендуем вам ознакомиться с ними, если вы заботитесь о качестве кода и избегаете технических долгов.

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

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

Оригинал: “https://dev.to/codacy/review-of-java-static-analysis-tools-3jp7”