SW품질관리를 위한 Visualization - SonarQube

  • 개요


정적분석 및 동적 소스 코드 분석도구인 SonarQube를 적용해서 프로젝트 초기에 품질속성을 확보하라.

[참고]


  • 설치

( 참고 : http://www.youtube.com/watch?v=IFlN4bUufi8)

1.mysql 설치
   SonarQube는 MySql, Oracle, PostgreSQL, MS-SQL을 지원한다.

2. SonarQube 설치
    http://www.sonarqube.org/downloads/ 에서 다운받아 설치.

3. SonaQube 설정
    압축을 푼 디렉토리 의 conf/sonar.properties 파일의 내용에서 db연결 부분을 편집
    하여 준다. 자세한 방법은  http://www.youtube.com/watch?v=IFlN4bUufi8 를 참조.

4. 기본 스티마 생성
    SonarQube는 첫 실행시에 자동으로 테이블을 생성하는데 이때 필요한 스키마 정보를
    입력해야 한다.
 
    https://github.com/SonarSource/sonar-examples/tree/master/scripts/database/mysql
    의 내용을 적용한다.

5. SonarQube설치 디렉토리/bin 아래 실행스크립트를 실행하여 기동 시킨다.
   (기본 주소는 http://localhost:9000 )

  • 분석

SonarQube를 통해 분석을 하기 위해서는 SonarQube Runner, maven, ant, gradle등의 방법이 있다. 이중 eclipse와 연동을 위해서는 maven을 통한 분석방법이 좋아 보임.

1.pom.xml파일 설정
http://docs.codehaus.org/display/SONAR/Installing+and+Configuring+Maven 의 내용을 참조하여 pom.xml파일에 profiles를 적용한다.

2. maven 실행

mvn clean install -DskipTests=true
mvn sonar:sonar

3. 접속하여 대시보드 확인
   http://localhost:9000에 접속하여 대시보드를 확인한다.


  • 품질속성 지표 판독 및 목표 설정


[참고]
http://blog.naver.com/PostView.nhn?blogId=egmation&logNo=70175040398
http://blog.naver.com/PostView.nhn?blogId=lugenzhe&logNo=90102390361

SonarQube가 제공하는 지표는 아래와 같다

-Duplicate code 중복코드
한 클래스의 서로 다른 두 메소드 안에 같은 코드가 있거나, 동일한 수퍼클래스를 갖는 두 서브 클래스에서 같은 코드가 나타나는 경우임.
수정 사항이 발생했을때 같은 부분을 모두 수정해 줘야 하기 때문에 오류발생요인이 되기도 하며, 유지보수를 어렵게 하는 이유가 되기도 하기때문에 반드시 제거해야 한다.

목표 : 0 % 이상의 수치가 나오면 관리대상으로 분류하고 , "전체 소스 코드 중 코드 중복이 심한 영역(전체 중복 코드 비율, 우선 순위별 비율)을 식별해 중복 라인 수가 많은 코드부터 리팩토링(코드를 일반화, 재사용, 추상화)하며, 우선 순위가 High로 식별된 중복 코드는 모두 제거하고 우선순위가 Normal이나 Low로 식별된 중복 코드는 자율적으로 제거한다."

-Code coverage
  테스트 코드 작성에 대한 개념 및 필요성을 초기에 전파.
  테스트 자동화 프레임워크 도입을 검토
  목표 : 60%/line , branch

-Complex code 복잡도
 (기본개념 : http://story.wisedog.net/sw-metric-cyclomatic-complexity-%EB%B3%B5%EC%9E%A1%EC%84%B1-%EC%A7%80%ED%91%9C/)

  목표 : 6 / function 이상인 것들을 리팩토링 대상으로 선정

-Potential bugs
  Critial 은  10 이하, Major : 항목중 중요도가 상인 항목에 대해 리팩토링 대상으로 선정

-Documentation
  목표 : 70% 이상, undocument가 5 이상인 코드는 보완 대상으로 선정

-Comment
  30%이하의 코멘트 작성 소스에 대해 보완 대상으로 선정


참고서적
http://blog.naver.com/PostView.nhn?blogId=lugenzhe&logNo=90102390361

댓글

이 블로그의 인기 게시물

Charset 변환 ( EUC-KR, UTF-8, MS949, CP933 )

GZipUtils- gzip을 통한 압축시 charset처리

ESAPI ( XSS, Sql Injection )