 |
|
허드슨의 플러그인 기능
이 프로젝트를 시작할 때 정의했던 빌드는 소프트웨어 인스펙터(software inspector)인 FindBugs와 PMD를 실행하여 코드를 분석하고 위험을 보고한다. 이 작업은 CI 프로세스에 통합되는 훌륭한 작업으로 코드 기반에 상세한 내용을 제공한다. 이들을 실행한다는 것은 결과를 트렌드하기 시작한다는 것을 의미하는데, 이는 전 절에서 봤던 테스트와 빌드-시간 트렌드와 비슷하다.
허드슨의 가장 흥미로운 기능 중 하나는 바로 플러그인 API다. 이는 필요에 의해 설치되는 새로운 기능을 만드는 데 사용된다. 허드슨은 광범위한 플러그인 목록을 지원한다. 그 중에는 FindBugs 데이터를 트렌딩하는 것이고 하나는 PMD 위험을 트렌딩하는 플러그인이 포함되어 있다(이 플러그인은 CheckStyle 같은 다른 도구도 트렌드할 수 있다).
허드슨 플러그인 설치는 허드슨 자체를 설치하는 것만큼 간단하다. 허드슨 웹 사이트에서 플러그인 최신 버전을 다운로드하고 허드슨 홈페이지에서 Manage Hudson 링크를 누르고 나서 Manage Plugins 링크를 클릭하면 플러그인 아카이브 파일을 올릴(upload) 폼을 보여준다. 플러그인이 올라가면 허드슨을 다시 시작해야 한다.
FindBugs
FindBugs 허드슨 플러그인을 다운로드해 설치했으면 이를 구성해야 한다. 프로젝트 레벨에서 플러그인을 설정하므로 프로젝트 홈페이지로 가서 그림 22처럼 FindBugs에 한정된 새 옵션을 찾을 수 있는 Configure 링크를 클릭한다.
그림 22. 허드슨에서 FindBugs 설정하기
FindBugs 플러그인을 구성하는 것은 JUnit 트렌딩을 구성하는 것과 비슷한 단계를 밟으면 된다. FindBugs가 출력할(빌드 파일의 FindBugs 타겟을 정의할 때 신경쓴) XML 리포트를 어디서 찾을지 허드슨에 알려준다. 이에 더해 쓰레시홀드 카운트(threshold count)를 지정할 수 있다. 그림 22에서 볼 수 있듯이 FindBugs에 5개 이상의 위험이 있다면 빌드는 불안정하다고 간주될 것이다. 또한 쓰레시홀드를 사용하여 빌드 보고에 영향을 줄 수 있다.
Save를 클릭하면 프로젝트의 빌드 프레퍼런스를 업데이트해야 한다. 즉, 허드슨이 FindBugs를 빌드의 한 부분으로 알도록 해야한다는 것이다. 이 작업이 끝나면 FindBugs 데이터를 모으기 위해 강제로 빌드를 해야 한다(또는 누군가가 변화를 감지할 때까지 그냥 기다린다).
그림 23. 경고 두 개가 나왔다.
Findbugs 사용하기
첫 빌드 후 그림 23처럼 빌드 상태 페이지에 몇 가지 새 데이터가 있음을 눈치챘을 것이다. 이 경우 허드슨은 FindBugs가 작동했을 때 경고 두 개가 발견됐다고 보고한다. 해야 할 일이 몇 가지 있음을 나타내며 이 때는 허드슨 리포트 페이지의 FindBugs 링크를 클릭하여 손 볼 수 있다.
그림 24. FindBugs 위험 세부사항
그림 24처럼 세부사항을 볼 수 있게 되면 문제를 해결하는 데 도움이 된다. 이 경우 프로젝트 클래스 두 개에 위험이 생겼다는 걸 알 수 있다. 하나는 Priority 1 위험이고, 다른 하나는 Priority 2 위험이다. 초고속 개발자의 경우 이런 위험은 CI 개발의 흐름에 따라 바로 고칠 수 있다.
고치고 서브버전에 수정사항을 커밋하면 허드슨은 바로 빌드를 실행할 것이다. 이후 Build Status 링크를 클릭하면 그림 25처럼 버그 하나가 고쳐졌음이 허드슨에 표시된다.
그림 25. 버그 하나는 해결, 다른 버그는 고쳐야 한다.
여기에 프로젝트 홈페이지에 나온 그림 26의 새 트렌드 그래프는 버그 하나를 고쳤음을 보여준다.
그림 26. 버그가 고쳐지고 있다. 나쁘지 않다.
FindBugs 위험을 트렌딩하고 버그 쓰레시홀드를 사용하여 빌드의 전반적인 안전성에 영향을 주는 것은 허드슨의 두 가지 주요 기능이다. 이에 드는 비용은 없다. 그저 FindBugs 플러그인을 다운로드하여 설치하고 프로젝트 빌드시 실행하면 된다.
PMD
FindBugs만이 허드슨의 유일하게 멋진 플러그인은 아니다. 소프트웨어 검사와 관련된 Violations 플러그인도 있고 이에 따른 PMD, CheckStyle, 같은 다양한 도구도 있다. FindBugs 플러그인을 이미 실행한다고 했을 때 Violations 플러그인을 사용하여 특히 PMD 데이터를 모니터할 수 있다. 본 튜토리얼 앞 부분에서 앤트 빌드를 설정할 때 PMD를 설정하여 XML 리포트를 출력했다. 이미 추측하고 있듯 Violations 플러그인은 이 보고를 사용하여 트렌딩을 위한 데이터를 분석한다.
그림 27에서 볼 수 있듯이 이 플러그인은 허드슨의 다른 트렌딩 도구처럼 작동한다. 그저 원하는 도구의 XML 리포트를 어디서 찾을지 허드슨에 알려주면 된다. 물론 다른 옵션도 있지만 기본 기능으로 XML에 허드슨을 가리키고 Save를 클릭한다.
그림 27. Violations 플러그인 구성하기
이들 도구를 실행하는 앤트 타겟을 실제 호출하도록 허드슨을 설정해야 한다는 것을 기억하자. 이 경우 PMD 타겟을 정의했으므로 허드슨을 업데이트하여 PMD를(FindBugs와 강제로 컴파일을 수행할 테스트도) 실행하기만 하면 된다.
수정 및 반복
빌드를 만들고 데이터를 분석한 후에 FindBugs 데이터에 했던 것처럼 문제를 고칠 수 있다. 그림 28에서 볼 수 있듯이 빌드 13과 14 사이에 13개 PMD 위험을 감소시켰다. 나쁘지 않다. 벌써 코드가 좋아지기 시작한다!
그림 28. 몇 가지 PMD 위험을 고쳤다!
트렌딩
Violations 플러그인은 트렌딩도 지원하고 그림 29에서 볼 수 있듯이 도구로 데이터도 트렌드한다. 이 경우 FindBugs 데이터와 PMD 데이터에서 모두 발견된다. 그나저나 그림 29에서 FindBugs의 다른 위험도 없앴다는 것이 보이는가?
그림 29. 트렌드를 이용해 더 많은 위험 잡기
그리고 이전에 본 테스트 트렌딩과 FindBugs 트렌딩처럼 Violations 플러그인도 아래 그림 30처럼 프로젝트 홈페이지에 전체 위험을 시간대 순으로 보여준다.
그림 30. 시간에 따른 위험 트렌드가 이제 보인다!
허드슨의 플러그인이 코드 기반에 새로운 가시성을 준다는 것은 의심할 여지가 없다. 더 중요한 것은 이 데이터를 트렌드하는 기능이다. 이를 통해 목표를 설정할 수 있는데 예를 들어 맞춤 리포트 페이지를 훑지 않아도 과정을 모니터할 수 있다는 것이다. 허드슨은 신속하게 데이터를 이해하는 데 필요한 프로젝트 대시보드(dashboard)를 만든다.
|