SonarQube 디렉토리 제외


132

Sonar가 분석하는 디렉토리를 제외하려고합니다. sonar-project.properties파일 에 다음 속성이 정의되어 있습니다.

sonar.sources=src/java
sonar.exclusions=src/java/test/****/*.java

내가 가진 디렉토리 구조는 다음과 같습니다

src/java/dig
src/java/test/dig

소나 러너를 실행하면 다음 정보가 표시됩니다.

 INFO  - Excluded sources:
 INFO  -   src/java/test/**/*.java
 INFO  - Excluded tests:
 INFO  -   **/package-info.java

그러나 분석 결과를 확인할 때 테스트 디렉토리 내부의 모든 패키지가 여전히 있습니다.

Sonar에게 테스트 디렉토리와 그 안의 패키지를 분석하지 말라고 지시하면됩니다.


3
해결책을 찾았습니다 : sonar.exclusions = test / ** / *. java
user1982350

그러나 테스트 분석을 피하려면 예를 들어 mvn clean package -DskipTests
Eddú Meléndez

답변:


121

다음과 같이 해보십시오 :

sonar.exclusions=src/java/test/**

4
와일드 카드에 Ant fileglob 패턴을 사용하십시오. 여기에 좋은 설명은 다음과 같습니다 stackoverflow.com/a/86915/748524
스테판

다음은 명령 행 옵션 정의입니다. docs.sonarqube.org/display/SONAR/…
N0dGrand87

4
이것을 보는 사람은 src/test/java대신에 당신을 가지고 있는지 확인하십시오 src/java/test/.
Faraz

C #에서 메소드를 제외하는 방법
자연 vetri

이것은 정규 표현식으로 취급되지 않으며 전체 프로젝트에 적용되어 sonar.exclusions=node_modules/**중첩 된 node_modules 폴더를 배제하지 않으므로 sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**명시 적으로 제외시켜야합니다.
Christian Bartram

68

아래 구성 (쉼표로 구분 된 폴더 경로)을 사용하여 여러 디렉토리를 제외시킬 수 있습니다.

sonar.exclusions=system/**, test/**, application/third_party/**, application/logs/**

소나 러너를 실행하는 동안 나는 로그에 다음을 얻었습니다.

Excluded sources: 
  system/**
  test/**
  application/third_party/**
  application/logs/**

18
제외 된 메시지도 표시되지만 파일은 여전히 ​​분석됩니다.
바스

Teamcity 매개 변수에서 팁을 사용했지만 (-Dsonar.exclu ...) 앞에 -D를 삽입했습니다. 여기서 작동합니다. :-)
Maciel Bombonato

스캔에서 모든 * .html 파일을 제외시키는 방법은 무엇입니까? 이것을 시도 sonar.exclusions=**/bin/**,*.html했지만 스캔에도 여전히 html 파일이 필요합니다. HTML 파일은 모두 여러 위치에있는 하위 폴더이며 실제 경로 맵과 함께 여기에 하위 폴더 수준을 추가하면 더 효과적입니다. 모든 * .specific_file_type을 검사에서 제외 할 수있는 방법이 있습니까?
Elamurugan


13

전체 폴더를 건너 뛰려면 다음을 사용할 수 있습니다.

sonar.exclusions=folderName/**/*

그리고 하나의 특정 파일 만 있다면 완전한 경로를 제공하십시오.

제외하고 여기에 추가해야하는 모든 폴더


2
그 대답과 sonar.exclusions=folderName와 의 차이점은 무엇입니까 sonar.exclusions=folderName/**? 감사합니다
payne

*-0 개 이상의 문자 일치 **-0 개 이상의 디렉토리 일치? -하나의 캐릭터와 일치
Keerthi Bandara

12

또 다른 구성 옵션은 maven 속성을 추가하는 것 sonar.exclusions입니다. 아래는 정적 jquery 디렉토리와 정적 pdf 뷰어 디렉토리를 제외한 샘플 pom 파일입니다.

<project >
<modelVersion>4.0.0</modelVersion>
<artifactId>my Artifact</artifactId>
<!-- Enviroment variables can be referenced as such: ${env.PATH} -->
<packaging>war</packaging>
<url>http://maven.apache.org</url>

<properties>

    <junit.version>4.9</junit.version>
    <mockito.version>1.9.5</mockito.version>
    <jackson.version>1.9.7</jackson.version>
    <powermock.version>1.5</powermock.version>

    <!--Exclude the files Here-->
    <sonar.exclusions>src/main/webapp/static/jquery_ui/*,src/main/webapp/static/pdf-viewer/*,src/main/webapp/static/pdf-viewer/**,src/main/webapp/static/pdf-viewer/**/*</sonar.exclusions>
</properties>


7

가장 쉬운 방법은 서버 (localhost : 8080)를 시작한 후 서버 URL로 이동 한 다음 관리자로 로그인하고 설정> 제외> 소스 파일 제외로 이동하십시오-여기에 패키지를 추가하십시오. 서버를 다시 시작하십시오.


2

어떤 버전의 소나를 사용하고 있습니까? " sonar.skippedModules = yourmodulename " 이라는 옵션이 있습니다 .

전체 모듈을 건너 뜁니다. 그러니 알아 두세요.


12
WARN- 'sonar.skippedModules'특성은 버전 4.3 이후 더 이상 사용되지 않으므로 더 이상 사용해서는 안됩니다.
Zheng Kai

1

Sonar에서 파일을 제외하면 Jacoco 플러그인에 대해서도 동일하게 수행하십시오.

<configuration>
<excludes>     
<exclude>com/acme/model/persistence/entity/TransactionEntity*</exclude>
<exclude>com/acme/model/persistence/ModelConstants.class</exclude>
</excludes>
</configuration> 

1

쉼표로 구분 된 폴더 경로 추가 sonar.exclusions=**/abc/**,**/def/**

이것은 각도 프로젝트에서 일했습니다.


1

파일과 폴더를 제외 할 위치와 방법을 모두 찾는 Azure DevOps 사용자 인 경우 다음 단계로 넘어갑니다.

  1. 파이프 라인 편집
  2. "SonarQube에 대한 분석 준비"작업이 추가되어 있는지 확인하십시오. 이를 구성하는 데 도움이 필요하면 다른 곳을 찾아야합니다.제안 : 관리 링크가없는 경우 UI 파이프 라인 편집기와 yaml 편집기를 사용하십시오. 현재 yaml에서 UI로 변환 할 수있는 방법이 없습니다. 파이프 라인을 다시 만드십시오. git을 사용하는 경우 repo의 루트에서 yaml을 삭제할 수 있습니다.
  3. "SonarQube 분석 준비"작업의 '고급'섹션에서 제외를 추가 할 수 있습니다. 특정 제외 형식에 대해서는 다른 사람이 제공 한 조언을 참조하십시오.

예:

# Additional properties that will be passed to the scanner, 
# Put one key=value per line, example:
# sonar.exclusions=**/*.bin
sonar.exclusions=MyProjectName/MyWebContentFolder/**

참고 : 경로를 잘 모르는 경우 sonarqube로 이동하여 프로젝트를 보거나 전체 또는 새로운 '코드 냄새'를 볼 수 있으며 필요한 경로는 각 문제 그룹 위에 나열됩니다. 파일의 전체 경로를 가져 오거나 다음 예제와 같이 와일드를 사용할 수 있습니다.

  • MyProjectName / MyCodeFile.cs
  • MyProjectName / **

'코드 분석 실행'태스크가 추가되지 않은 경우이를 수행하여 '빌드 빌드 ** / *. sln'태스크 다음에 배치하십시오.

저장하고 대기열에 넣은 후 sonarqube 서버를 확인하여 제외가 작동했는지 확인하십시오.


0

sonar-project.properties 파일에이 줄을 추가하십시오

예 : sonar.exclusions = src / *. java 폴더를 제외하려면주의하십시오. 폴더 안에 파일이 먼저 제외되거나 파일을 하나씩 추가 해야하는 파일이 있습니다. 예를 들어 아래와 같은 폴더가 있다고 상상하십시오. :

src/app.java src/controllers/home.java src/services/test.java

이 작업을 수행해야합니다. sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

그것은 나를 위해 일했다


0

당신도 똑같이 할 수 있습니다 build.gradle

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java"
  }
}

더 많은 파일 / 디렉토리를 제외하려면 다음을 수행하십시오.

sonarqube {
properties {
    property "sonar.exclusions", "**/src/java/test/**/*.java, **/src/java/main/**/*.java"
  }
}

-1

이것은 나를 위해 일했다 :

sonar.exclusions=src/**/wwwroot/**/*.js,src/**/wwwroot/**/*.css

"src"폴더 (프로젝트 루트)의 하위 디렉토리 중 하나로 나타나는 "wwwroot"폴더의 하위 디렉토리 아래에있는 .js 및 .css 파일은 제외합니다.


이것은 다른 답변과 크게 다르지 않습니다. 다른 답변과 마찬가지로 이중 별 와일드 카드를 사용합니다. 질문에서 제외하려는 내용과 일치하지 않습니다.
Stephen Ostermiller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.