- 코드를 테스트하는 데 사용할 수있는 정적 코드 분석 도구를 살펴 보겠습니다.
##DeepSource
- DeepSource 자바 분석기는 성능 버그, 보안 위험, 버그 위험 및 안티 패턴을 포함하여 190여 코드 품질 문제를 감지
- 현재 Gradle Java 프로젝트를 지원하며 향후 DeepSource는 Maven 및 Android도 지원할 예정
- DeepSource는 또한 개발자가 단일 코드 라인을 작성하지 않고도 문제를 해결할 수 있도록 Java 분석기에 Autofix 지원을 제공하기 위해 노력하고 있습니다.
특징
- 170 개 이상의 코드 품질 문제를 감지합니다.
- 현재 OpenJDK 버전 8 ~ 14가 지원됩니다.
통합
사용법 :
https://deepsource.io/docs/quickstart/configure-analysis.html
##SonarQube
-
FindBugs 및 PMD와 같은 도구의 기능을 결합한 Java 정적 코드 분석 도구의 오픈 소스 제품군입니다.
-
SonarQube에는 개발자가 시간이 지남에 따라 Java 코드 품질을 추적 할 수 있도록 기록을 유지하는 매우 직관적 인 대시 보드가 있습니다.
-
SonarQube는 패턴 일치 및 데이터 흐름 분석과 같은 고급 기술을 사용하여 코드를 분석하고 코드 냄새, 버그 및 보안 취약성을 식별합니다.
특징
- 다양한 코드 품질 문제를 감지하는 597 개의 규칙이 있습니다.
- Java 언어 버전은 최대 14 개까지 지원됩니다.
통합
##SpotBugs
- FindBugs의 후속 제품
- JVM 바이트 코드를 검사하고 코딩 결함을 식별하여 잠재적 오류 및 보안 취약성의 흔적을 찾는 Java 정적 코드 분석 도구입니다.
- 이러한 결함은 경고로 보고되지만 보고 된 모든 경고가 반드시 결함 인 것은 아닙니다 (예 : 가능한 성능 문제에 대한 경고).
- 최신 버전은 400 개 이상의 경고를보고하며 모든 경고는 (i) 가장 무서운, (ii) 무서운, (iii) 문제, (iv) 우려의 네 가지 등급으로 분류됩니다.
특징
- 코드에서 400 개 이상의 버그 패턴을 감지합니다.
- SpotBugs를 실행하려면 JRE (또는 JDK) 1.8.0 이상이 필요합니다. 그러나 1.0에서 1.9까지 모든 버전의 Java 용으로 컴파일 된 프로그램을 분석 할 수 있습니다.
통합
사용법 :
1.SpotBugs 플러그인 설치
2.Sportbugs 취약점검사
3.검사한 단위별로 심각도와 항목별로 목록이 나타납니다.
- Scariest, Scary, Troubling, Of Concern 4개의 심각도에 따라 알림을 줍니다.
##PMD
특징
- 자바 컴파일러가 잡아내지 않는 버그나 잘못된 코드 패턴을 찾아주는 정적 코드 분석 도구
- PMD는 암호 및 IP 주소의 하드 코딩
forEach
, 기존 for
루프 대신 루프 사용, Demeter 의 법칙 을 위반 하거나 God Class 안티 패턴을 구현하는 코드 와 같은 일반적인 문제를 확인할 수 있습니다 .
통합
- Java에서 문제를 감지하는 250 개 이상의 규칙
- Java 13까지 언어 지원
사용방법 :
1.pmd플러그인 설치
2.pmd 실행
3.실행하면 아래와 같이 검출된 항목이 타입별로 분류되고, Details를 누르면 상세내용을 볼 수 있다.
##EclEmma
- EclEmma(JaCoCo 라이브러리 기반)는 Eclipse 용 무료 Java 코드 커버리지 도구입니다.
- Java 코드베이스에서 코드 커버리지를 측정하고 시각적 보고서를 통해 커버리지 데이터를 표시하기위한 툴킷입니다.
- 코드 라인과 실행 된 코드의 총 비율을 강조하고 라인 및 분기 범위를 모두 추적합니다.
- EclEmma는 개발자가 적절하게 테스트되지 않은 코드를 평가하고 낮은 커버리지 영역에 초점을 맞추는 데 도움이됩니다.
- HTML, XML 및 CSV의 세 가지 유형의 보고서 형식을 지원합니다.
특징
- 버전 1.0에서 14까지의 Java 클래스 파일을 지원합니다.
통합
##Checkstyle
- 개발자가 기업 내에서 스타일 가이드를 정의하고 코딩 표준을 적용하는 프로세스를 자동화하는 데 도움이되는 Java 정적 분석 도구입니다.
- Checkstyle은 위반 된 규칙을 식별하고 Eclipse, IntelliJ IDEA 또는 NetBeans와 같은 IDE를 사용하여 코드를 수정하고 다시 형식화하는 데 도움을줍니다.
- 위반 범주에는 일반 토큰에 대한 와일드 카드 가져 오기 및 공백 사용이 포함됩니다.
특징
- 자바 코딩 스타일을 적용하기위한 180 개 이상의 검사.
- Java 14까지 언어 지원.
통합
##JArchitect
- 메소드 매개 변수 수, 변수 및 코드 라인, 순환 복잡도, 구 심성 및 원심성 결합 등과 같은 코드 메트릭을 평가하는 Java 정적 분석 도구입니다.
- 코드를 측정, 쿼리 및 시각화하고 예기치 않은 문제, 기술적 부채 및 복잡성을 방지합니다.
특징
- Java 8에서 13까지의 언어 지원.
- 450 개 이상의 규칙.
통합
##JUnit
- 개발자가 Java 8 이상에 대한 단위 테스트를 작성하고 실행할 수 있도록하는 Java 개발 프로젝트 용으로 널리 사용되는 단위 테스트 프레임 워크입니다.
- JUnit은 간단하면서도 강력한 assertion 문으로 코드의 상태와 동작을 테스트합니다.
- JUnit은 시작하기 쉽고 더 복잡한 시나리오를 위해 주석을 사용하여 다양한 추가 기능을 제공합니다.
특징
- JUnit 5 (최신 릴리스)에는 런타임에 Java 8 이상이 필요합니다.
통합
기사출처 : https://dzone.com/articles/java-code-quality-tools-recommended-by-developers