2014-04-04 16 views
5

Tôi gặp sự cố sau: Tôi đã cài đặt SonarQube và Trình cắm Android với Tiểu sử chất lượng "Android Lint". Khi tôi thực thi kịch bản build.gradle với tiểu sử "Android Lint" của mình, plugin sonar-runner hoạt động tốt, nhưng ở SonarQube tôi có thể thấy không tìm thấy vấn đề nào phù hợp, chỉ bằng 0.Sonar Android Lint không tìm thấy sự cố nào phù hợp với

Tuy nhiên, khi tôi bao gồm một cấu hình khác - không phải là "Android Lint" - tôi có thể thấy nhiều vấn đề. Cũng trong SDK Android của tôi khi áp dụng nó lint riêng của tôi có thể thấy 157 vấn đề. Nó có thể là gì?

sonar - version 3.7.4; 
android plugin - version 0.1

Trả lời

3

tài sản sonar.sources của bạn phải trỏ đến thư mục gốc của AndroidManifest.xml tập tin. Ví dụ. nếu AndroidManifest.xml tập tin của bạn nằm ở src/main sau đó tập tin build.gradle của bạn nên bao gồm:

sonarRunner { 
    sonarProperties { 
     ... 
     property "sonar.sources", "src/main" 
     property "sonar.profile", "Android Lint" 
     ... 
    } 
} 

Nếu bạn cần thêm đường dẫn trong sonar.sources bạn có thể đặt chúng như một danh sách bằng dấu phẩy.

Bạn có thể tìm hiểu cách Sonar Android Plugin xác định xem có nên chạy phân tích trong source code của nó hay không.

0

Thật không may nếu bạn chỉ trỏ sonar.sources vào src/main, bạn sẽ gặp vấn đề với tất cả nguồn của bạn vì bạn rất có thể không mave minSdkVersion và targetSdkVersion (nó xuất phát từ gradle). Tôi đã cố gắng thiết lập nguồn của tôi có một số điều như:

build/trung gian/bó/release, src/main/java

Nhưng tôi vẫn nhận được một số tiền inordinate (không hợp lệ) lỗi do các cấp API .

+0

Bạn có thể tìm thấy một defini tive giải pháp? – FoY

+1

Không, chúng tôi đang sử dụng đầu ra LINT trong Hudson/Jenkins và sử dụng Sonar để phân tích truyền thống, không phải Android. Kinda hút nhưng nó là những gì nó được. –

1

thay đổi thuộc tính sonar của bạn như thế này:

apply plugin: "org.sonarqube" 

sonarqube { 

properties { 

    property "sonar.projectName", "appa" 

    property "sonar.projectKey", "appa_app" 

    property "sonar.projectVersion", "1.0" 

    property "sonar.analysis.mode", "publish" 

    property "sonar.language", "java" 

    property 'sonar.sourceEncoding', "UTF-8" 

    property "sonar.sources", "./src/main" 

    //property "sonar.exclusions", "**/*Entity.java" 

    // property "sonar.exclusions", "src/main/java/com/apparkb/model/**, **/*Entity.java" 

    property "sonar.host.url", "http://192.168.21.33:9000" 

    property "sonar.login", "admin" 

    property "sonar.profile", "testlint"//use your quality profile instead 

    property 'sonar.import_unknown_files', true 

    property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml" 

    property "sonar.password", "admin" 

    property "sonar.java.binaries", "build/" 



} 
} 

Để tạo lint-quả-debug.xml bạn sẽ phải chạy lệnh dưới đây về thiết bị đầu cuối thu:

./gradlew lint 

Nó sẽ tạo báo cáo XML còn thiếu. Hãy cẩn thận, nó có thể tạo ra một báo cáo cho mỗi biến thể xây dựng (Debug theo mặc định sẽ tạo ra xây dựng/đầu ra/lint-results-debug.xml). Vì vậy, bạn có thể gọi lintDebug, lintRelease ... phụ thuộc vào biến thể xây dựng của bạn.

Và thay đổi các thuộc lint để:

lintOptions { // set to true to turn off analysis progress reporting by lint 

    quiet true 

    // if true, stop the gradle build if errors are found 

    abortOnError false 

    // do not ignore warnings 

    warningsAsErrors true 
} 

bây giờ nếu bạn chạy

./gradlew sonarqube 

bạn sẽ nhận được kết quả thể hiện trên thực tế các báo cáo tập tin địa phương của nó đó là thực sự bị tổ chức trên máy chủ enter image description here

Các vấn đề liên quan