sonar.java.binaries
, sonar.java.libraries
이 올바로 설정이 안되어 Lombok 등에 대한 false alarm이 발생하게 된다.NOSONAR
보다는 Rule 자체를 변경하는 것이 좋겠다.//NOSONAR
시에 항상 왜 그럴 수 밖에 없었는지 이유를 작성하자.이럴때는 즉각 팀에 공유하고, 다른 방안을 도출하거나, 아래의 방법으로 처리한다.
@SuppressWarnings(“all”)
를 클래스에 붙이면 해당 클래스의 모든 규칙 위반을 무시한다.//NOSONAR
를 붙인다.@SuppressWarnings({“squid:S2078”, “squid:S2076”})
처럼 @SuppressWarnings
와 squid:S룰번호
를 사용한다.자신의sonarqube.주소/web_api
를 통해 현재 시스템이 제공하는 API 목록 및 문서 확인 가능.# 현재 이슈 목록 curl http://sonarqube.example.com/api/issues/search?componentKeys=project:module # 현재 프로젝트의 메트릭(위반 갯수 등) curl 'http://sonarqube.example.com?componentKeys=project:module&severities=BLOCKER,MAJOR,CRITICAL'
metricKeys
에 넣을 값들sonar.qualitygate.wait=true
프라퍼리트를 지정하면 sonarqube quality gate 통과여부를 검사하고 해당 job 을 성공/실패시킬 수 있다.sonar.qualitygate.wait=true
사용.stage("Quality Gate") { steps { timeout(time: 2, unit: 'MINUTES') { waitForQualityGate abortPipeline: true } } }
http://JENKINS-SERVER/sonarqube-webhook/
설정 필요.conf/sonar.properties
파일에서 데이터베이스를 지정해준다. 설정 파일에서 주석만 제거하면 될 정도로 예제가 다 나와있다.sonar.jdbc.url: the URL of the database sonar.jdbc.driver: the class of the driver sonar.jdbc.user: the username sonar.jdbc.password: the password
bin/아키텍처/실행파일
를 실행한다.-Dsonar.verbose=true
시스템 프라퍼티를 지정한다.ignoreAnnotation
, ignoreHashCode
등을 true로 변경한다.file:**/generated/**
를 통해 generated
이하 파일들 모두 제외Can not execute SonarQube analysis: Can not execute Findbugs with a timeout threshold value of 600000 milliseconds
sonar.cpd.exclusions=sonar.cpd.exclusions=/AssemblyInfo.cs,/*.g.cs,**/Mappings/*.cs