사용자 도구

사이트 도구


java:sonarqube

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:sonarqube [2021/10/09 23:06]
kwon37xi [Jenkins Pipeline에서 Quality Gate 응답 대기]
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") ====
줄 52: 줄 59:
   * sonarqube 8.x 에서는 client 에서 ''sonar.qualitygate.wait=true'' 프라퍼리트를 지정하면 sonarqube quality gate 통과여부를 검사하고 해당 job 을 성공/실패시킬 수 있다.   * sonarqube 8.x 에서는 client 에서 ''sonar.qualitygate.wait=true'' 프라퍼리트를 지정하면 sonarqube quality gate 통과여부를 검사하고 해당 job 을 성공/실패시킬 수 있다.
 ===== Jenkins Pipeline에서 Quality Gate 응답 대기 ===== ===== Jenkins Pipeline에서 Quality Gate 응답 대기 =====
-  * sonarqube 8.x 에서는 불필요. ''sonar.qualitygate.wait=true'' 사용.+  * sonarqube 8.x 에서는 불필요. sonarqube gradle/maven plugin 프라퍼티에 ''sonar.qualitygate.wait=true'' 사용.
   * [[https://www.jenkins.io/doc/pipeline/steps/sonar/|SonarQube Scanner for Jenkins]] 플러그인 설치 상태에서   * [[https://www.jenkins.io/doc/pipeline/steps/sonar/|SonarQube Scanner for Jenkins]] 플러그인 설치 상태에서
     * Jenkins 설정에서 sonarqube URL / 인증등을 설정해주고서     * Jenkins 설정에서 sonarqube URL / 인증등을 설정해주고서
줄 66: 줄 73:
 </code> </code>
   * Declarative Pipeline 에서 아래 사용시 무조건 FAILURE로 바꿔버림<code>   * Declarative Pipeline 에서 아래 사용시 무조건 FAILURE로 바꿔버림<code>
-steps { +stage("Quality Gate") { 
-  timeout(time: 2, unit: 'MINUTES') { +    steps { 
-     waitForQualityGate abortPipeline: true +        timeout(time: 2, unit: 'MINUTES') { 
-  }+            waitForQualityGate abortPipeline: true 
 +        } 
 +    }
 } }
 +
 </code> </code>
   * Sonarqube의 [[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/'' 설정 필요.
java/sonarqube.1633788362.txt.gz · 마지막으로 수정됨: 2021/10/09 23:06 저자 kwon37xi