안녕하세요 케이치입니다.
오늘은 수많은 소스 정적 분석 툴 중에서 세가지 툴에 대한 비교를 해볼까 합니다.
이미 어떤 분이 분석을 해놓은 영문 자료가 있어서 번역을 해보았습니다.
Findbugs |
PMD |
Checkstyle |
|
버전 | 3.0.0 | 5.2.2 | 6.1.1 |
라이센스 |
Lesser GNU Public License | BSD-style license | Lesser General Public License |
목적 | 잠재적 버그 찾기 ( 자바 소스파일이 아닌 바이트 코드를 이용 ) |
잠재적인 문제들, 버그 가능성이 있는 부분들, 사용되지 않았거나 최적화되지 않은 코드들 검색 |
자바 소스 파일을 읽어서 소스 코드 표준에 위반되는 것들을 검색, e.g. Sun Code Conventions, JavaDoc |
장점 | - 실제 결함을 잘 찾아줌 - 찾은 결함이 엉뚱한 결함일 확률이 낮음 ( 정확성이 높음 ) - 바이트 코드를 읽음으로 속도가 빠름 |
- 종종 실제 결함을 찾아줌 - finds bad practices |
- 정해준 코딩 규약에 위반되는 것들을 검사해줌. 직접 코딩 규약을 만들어 사용가능. |
약점 | - 컴파일된 클래스 파일에서 바이트 코드를 읽어서 사용해야하므로 빌드과정이 필수 | - 복제된 코드를 찾는 속도가 느림 | - 실제 버그를 찾을 수 없음 |
규칙 수 | 408 | 234 | 132 |
규칙 카테고리 |
Correctness Bad practice Dodgy code Multithreaded Correctness Performance Malicious Code Vulnerability Security Experimental Internationalization |
JSP - Basic JSF - Basic JSP XSL - XPath in XSL Java - Design - Coupling - Jakarta Commons Logging - Basic - Strict Exceptions - Security Code Guidelines - Java Logging - Android -Controversial - Comments - Type Resolution - Empty Code - String and StringBuffer - Code Size - Braces - Unused Code - Unnecessary - J2EE - JavaBeans - Migration - Import Statements - JUnit - Naming - Finalizer - Optimization - Clone Implementation Ecmascript - Basic Ecmascript - Unnecessary - Braces XML - Basic XML |
Annotations Block Checks Class Design Coding Duplicate Code Headers Imports Javadoc Comments Metrics Miscellaneous Modifiers Naming Conventions Regexp Size Violations Whitespace |
출처 : http://www.sw-engineering-candies.com/blog-1/comparison-of-findbugs-pmd-and-checkstyle
실제로 세 가지를 모두 다운로드 받아서 테스트도 해보았고 FindBugs는 실제 서비스에 기능으로 적용도 해보았습니다.
우선 잠재적인 버그 분석을 위해서는 FindBugs가 단연 최고였습니다.
그리고 코딩컨벤션을 정해놓고 확인하기에는 CheckStyle이 좋습니다.
FindBugs와 CheckStyle은 사용하는 목적 자체가 다른 툴이었습니다.
PMD는 이도저도 아닌 그저그런 툴로 기억합니다.
--- 이하 최초 발행글 ---
필요에 따라 하나씩만 사용하셔도 되지만 세가지를 모두 사용하시면 좀 더 확실한 정적 툴 분석을 하실 수 있을 것 같습니다.
세 툴을 모두 처음 사용하신다면 제일먼저 FindBugs를 사용하시고 그 다음 PMD 그리고나서 마지막에 CheckStyle을 사용하실 것을 권장드립니다. 이건 다른 분이 하신 말씀이고요....전 CheckStyle만 잠깐 써봤는데요, CheckStyle은 뭐랄까 회사 내부의 코딩 정책을 정의해서 사용하면 좋을만한 그런 툴이더군요. 대신 룰을 너무 과하게 주면 개발자들이 좀 싫어할 수 있을 것 같다는 생각이 드네요.
아래 링크는 FindBugs 프로젝트에 참여한 메릴랜드 주립대 교수님의 1시간 분량짜리 세미나입니다.
관심있으신 분들은 보시면 좋을것 같네요. 참고로 언어는 영어입니다.
https://www.youtube.com/watch?v=8eZ8YWVl-2s
이상 케이치였습니다.
오늘도 즐프하세요~~ ^-^
SonarQube 정적분석 툴 설치 및 사용하기 (0) | 2015.08.07 |
---|---|
SonarQube 서버 실행시 메모리 부족 오류 (0) | 2015.08.06 |
무료 벡터 이미지 툴/에디터 ( Inkscape ) 다운로드 및 설치 (0) | 2015.07.30 |
무료 이미지 에디터 김프 ( GIMP ) 다운로드 및 설치 (0) | 2015.07.30 |
맥(Mac) 스크린샷 단축키 (0) | 2015.07.25 |