사용자 도구

사이트 도구


java:sonarqube

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
java:sonarqube [2018/06/05 18:01]
kwon37xi
java:sonarqube [2018/10/31 10:29]
kwon37xi [SonarQube Scanner for Jenkins]
줄 6: 줄 6:
 ===== SonarQube Scanner for Jenkins ===== ===== SonarQube Scanner for Jenkins =====
   * [[ci:jenkins|Jenkins]] 사용시 [[https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins|Jenkins용 SonarQube Scanner]]를 사용하면 멀티 모듈 프로젝트를 하나로 묶는것이 더 좋고, 자동으로 sonarqube 에 대한 링크까지 생성된다.   * [[ci:jenkins|Jenkins]] 사용시 [[https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins|Jenkins용 SonarQube Scanner]]를 사용하면 멀티 모듈 프로젝트를 하나로 묶는것이 더 좋고, 자동으로 sonarqube 에 대한 링크까지 생성된다.
-  * Maven이나 Gradle Plugin이 아닌 Jenkins 혹은 명령행 Scanner 사용시 [[https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode|Java Plugin and Bytecode]]에 있는 ''sonar.java.binaries'', ''sonar.java.libraries''이 올바로 설정이 안되어 Lombok 등에 대한 false alarm이 생하게 된다.+  * Maven이나 Gradle Plugin이 아닌 Jenkins 혹은 명령행 Scanner 사용시 [[https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode|Java Plugin and Bytecode]]에 있는 ''sonar.java.binaries'', ''sonar.java.libraries''이 올바로 설정이 안되어 Lombok 등에 대한 false alarm이 생하게 된다.
   * 따라서 위 프라퍼티들을 올바로 설정할 자신이 없으면 그냥 [[gradle:sonarqube|Gradle SonarQube]] 사용 권장   * 따라서 위 프라퍼티들을 올바로 설정할 자신이 없으면 그냥 [[gradle:sonarqube|Gradle SonarQube]] 사용 권장
   * [[https://stackoverflow.com/questions/46362965/sonarqube-lombok-false-positives/46365394|sonarqube + lombok = false positives]] 참조   * [[https://stackoverflow.com/questions/46362965/sonarqube-lombok-false-positives/46365394|sonarqube + lombok = false positives]] 참조
 +
 +===== False Positive =====
 +  * [[https://docs.sonarqube.org/display/PLUG/Java+FAQ|Java FAQ - Plugins - Doc SonarQube]] 참조
 +  * 해당 규칙이 false positive 인 경우 ''NOSONAR'' 보다는 Rule 자체를 변경하는 것이 좋겠다.
 +  * ''%%//%%NOSONAR''시에 항상 왜 그럴 수 밖에 없었는지 이유를 작성하자.
 +
 +==== @SuppressWarnings("all") ====
 +  * ''@SuppressWarnings("all")''를 클래스에 붙이면 해당 클래스의 모든 규칙 위반을 무시한다.
 +==== NOSONAR  ====
 +  * 규칙 위반을 고치는게 불가능할 경우 해당 위반의 줄 맨 끝에 ''%%//%%NOSONAR''를 붙인다.
 +
 +==== @SuppressWarnings("squid:룰번호") ====
 +  * ''@SuppressWarnings({"squid:S2078", "squid:S2076"})'' 처럼 ''@SuppressWarnings''와 ''squid:S룰번호'' 를 사용한다.
  
 ===== 참고 자료 ===== ===== 참고 자료 =====
줄 24: 줄 37:
  
 # 현재 프로젝트의 메트릭(위반 갯수 등) # 현재 프로젝트의 메트릭(위반 갯수 등)
- curl 'http://sonarqube.example.com?component=project:module&metricKeys=ncloc,complexity,violations,bugs,vulnerabilities,blocker_violations,critical_violations,major_violations,minor_violations,info_violations'+ curl 'http://sonarqube.example.com?componentKeys=project:module&severities=BLOCKER,MAJOR,CRITICAL'
 </code> </code>
  
   * [[https://docs.sonarqube.org/display/SONAR/Metric+Definitions|Metric Definitions - SonarQube Documentation - Doc SonarQube]] : ''metricKeys'' 에 넣을 값들   * [[https://docs.sonarqube.org/display/SONAR/Metric+Definitions|Metric Definitions - SonarQube Documentation - Doc SonarQube]] : ''metricKeys'' 에 넣을 값들
   * [[https://gist.github.com/kwon37xi/a293a4bbc86f1286ce0b150863861009|Groovy 로 API 호출]]   * [[https://gist.github.com/kwon37xi/a293a4bbc86f1286ce0b150863861009|Groovy 로 API 호출]]
 +
 +===== Quality Gates =====
 +  * [[https://docs.sonarqube.org/display/SONAR/Quality+Gates|SonarQube Quality Gates]]
 +  * 분석 결과 품질이 저하되거나 하면 알림을 줄 수 있다.
 +  * 알림은 자기 계정의 **My Account -> Notifications**에서 프로젝트 단위, 혹은 전체 프로젝트를 지정할 수 있다.
 +
 +===== Jenkins Pipeline에서 Quality Gate 응답 대기 =====
 +  * Quality Gate 응답을 기다리고 실패이면 UNSTABLE로 변경<code groovy>
 +timeout(time: 10, unit: 'MINUTES') {
 +    def qg = waitForQualityGate()
 +    if (qg.status != 'OK') {
 +        println "Pipeline unstable due to SoanrQube quality gate failure: ${qg.status}"
 +        currentBuild.result = 'UNSTABLE'
 +    }
 +}
 +</code>
 +  * Declarative Pipeline 에서 아래 사용시 무조건 FAILURE로 바꿔버림<code>
 + waitForQualityGate abortPipeline: true
 +</code>
 ===== Installing Sonar ===== ===== Installing Sonar =====
   * [[http://docs.codehaus.org/display/SONAR/Installing+Sonar|Installing Sonar]]   * [[http://docs.codehaus.org/display/SONAR/Installing+Sonar|Installing Sonar]]
java/sonarqube.txt · 마지막으로 수정됨: 2022/10/19 10:08 저자 kwon37xi