2013-09-27 241 views
10

Tôi có một dự án Maven với nguồn Java và nguồn thử nghiệm Scala. Tôi tạo phạm vi mã bằng cách sử dụng Jacoco trong giai đoạn verify. Khi tôi cố gắng để chạy các mục tiêu sonar hoặc trong giai đoạn xác minh bằng cách thêm một thực hiện, hoặc bằng cách chạy mvn verify sonar:sonar, tôi kết thúc với thư mục kiểm tra được bổ sung hai lần bởi Sonar:Sonar Maven Plugin: Làm cách nào để loại trừ các thư mục nguồn thử nghiệm?

[INFO] [11:15:34.756] Test directories: 
    [INFO] [11:15:34.756] /Users/xxx/Documents/workspace/misc/xxx/src/test/scala 
    [INFO] [11:15:34.756] /Users/xxx/Documents/workspace/misc/xxx/src/test/scala/../scala 

mà kết quả trong việc phân tích thất bại với lỗi sau:

Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.1:sonar (default-cli) on project kv-mapper: Can not execute SonarQube analysis: Unable to read and import the source file : '/Users/xxxx/Documents/workspace/misc/xxx/src/test/scala/../scala/xxx/xxxxx/xxx/xxx/xxxxx/xxxxxx.java' with the charset : 'UTF-8'. Duplicate source for resource 

My pom.xml (cho Sonar) trông như thế này.

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>sonar-maven-plugin</artifactId> 
     <version>${sonar.plugin.version}</version> 
     <!-- no default executions --> 
     <configuration> 
      <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin> 
      <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
      <sonar.language>java</sonar.language> 
      <sonar.jacoco.itReportPath> 
       ${basedir}/target/jacoco.exec 
      </sonar.jacoco.itReportPath> 
      <sonar.exclusions> 
       **/test/* 
      </sonar.exclusions> 
     </configuration> 
    </plugin> 

Làm thế nào để cấu hình Sonar cho một trong hai:

  • loại trừ thư mục test/scala hoàn toàn? hoặc
  • xóa thư mục trùng lặp?

Trả lời

3

Hoặc thêm bước để xóa thư mục trước khi chạy phân tích SonarQube. Hoặc đặt loại trừ trên tệp thử nghiệm. Xem

+0

Đó là chính xác những gì tôi đã làm trong pom.xml (xem ở trên) với tham số sonar.exclusions. Bạn có một mẫu pom tôi có thể xem? – Siddhu

+1

Bạn phải đặt loại trừ trên tệp thử nghiệm (không phải trên mã nguồn): thuộc tính sonar.tests.exclusions –

14

sonar.test.exclusions nên được sử dụng thay vì sonar.exclusions

<sonar.test.exclusions> 
    **/test/* 
</sonar.test.exclusions> 
+2

Cảm ơn bạn đã đăng câu trả lời chứ không phải liên kết. – JamesQMurphy