사용자 도구

사이트 도구


java:sonarqube

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:sonarqube [2018/05/18 17:58]
kwon37xi [Web API]
java:sonarqube [2018/10/11 16:06] (현재)
kwon37xi [False Positive]
줄 9: 줄 9:
   * 따라서 위 프라퍼티들을 올바로 설정할 자신이 없으면 그냥 [[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]]
줄 67: 줄 99:
   * [[http://​www.popit.kr/​java-%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc-%ec%9c%84%ed%95%9c-maven-sonarqube-docker-%ec%8b%9c%ec%9e%91%ed%95%98%eb%8a%94-%ec%bd%94%eb%93%9c-%ec%a0%95%ec%a0%81-%eb%b6%84%ec%84%9d/​|Java 개발자를 위한 Maven + SonarQube + Docker로 시작하는 코드 정적 분석 | Popit]]   * [[http://​www.popit.kr/​java-%ea%b0%9c%eb%b0%9c%ec%9e%90%eb%a5%bc-%ec%9c%84%ed%95%9c-maven-sonarqube-docker-%ec%8b%9c%ec%9e%91%ed%95%98%eb%8a%94-%ec%bd%94%eb%93%9c-%ec%a0%95%ec%a0%81-%eb%b6%84%ec%84%9d/​|Java 개발자를 위한 Maven + SonarQube + Docker로 시작하는 코드 정적 분석 | Popit]]
   * [[https://​www.sonarsource.com/​docs/​CognitiveComplexity.pdf|SonarQube 인지적 복잡도 Cognitive Complexity]]   * [[https://​www.sonarsource.com/​docs/​CognitiveComplexity.pdf|SonarQube 인지적 복잡도 Cognitive Complexity]]
 +  * [[https://​github.com/​SonarQubeCommunity/​sonar-build-breaker|SonarQubeCommunity/​sonar-build-breaker:​ Build Breaker Plugin for SonarQube]]
java/sonarqube.1526633917.txt.gz · 마지막으로 수정됨: 2018/05/18 17:58 저자 kwon37xi