Инструменты, которые повышают качество кода Java
Источник:
Dev.to
Лучший способ защитить ваш код от ошибок, которых можно избежать, — использовать инструменты статического анализа кода. Они могут помочь вам найти и исправить проблемный код до того, как он выйдет в прод. Давайте посмотрим на некоторые популярные инструменты статического анализа, которые можно использовать для тестирования кода в различных ситуациях.
DeepSource
DeepSource — это, вероятно, лучший статический анализатор кода для Java, из всех. DeepSource
обнаруживает более 170 проблем, связанных с качеством кода Java, в том числе ошибки производительности, проблемы безопасности и антипаттернов. В настоящее время он поддерживает проекты Java на Gradle, в будущем DeepSource также добавит поддержку Maven и Android.
Кроме того, создатели DeepSource работают над добавлением поддержки Autofix: это позволит Java-разработчикам исправлять проблемы без написания кода.
Особенности:
- Обнаруживает более 170 проблем с качеством кода.
- Поддерживаются версии OpenJDK с 8 по 14.
- Интеграция: Gradle.
Лицензирование: бесплатное использование для проектов с открытым исходным кодом, студентов и некоммерческих организаций.
Платные тарифы начинаются от 12 долларов для одного пользователя в месяц.
SonarQube
SonarQube — это набор инструментов статического анализа кода Java с открытым исходным кодом, который объединяет функциональные возможности таких инструментов, как FindBugs и PMD.
Интуитивно понятные панели мониторинга SonarQube сохраняют историю, что улучшает отслеживание качества кода. SonarQube использует передовые методы анализа, такие как сопоставление с образцом. Также он проводит анализ потока данных, находит явные проблемы в структуре кода, ошибки и уязвимости безопасности.
Особенности:
- Содержит 597 правил для обнаружения различных проблем с качеством кода.
- Поддерживает все языковые версии до Java 14.
- Интеграция: Maven, Gradle, Ant.
Лицензирование: версия Community Edition бесплатная и имеет открытый исходный код.
Стоимость лицензии на коммерческие версии — от 120 евро.
SpotBugs
SpotBugs — это преемник FindBugs: инструмент статического анализа кода Java, который исследует байт-код JVM, находит признаки потенциальных ошибок и уязвимостей безопасности, выявляя дефекты кодинга.
Об этих дефектах сообщают в предупреждениях (warnings), но не все предупреждения обязательно являются дефектами: они могут оповещать о возможных проблемах с производительностью. В последней версии содержится более 400 предупреждений, разделенных на четыре категории: (1) наиболее опасные, (2) опасные, (3) серьезные, (4) требующие внимания.
Особенности:
- Обнаруживает в коде более 400 типов ошибок.
- Для работы SpotBugs требуется JRE (или JDK) 1.8.0 или новее. Однако он может анализировать программы, скомпилированные для любой версии Java, начиная с 1.0 и до 1.9.
- Интеграция: Ant, Maven, Gradle.
Лицензирование:
бесплатно и с открытым исходным кодом.
PMD
PMD анализирует исходный код Java, сверяет его со своим списком правил и сообщает пользователю о проблемных строках. PMD умеет определять общие проблемы, такие как хардкодинг паролей и IP-адресов, использование цикла forEach вместо традиционного for, а также код, который нарушает
закон Деметры или реализует антипаттерн God Class.
Особенности:
- Более 250 правил для обнаружения проблем в Java.
- Языковая поддержка до Java 13
- Интеграция: Maven, Gradle.
Лицензирование:
бесплатно и с открытым исходным кодом.
EclEmma
EclEmma (на основе библиотеки JaCoCo) — это бесплатный набор инструментов покрытия кода Java для Eclipse. Он измеряет покрытие кода и выдает данные о нем с помощью визуальных отчетов.
EclEmma выделяет строки кода и общий процент выполненного кода, а также отслеживает покрытие строк и ветвей. Инструмент помогает разработчикам оценивать код, который не протестировали как следует, и фокусируется на областях с низким охватом. Он поддерживает 3 типа форматов отчетов: HTML, XML и CSV.
Особенности:
- Поддерживает файлы классов Java от версии 1.0 до 14.
- Интеграция: Ant, Maven.
Лицензирование:
бесплатно и с открытым исходным кодом.
Checkstyle
Checkstyle — это инструмент статического анализа кода Java, который помогает разработчикам установить стандарты написания кода и поддерживать их соблюдение. Checkstyle выявляет нарушение правил, помогает их исправить и переформатировать код с помощью таких IDE, как Eclipse, IntelliJ IDEA или NetBeans.
Особенности:
- Более 180 проверок на соблюдение стиля Java-кода.
- Поддержка языков до Java 14.
- Интеграция: Ant, Maven.
Лицензирование:
бесплатно и с открытым исходным кодом.
JArchitect
JArchitect — это инструмент статического анализа Java, который оценивает такие метрики кода, как количество параметров метода, переменных и строк, сложность организации циклов в программе, афферентное и эфферентное связывание и т.д. Он измеряет, запрашивает и визуализирует ваш код, позволяет избежать непредвиденных проблем и накопление технического долга.
Особенности:
- Языковая поддержка от Java 8 до 13.
- Более 450 правил.
- Интеграция: Maven, Gradle, Ant.
Лицензирование: бесплатная пробная версия на 14 дней, бесплатная лицензия с открытым исходным кодом для некоммерческих проектов программного обеспечения с открытым исходным кодом, персональная лицензия — 149 долларов США, версия для разработчиков — 299 долларов США, Build Machine — 549 долларов США.
JUnit
JUnit — популярная среда модульного тестирования для проектов, разрабатываемых на Java, которая позволяет разработчикам писать и запускать модульные тесты для Java 8 и выше. JUnit проверяет состояние и поведение кода с помощью простых, но мощных операторов контроля. Начать работу с JUnit легко: в нем множество дополнительных возможностей использования аннотаций для более сложных сценариев.
Особенности:
- JUnit 5 (последний выпуск) требует Java 8 (или выше) во время выполнения.
- Интеграция: Maven, Gradle, Ant.
Лицензирование:
бесплатно и с открытым исходным кодом.
Язык Java и проекты с открытым исходным кодом
Источник:
Opensource
Если вы используете Java для написания бизнес-приложений, вы должны знать, что Java Standard Edition (SE) — это не ПО с открытым исходным кодом. Более того, в январе 2019 года корпорация Oracle изменила свою политику — теперь она требует коммерческую лицензию для любого использования SE, от локальной среды разработчика до производственной среды.
Это изменение вызвало множество вопросов среди разработчиков относительно соблюдения лицензионных требований при использовании Java. Если у вас еще есть сомнения по тому, как применять Java в проектах с открытым исходным кодом, в этой статье вы узнаете всю необходимую вам информацию.
Развивающиеся платформы в сообществе Java
OpenJDK (Open Java Development Kit) — это бесплатная реализация Java SE с открытым исходным кодом. Это альтернатива, которая позволяет более 70% Java-разработчиков продолжать использовать свои среды приложений Java, оставаясь при этом в экосистеме с открытым исходным кодом.
OpenJDK распространяется под
лицензией GNU GPLv2. Поскольку она гарантирует свободу распространения, это делает OpenJDK выбором по умолчанию для Java-разработчиков при создании настольных приложений, совместимых с Java SE.
Oracle продолжает разработку и поддержку Enterprise Java (Java EE), построенной на платформе Java SE. Java EE включает дополнительные функции, выходящие за рамки SE, для поддержки крупномасштабных, масштабируемых, многоуровневых и защищенных приложений для различных корпоративных сред.
В сентябре 2017 года платформу Java EE передали
Eclipse Foundation, что привело к внедрению более гибких процессов, изменению процесса управления и внедрению более гибкого лицензирования. Год спустя, в 2018 году, Eclipse Foundation объявил о выпуске нового бренда
Jakarta EE. Он призван поддержать разработчиков, переходящих с Java EE на новую платформу. Эволюция от Java EE к Jakarta EE также повлияла на многих корпоративных Java-разработчиков при реализации новой бизнес-логики.
Развитие фреймворков по мере развития Java
Тем временем новые технологии, такие как RESTful API (2000), HTTP 2 (2015) и JSON (2017), разрабатывались вместе с быстро меняющимися веб-архитектурами. Интерес к микросервисным архитектурам рос, но поскольку Java EE находилась в переходном периоде, она не уловила эти новые парадигмы.
В ответ на запросы сообщества Java, несколько компаний (IBM, Red Hat и Tomitribe) создали в 2016 году
MicroProfile — спецификацию, которая оптимизирует платформу Enterprise Java для микросервисных архитектур. Позднее MicroProfile присоединился к
Eclipse Foundation, предоставив корпоративным Java-разработчикам два варианта реализации микросервисных архитектур: SpringBoot или MicroProfile. MicroProfile позволяет разработчикам создавать переносимые микросервисы на основе Java для различных решений поставщиков, обеспечивая при этом совместимость между соответствующими API Java / Jakarta EE и MicroProfile в одном приложении.
Если вас интересует Enterprise-разработка на Java, то
MicroProfile Starter станет прекрасным выбором для изучения микросервисов на практике. Графический пользовательский интерфейс MicroProfile Starter заметно упрощает генерацию кода при создании монолитного сервера приложений Java.
Среда выполнения MicroProfile поддерживает развертывание артефакта приложения (например, файла JAR или WAR) и его выполнение в качестве сервера приложений Java со спецификацией MicroProfile. Вы можете выбрать нужную облачную среду выполнения (например,
Quarkus) из списка среды выполнения MicroProfle Starter, а затем выбрать спецификации для получения дополнительных корпоративных фич, таких как отказоустойчивость, OpenAPI, OpenTracing и другие. Выполнив эти шаги, нажмите «Загрузить», чтобы начать разработку приложения.
Заключение
Навигация по Java с точки зрения открытого исходного кода может быть немного запутанной, учитывая долгую историю языка и его изменения. Использование OpenJDK и Jakarta EE позволяет разработчикам Java поддерживать стандартные корпоративные приложения без ущерба для свободы открытого исходного кода. Если вы хотите более подробно узнать об этом, советуем ознакомиться с MicroProfile или Quarkus.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ