파인드벅스
파인드벅스(FindBugs)는 자바 프로그램의 버그를 찾아주는 오픈소스 기반의 코드 분석기이다. 자바의 소스 코드가 아니라 바이트코드(bytecode)를 분석하여 버그 패턴을 탐지한다. 단독 실행형도 있고, 이클립스(Eclipse)나 젠킨스(Jenkins) 등에 플러그인 방식으로 삽입하여 사용하는 것도 있다.
FindBugs의 현재 버전은 3.0.1이다.
목차
개요[편집]
파인드벅스는 빌 퓨(Bill Pugh)와 데이비드 호브마이어(David Hovemeyer)가 만든 오픈소스 프로그램으로, Java 코드에서 프로그래밍 오류를 찾아내는 데 사용된다. 이 도구는 정적 분석(static analysis)을 통해 Java 프로그램 내에서 수백 가지 유형의 잠재적 오류를 식별한다.
잠재적인 오류는 그 영향이나 심각도를 기준으로 다음의 네 가지 등급으로 분류된다:
- 가장 심각한(scariest)
- 무서운(scary)
- 문제소지(troubling)
- 주의 필요(of concern)
이는 개발자에게 각 오류의 중요도를 직관적으로 전달하기 위한 것이다.
FindBugs는 소스 코드가 아니라 Java 바이트코드를 대상으로 분석을 수행한다. 이 소프트웨어는 독립 실행형 GUI 애플리케이션으로 배포되며, Eclipse, NetBeans, IntelliJ IDEA, Gradle, Hudson, Jenkins 등과 연동 가능한 플러그인을 제공한다.
또한, FindBugs에는 사용자 정의 규칙 집합(rule sets)을 추가하여 검사 항목을 확장할 수도 있다.
시스템 요구사항[편집]
- 실행 환경: JRE(또는 JDK) 1.7.0 이상 필요
- 분석 가능 대상: Java 1.0부터 1.8까지 모든 버전으로 컴파일된 프로그램 분석 가능
최신 버전[편집]
FindBugs 3.0.1 변경 사항[편집]
- 새로운 버그 패턴 추가:
- BSHIFT_WRONG_ADD_PRIORITY,
- CO_COMPARETO_INCORRECT_FLOATING,
- DC_PARTIALLY_CONSTRUCTED,
- DM_BOXED_PRIMITIVE_FOR_COMPARE,
- DM_INVALID_MIN_MAX,
- ME_MUTABLE_ENUM_FIELD,
- ME_ENUM_FIELD_SETTER,
- MS_MUTABLE_COLLECTION,
- MS_MUTABLE_COLLECTION_PKGPROTECT,
- RANGE_ARRAY_INDEX,
- RANGE_ARRAY_OFFSET,
- RANGE_ARRAY_LENGTH,
- RANGE_STRING_INDEX,
- RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT,
- UC_USELESS_CONDITION,
- UC_USELESS_CONDITION_TYPE,
- UC_USELESS_OBJECT,
- UC_USELESS_OBJECT_STACK,
- UC_USELESS_VOID_METHOD
FindBugs 3.0.0 주요 기능[편집]
- Java 8 지원 (런타임 및 타겟 플랫폼)
- 최소 Java 7 런타임 요구
- ASM 5 사용 (FindBugs 2.x/ASM 3 기반 서드파티 검출기 업그레이드 필요)
- 새로운 버그 패턴: NP_OPTIONAL_RETURN_NULL, IIO_INEFFICIENT_INDEX_OF, IIO_INEFFICIENT_LAST_INDEX_OF, CNT_ROUGH_CONSTANT_VALUE
- 소스 필터 기능 추가 (다른 언어로 생성된 클래스 필터링):
xml <FindBugsFilter> <Match> <Source name="~.*\.groovy" /> </Match> </FindBugsFilter>
- 새로운 커맨드 라인 옵션: -auxclasspathFromFile, -analyzeFromFile
- Ant 태스크에 "nested" 속성 추가
- 커뮤니티 패치 통합 및 다양한 버그 수정
FindBugs 2.0 주요 개선사항[편집]
- 커뮤니티 클라우드 기능: FindBugs 업데이트 확인
- 강력한 플러그인 시스템
- Guava 및 JSR-305 지원 개선 포함 새로운 버그 패턴
- 성능 향상
실행방법[편집]
FindBugs는 다양한 방식으로 실행할 수 있다:
- 공식 지원 방식 (FindBugs 다운로드 패키지 포함)
- 커맨드 라인
- Ant
- GUI
- Eclipse (플러그인 업데이트 사이트)
- 서드파티 통합
- Maven: FindBugs Maven 플러그인
- NetBeans: SQE(Software Quality Environment)
- Jenkins: FindBugs 플러그인
- Hudson: [Hudson FindBugs 플러그인]
- IntelliJ: 다양한 플러그인
스팟벅스[편집]
스팟벅스 (SpotBugs)는 FindBugs의 정신적 후속 프로젝트로, 커뮤니티의 지원을 받아 개발이 중단된 FindBugs의 지점에서 개발을 계속 이어나가고 있다.
2016년, FindBugs의 프로젝트 리더가 활동을 중단했지만 커뮤니티에는 많은 이슈가 남아있었다. 이에 Andrey Loskutov는 커뮤니티에 공식 발표를 하고, 일부 자원봉사자들이 현대적인 Java 플랫폼을 지원하고 유지보수성이 더 좋은 프로젝트를 만들기 시작했다.
2017년 9월 21일, Andrey Loskutov는 새로운 커뮤니티의 현황에 대해 다시 발표했고, 특히 Java 11(새로운 LTS 버전), Java 플랫폼 모듈 시스템, invokedynamic 명령어를 지원하는 SpotBugs 3.1.0을 출시했다.
- 지원 플러그인
- 통합 개발 환경 (IDE): Eclipse, IntelliJ IDEA
- 빌드 도구: Gradle, Maven
- 정적 분석 도구: SonarQube
SpotBugs는 sb-contrib, find-security-bugs 등 기존 FindBugs의 모든 플러그인을 지원하며, 몇 가지 사소한 변경 사항이 적용되었습니다.
- 주요 적용 분야
SpotBugs는 다음과 같은 다양한 영역에서 활용된다:
- 지속적 통합(CI) 또는 지속적 전달(CD) 주기 중 테스트
- 애플리케이션 내 결함 위치 확인
- 코드 리뷰 과정
참고자료[편집]
- 파인드벅스 공식 홈페이지 - https://findbugs.sourceforge.net/
- 깃허브 저장소 - https://github.com/findbugsproject/findbugs
- "FindBugs", 《维基百科》
- "FindBugs", Wikipedia
같이 보기[편집]
이 문서는 로고 수정이 필요합니다.