SonarQube Loại trừ một thư mục


132

Tôi đang cố gắng loại trừ một thư mục khỏi bị phân tích bởi Sonar. Tôi có các thuộc tính sau được định nghĩa trong sonar-project.propertiestệp của mình :

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

Cấu trúc thư mục tôi có là:

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

Khi tôi chạy sonar-runner tôi nhận được thông tin sau:

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

Nhưng khi tôi kiểm tra kết quả phân tích, tất cả các gói trong thư mục kiểm tra vẫn còn đó.

Tôi chỉ cần nói với Sonar không phân tích thư mục thử nghiệm và bất kỳ gói nào bên trong nó.


3
Tôi đã tìm thấy giải pháp: sonar.exinating = test / ** / *. Java
user1982350

Nhưng nếu bạn muốn tránh phân tích kiểm tra, bạn có thể thử sử dụng gói sạch mvn
Eddú Meléndez

Câu trả lời:


119

Hãy thử một cái gì đó như thế này:

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

4
Đảm bảo sử dụng mẫu Ant fileglob cho ký tự đại diện. Đây là một lời giải thích tốt: stackoverflow.com/a/86915/748524
Stephan

Dưới đây là định nghĩa tùy chọn dòng lệnh docs.sonarqube.org/display/SONAR/ Khăn
N0dGrand87

4
Bất cứ ai nhìn thấy điều này, hãy chắc chắn rằng bạn có src/test/javathay vì src/java/test/.
Faraz

Cách loại trừ các phương thức trong c #
thiên nhiên vetri

Điều quan trọng cần lưu ý là điều này không được coi là biểu thức chính quy và được áp dụng trên toàn bộ dự án của bạn sonar.exclusions=node_modules/**sẽ KHÔNG loại trừ các thư mục node_modules lồng nhau mà bạn sẽ cần phải làm sonar.exclusions=node_modules/**, /some/path/to/nested/node_modules/**để loại trừ chúng một cách rõ ràng
Christian Bartram

68

Tôi có thể loại trừ nhiều thư mục bằng cách sử dụng cấu hình bên dưới (đường dẫn thư mục được phân tách bằng dấu phẩy):

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

Và trong khi chạy người chạy sonar, tôi đã nhận được những điều sau đây trong nhật ký:

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

18
Tôi nhận được tin nhắn loại trừ quá, nhưng các tập tin vẫn được phân tích.
Sabas

trong tham số Teamcity tôi đã sử dụng mẹo của bạn, nhưng chèn -D trước (-Dsonar.exclu ...). Hoạt động ở đây. :-)
Maciel Bombonato

Làm cách nào để loại trừ tất cả các tệp * .html khỏi quá trình quét tại đây? Đã thử điều này sonar.exclusions=**/bin/**,*.htmlnhưng nó vẫn mất các tệp html trong quá trình quét. Các tệp Html là tất cả các thư mục con ở một số vị trí và việc thêm ở cấp thư mục con ở đây với bản đồ đường dẫn thực tế sẽ có nhiều công việc hơn. Có cách nào để chúng tôi có thể loại trừ tất cả * .specific_file_type khỏi bị quét không?
Elamurugan


13

Nếu chúng ta muốn bỏ qua toàn bộ thư mục sau đây có thể được sử dụng:

sonar.exclusions=folderName/**/*

Và nếu chúng ta chỉ có một tệp cụ thể, chỉ cần cung cấp đường dẫn đầy đủ.

Tất cả các thư mục cần được loại trừ và được thêm vào đây.


2
Sự khác biệt giữa câu trả lời và sonar.exclusions=folderNamevà là sonar.exclusions=folderName/**gì? Cảm ơn
payne

* - Khớp 0 hoặc nhiều ký tự ** - Ghép 0 hoặc nhiều thư mục? - Ghép một nhân vật duy nhất
Keerthi Bandara

12

Một tùy chọn cấu hình khác là thêm thuộc tính maven sonar.exclusions. Dưới đây là một tệp pom mẫu với các loại trừ của thư mục jquery tĩnh và thư mục trình xem pdf tĩnh.

<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

Cách dễ nhất là truy cập URL máy chủ sau khi khởi động máy chủ (localhost: 8080) sau đó đăng nhập với tư cách quản trị viên, Chuyển đến cài đặt> Loại trừ> Loại trừ tệp nguồn - Thêm gói của bạn vào đây. Khởi động lại máy chủ.


2

bạn đang sử dụng phiên bản sonar nào? Có một tùy chọn gọi là " sonar.skippedModules = yourmodulename ".

Điều này sẽ bỏ qua toàn bộ mô-đun. Vì vậy, hãy nhận thức về nó.


12
WARN - thuộc tính 'sonar.skippedModules' không được dùng nữa kể từ phiên bản 4.3 và không nên sử dụng nữa.
Trịnh Khải

1

Chỉ cần đề cập rằng một khi bạn loại trừ các tệp khỏi Sonar, hãy thực hiện tương tự cho plugin Jacoco:

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

1

Thêm đường dẫn thư mục được phân tách bằng dấu phẩy sonar.exclusions=**/abc/**,**/def/**

Điều này làm việc trong một dự án góc


1

Nếu bạn là người dùng Azure DevOps đang tìm kiếm cả vị trí và cách loại trừ các tệp và thư mục, thì đây là:

  1. Chỉnh sửa đường ống của bạn
  2. Hãy chắc chắn rằng bạn đã thêm nhiệm vụ "Chuẩn bị phân tích về SonarQube". Bạn sẽ cần phải tìm nơi khác nếu bạn cần trợ giúp cấu hình này. Đề xuất: Sử dụng trình soạn thảo đường ống UI so với trình soạn thảo yaml nếu bạn thiếu liên kết quản lý. Hiện tại, không có cách nào để chuyển đổi sang UI từ yaml. Chỉ cần tạo lại đường ống. Nếu sử dụng git, bạn có thể xóa yaml khỏi thư mục gốc của repo.
  3. Trong phần 'Nâng cao' của tác vụ "Chuẩn bị phân tích trên SonarQube", bạn có thể thêm các loại trừ. Xem lời khuyên được đưa ra bởi những người khác cho các định dạng loại trừ cụ thể.

Thí dụ:

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

Lưu ý: Nếu bạn không chắc chắn về đường dẫn, bạn có thể truy cập sonarqube, xem dự án của bạn, xem tất cả hoặc mới 'Mùi mã' và đường dẫn bạn cần được liệt kê ở trên mỗi nhóm vấn đề. Bạn có thể lấy đường dẫn đầy đủ đến một tệp hoặc sử dụng ký tự đại diện như các ví dụ sau:

  • MyProjectName / MyCodeFile.cs
  • Tên dự án / **

Nếu bạn không có tác vụ 'Chạy phân tích mã' được thêm vào, hãy làm điều đó và đặt nó ở đâu đó sau tác vụ 'Xây dựng giải pháp ** / *. Sln'.

Lưu và xếp hàng và sau đó kiểm tra máy chủ sonarqube của bạn để xem các loại trừ có hoạt động không.


0

thêm dòng này vào tập tin sonar-project.properIES của bạn

ví dụ: sonar.exinating = src / *. java hãy cẩn thận nếu bạn muốn loại trừ một thư mục và bên trong thư mục đó có một tệp trước tiên bạn phải loại trừ các tệp hoặc thêm từng tệp một, ví dụ như hãy tưởng tượng có một thư mục như bên dưới :

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

bạn phải làm điều này: sonar.exclusions=src/app.java,src/controllers/*.java,src/services/*.java

Nó làm việc cho tôi


0

Bạn có thể làm tương tự với build.gradle

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

Và nếu bạn muốn loại trừ nhiều tập tin / thư mục hơn thì:

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

-1

Điều này làm việc cho tôi:

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

Nó loại trừ mọi tệp .js và .css trong bất kỳ thư mục con nào của thư mục "wwwroot" xuất hiện dưới dạng một trong các thư mục con của thư mục "src" (gốc dự án).


Điều này dường như không khác biệt đáng kể so với các câu trả lời khác. Nó sử dụng các ký tự sao đôi giống như nhiều câu trả lời khác. Nó không phù hợp với những gì câu hỏi đã cố gắng loại trừ.
Stephen Ostermiller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.