ALM/Build Automation (빌드 자동화)

Code Inspection Tools

Terry Cho 2008. 2. 29. 17:16

Code inspection tools
정적 분석 툴이라고도 이야기 하는데...
모냐 하면
소스코드나 컴파일된 클래스를 넣으면 코드 상에서 발생할 수 있는 예상 되는 버그를 알려주는 것이다. (정적으로 소스 코드를 분석해서..)

예를 들어
1: Address addr = get Address("bcho");
2: if(addr != null){ addr.sendGift("Money");}
3: addr.verify();

위의 코드는 addr이 NULL일때 3번 라인에서 Null Pointer Exception(NPE)가 발생할 수 있다. 실행하지 않아도 예측할 수 있는 내용이다.

이런 위험성이외에도 MultiThreading 에서 Lock문제나 단순하게 Class 명명 규칙을 벗어난 경우 등등 이런 여러가지 패턴을 벗어나서 버그의 가능성이 있는 것을 찾아내주는 것을 Code Inspection Tool이라고 한다.

물론 개발자가 의도한 부분도 있고 사람이 생각한 알고리즘을 기계적인 검사를 통해서 검색해 낸다는게.. 얼마나 정확성이 있겠냐만은... 생각외로 도움이 될 수 있다.

대표적인 툴로는 PMD와 FindBugs (둘다 공짜!!) 가 있고.. 이 둘 역시 Hudson에 멋지게 플러그인되어 빌드때마다 Inspection을 수행할 수 있다.

Find bugs : http://www.ibm.com/developerworks/java/library/j-findbug1/
PMD : http://www-128.ibm.com/developerworks/kr/library/j-pmd/

시간 되면 개발환경 자동화 프로세스에 충분히 포함해볼만한 내용..