사용자 도구

사이트 도구


java:sonarqube

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:sonarqube [2019/11/08 09:16]
kwon37xi
java:sonarqube [2022/10/19 10:08] (현재)
kwon37xi
줄 2: 줄 2:
   * http://www.sonarsource.org/  [[java:static_analysis|Java Static Analysis]] 도구   * http://www.sonarsource.org/  [[java:static_analysis|Java Static Analysis]] 도구
   * 코드 품질 관리 툴   * 코드 품질 관리 툴
 +  * [[programming:static_analysis:sonarcloud|SonarCloud]]
   * [[gradle:sonarqube|Gradle SonarQube]]   * [[gradle:sonarqube|Gradle SonarQube]]
  
줄 14: 줄 15:
   * 해당 규칙이 false positive 인 경우 ''NOSONAR'' 보다는 Rule 자체를 변경하는 것이 좋겠다.   * 해당 규칙이 false positive 인 경우 ''NOSONAR'' 보다는 Rule 자체를 변경하는 것이 좋겠다.
   * ''%%//%%NOSONAR''시에 항상 왜 그럴 수 밖에 없었는지 이유를 작성하자.   * ''%%//%%NOSONAR''시에 항상 왜 그럴 수 밖에 없었는지 이유를 작성하자.
 +
 +<note warning>
 +SonarQube 의 코드 퀄리티를 만족시키기 위해서 우리 사정상 어쩔 수 없거나 SonarQube 의 경고 자체가 잘못된 경우가 있는데, 억지로 이게 맞추려고 코드를 꼬아서 만들거나 해서는 안 된다. 이게 오히려 버그를 만든다.
 +
 +이럴때는 즉각 팀에 공유하고, 다른 방안을 도출하거나, 아래의 방법으로 처리한다.
 +</note>
  
 ==== @SuppressWarnings("all") ==== ==== @SuppressWarnings("all") ====
줄 48: 줄 55:
   * 알림은 자기 계정의 **My Account -> Notifications**에서 프로젝트 단위, 혹은 전체 프로젝트를 지정할 수 있다.   * 알림은 자기 계정의 **My Account -> Notifications**에서 프로젝트 단위, 혹은 전체 프로젝트를 지정할 수 있다.
  
 +==== sonar.qualitygate.wait=true ====
 +  * [[https://docs.sonarqube.org/8.5/analysis/gitlab-cicd/|GitLab CI/CD | SonarQube Docs]]
 +  * sonarqube 8.x 에서는 client 에서 ''sonar.qualitygate.wait=true'' 프라퍼리트를 지정하면 sonarqube quality gate 통과여부를 검사하고 해당 job 을 성공/실패시킬 수 있다.
 ===== Jenkins Pipeline에서 Quality Gate 응답 대기 ===== ===== Jenkins Pipeline에서 Quality Gate 응답 대기 =====
 +  * sonarqube 8.x 에서는 불필요. sonarqube gradle/maven plugin 프라퍼티에 ''sonar.qualitygate.wait=true'' 사용.
 +  * [[https://www.jenkins.io/doc/pipeline/steps/sonar/|SonarQube Scanner for Jenkins]] 플러그인 설치 상태에서
 +    * Jenkins 설정에서 sonarqube URL / 인증등을 설정해주고서
 +    * [[https://plugins.jenkins.io/sonar-quality-gates/|sonar-quality-gates]] 플러그인은 사용 안하는게 나은듯.
   * Quality Gate 응답을 기다리고 실패이면 UNSTABLE로 변경<code groovy>   * Quality Gate 응답을 기다리고 실패이면 UNSTABLE로 변경<code groovy>
 timeout(time: 10, unit: 'MINUTES') { timeout(time: 10, unit: 'MINUTES') {
줄 59: 줄 73:
 </code> </code>
   * Declarative Pipeline 에서 아래 사용시 무조건 FAILURE로 바꿔버림<code>   * Declarative Pipeline 에서 아래 사용시 무조건 FAILURE로 바꿔버림<code>
- waitForQualityGate abortPipeline: true+stage("Quality Gate") { 
 +    steps { 
 +        timeout(time: 2, unit: 'MINUTES') { 
 +            waitForQualityGate abortPipeline: true 
 +        } 
 +    } 
 +
 </code> </code>
-  * [[https://docs.sonarqube.org/latest/project-administration/webhooks/|Administration -> Configuration -> Web Hooks]] 에서 ''http://JENKINS-SERVER/sonarqube-webhook/'' 설정 필요.+  * Sonarqube의 [[https://docs.sonarqube.org/latest/project-administration/webhooks/|Administration -> Configuration -> Web Hooks]] 에서 ''http://JENKINS-SERVER/sonarqube-webhook/'' 설정 필요.
 ===== 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.1573172216.txt.gz · 마지막으로 수정됨: 2019/11/08 09:16 저자 kwon37xi