출처 : http://blog.naver.com/PostView.nhn?blogId=huewu&logNo=110118172113&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=4&postListTopCurrentPage=1&isAfterWrite=true&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=4






 좋은 코드를 작성하기란 어려운 일 입니다. 무엇보다도 명확한 기준을 잡기가 어렵습니다. 한 가지 문제를 푸는데도 워낙 다양한 방법이 있기 때문에, 과연 어떤 방식이 가장 좋은 방법인지, 혹시 문제점이 있는건 아닌지, 다른 유능한 개발자라면 어떻게 작성했을지 늘 궁금한 법이지요. 이런 경우, 도움을 받을 수 있는 한 가지 좋은 방법은 바로 코드 분석 툴을 사용하는 것 입니다.코드 분석 툴을 일련의 정해진 규칙과 우리가 작성한 코드를 비교하여, 혹시 잠재적인 문제가 숨어있는 것은 아닌지, 문법 상 불필요한 부분이 있는지, 코드 작성에 있어서 널리 사용되고 있는 양식을 따르고 있는지 등등을 판단해 줍니다. 그리고 이번 포스트에서 소개해 드릴 CodePro AnalyitX 도 바로 그러한 정적 코드 분석 툴 중 하나입니다.


CodePro AnalytiX 란?
 CodePro Analytix 는 이클립스 개발자를 위한 Java 테스팅 및 코드 분석 툴입니다. 개발자들이 보다 훌륭한 품질의 코드를 작성하고, 오류를 줄일 수 있도록 도와줍니다. 특히나, 문제점이 발견된 코드를 원클릭으로 올바르게 수정할 수 있는 기능을 지원하기 때문에, 개발 시간 단축에도 큰 힘이 되지요. 제공 하는 기능을 간단히 요약하면 다음과 같습니다. 


 기본적으로 상용으로 판매되던 제품이었는데, 작년에 해당 제품을 개발하된 회사(Instantiation)를 구글이 사들인 후, 2010년 연말에 해당 툴을 통채로 Eclipse Project 에 기부 하였다고하네요. 그런고로, 이제는 무료!! 로 사용할 수 있는 툴 입니다.(역시 구글...)

CodePro AnalytiX 설치하기
 Eclipse 플러그인 형태로 제공되기 때문에 설치는 아주 간단합니다. 사용하고 계신 Eclipse 버전에 따라, 다음의 경로에서 플러그인을 받으시면 됩니다. 안드로이드 ADT 를 설치하는 것과 거의 동일한 방식이라고 생각하시면 됩니다.
Eclipse 3.7 (Indigo)
Eclipse 3.6 (Helios)
Eclipse 3.5 (Galileo)
Eclipse 3.4 (Ganymede)
CodePro AnalytiX 를 이용한 코드 분석
 CodePro 는 Eclipse 와 통합되어 동작함으로, 사용법이 굉장히 단순 합니다. 코드 분석을 진행하고자 하는 프로젝트를 패키지 익스플로어 창에서 선택한 후, 마우스 우클릭 하시면 다음과 같은 Context Menu 가 나타납니다.


 코드 분석을 위해서는 간편하게 원클릭 - Audit Code 버튼을 누르시면 됩니다. 그러면 잠시 후, Audit 윈도우에 아래와 같은 형식으로 문제의 소지가 있는 항목을 나열하여 표시해 줍니다. 이 때, 개별 항목을 클릭하면  해당 소스로 자동 이동하며, 소스 라인 왼쪽에 깃발 표시를 클릭하면 어떤식으로 수정하면 문제가 해결 될 수 있는지 여러 해결 방안을 제안해 줍니다.


 어떤 종류의 코딩 룰을 적용할지도 지정할 수 있습니다. Context 메뉴에 Audit Code Using... 항목을 클릭하시면, 대표적인 9가지 코딩 룰 셋 가운데 어떤 셋들을 적용할지 선택할 수 있습니다. 단, 마지막 The Elements of Java Style 항목은 워낙 깐깐한 제약 조건을 달고 있는 만큼 선택하실 필요는 없을거 같네요. (예전 척박한 PC 환경 시절에 있었던 제약들이 많더라구요.) 미리 정의된 룰 셋 외에도 커스텀하게 룰 셋을 적용하고자 하신다면, CodePro 메뉴 중, Preference 항목을 통해 적용하고자 하는 룰을 정교하게 선택하실 수도 있습니다. 코딩 룰 위반은 다음의 세 단계로 표현되는데,

  •  High severity
  •  Medium severity
  •  Low severity

 High severity 는 버그에 가까운, 심각한 룰 위반을 뜻함으로 반드시 수정하시는 편이 좋습니다. (Medium 의 경우에는 종종, 그냥 개발자 선호에 따라 좌우될 만한 건들도 나오더군요.) 또 한가지, Codepro 는 안드로이드 소스가 아닌 일반 Java 소스를 분석하는 툴 임으로, Android 에서는 별다른 문제가 아닌 부분도 오류로 잡히는 경우가 있습니다. 대표적으로, 안드로이드 ADT 가 자동으로 생성해준, gen 폴더 아래 파일들인데, 이런 부분은 그냥 무시하셔도 상관없습니다. 정적 코드 분석툴은 어디까지나 개발자들의 주의를 환기시켜주는 용도이지, 정적 분석툴이 잡아낸 오류를 모두 수정해야되는 것은 아닙니다. (False Alarm 일 수 있으니까요.)

CodePro AnalytiX 를 이용한 코드 지표 측정
 CodePro 의 가장 큰 장점은 바로 사용하기 쉽다는 것이지요. 코드 지표를 측정하기 위해서는, 원하는 프로젝트를 선택하고, Context Menu 에서 Compute Metric 메뉴를 클릭하시면 됩니다. 그러면 잠시 후에 전체 코드 라인 수와 같은 코드 지표 값을 확인하실 수 있습니다.


 지표는 검은 색, 혹은 붉은 색으로 표시 되는데, 예상하시다시피, 붉은 색 항목은 해당 항목에 대한 지표 값이 적정 값을 초과한다는 의미입니다. 개별 항목을 클릭해보며, 정확히 어떤 클래스에서 문제가 발생하는지 알려주며, 필요하다면 해당 코드를 적절하게 수정하여 지표값을 개선 할 수 있습니다.

 참고 삼아, 각각의 지표가 의미하는 바와, 권장 되는 수치를 간단히 정리해 보면 다음과 같습니다. 보다 상세한 내용은 Metric 관련 페이지를 참조하시면 좋을 것 같네요.

  • Abstractness - Abstract 타입 수 / 전체 타입 수
  • Block Depth - 메서드 내의 블럭 계층의 깊이. (권장: 3 단계 이하)
  • Cyclomatic Complexity - 메서드 내부의 분기 수. (권장: 6 단계 이하)
  • Lines Of Code Per Method - 메서드 당 편균 라인 수. (권장: 30 줄 이하)
  • Number of Constructors Per Type - 타입 당 생성자 수. (권장: 4 개 이하)
  • Number of Fields Per Type - 타입 당 필드 수. (권장: 10 개 이하)
  • Number of Methods Per Type - 타입 당 메서드 수. (권장: 10 개 이하)
  • Number of Parameters - 메서드의 파라매터 수. (권장: 6 개 이하)
  • Comments Ratio - 커멘트 수 / 코드 라인 수
  • Efferent Couplings - 자신이 속한 패키지 외에 다른 패키지를 참조하는 타입 수 (권장: 20개 이하)
  • Lines of Code - 파일 당 코드 라인 수 (권장:1600 줄 이하)
  • Number of Characters - 파일 당 문자 수 (권장: 20000 자 이하)
  • Weighted Methods - 모든 Cyclomatic Complexity 의 합.

CodePro AnalytiX 를 이용한 유사 코드 분석하기
 코드 최적화와 리펙토링의 가장 큰 원칙은 바로 코드 상의 중복된 부분을 제거하는 것 입니다. 중복된 코드를 적절히 제어하지 못하면, 코드는 시간이 지날 수록 누더기가 되어가며, 여기서 잡은 버그가 저기서는 갑자기 튀어나오기도 합니다. '테스트 주도 개발' 의 저자 켄트 백은 '작동하는 깔끔한 코드' 가 바로 테스트 주도 개발의 궁극적인 목표라고 말하기도 했습니다. 네... 말 그대로 중복된 코드는 일종의 악의 축이라고 할 수 있습니다. 그리고 바로 CodePro AnalytiX 는 우리의 코드 프로젝트 내에서 중복되거나 심지어 로직이 유사한 코드를 찾아주는 기능을 제공합니다. 사용법은 역시나 간단합니다. Context Menu 에서 'Find Similar Code' 항목을 선택하면 됩니다. 그러면 순식간에 아래와 같이, 유사하거나 중복된 코드의 위치가 일목요연하게 들어납니다. 중복이 제거될 수 있는 모든 부분을 찾아내는 것은 아닙니다만,  코드 리펙토링을 시작하고자 할 때, 기본 판단의 근거가 될 수 있는 정말로 유용한 기능이 아닐 수 없습니다.


결론
 CodePro Analytix 는 정말로 유용한 도구 입니다. 지금까지 설명드린 기능 외에도 의존성 분석/ 코드 커버리지 분석과 같은 다양한 기능이 제공됩니다. CodePro 는 Eclipse 상에서 아마도 최고로 쉬운 코드 분석 툴 일 것입니다. 설치도 간단하고, 사용법도 편리합니다. 거기에 강력한 기능을 갖추고 있으며, 속도도 빠릅니다. 더군다나 가격은 공짜이지요. 코드 품질을 향상시키고자 하는 개발자 분들이라면 꼭 한번 사용해보시길 적극 추천드립니다.

0 댓글

댓글 쓰기

문서 첨부 제한 : 0Byte/ 2.00MB
파일 크기 제한 : 2.00MB (허용 확장자 : *.*)

목록

Page 1 / 4
번호 제목 글쓴이 날짜 조회 수
공지

http://www.MFamStory.com 입니다.

| ETC 6
MFam 2010-11-03 47516
39

Proguard 설정하기

| ETC
MFam 2014-12-29 182
38

윈도우 Eclipse에서 MS949로 작업하다 mac 으로 프로젝트를 넘겼을 경우 한글 인코딩 해결 방안

| ETC
MFam 2013-12-03 395
37

Libgdx 와 Robovm 을 이용한 iOS 포팅

| ETC
MFam 2013-10-24 378
36

HTTP Status Code(HTTP 1.1 : RFC 2616)

| ETC
MFam 2013-07-02 400
35

Byte Order

| ETC
MFam 2013-04-18 416
34

SSD 설치 후 윈도우 셋팅 방법

| ETC
MFam 2012-08-01 1451
33

유용한 어플리케이션 소개.

| ETC
  • file
MFam 2012-04-16 1706
32

서울시 공공 DB 사용하기. (서울시 Open API)

| ETC
MFam 2012-02-08 2368
31

Code Pro Analytix 활용하기. (Eclipse Plugin 코드분석 툴)

| ETC
MFam 2011-12-23 2171
30

xml 에서 특수문자 삽입하기. (Android XML 도 포함)

| ETC 1
MFam 2011-11-15 3325
29

Windows7 Update 부팅할때마다 구성 0%에서 멈추고 실패하는 현상 해결법

| ETC
MFam 2011-05-12 5857

Board Links

Page Navigation