これらのものを一緒に機能させようとする「オーバーフロー」が本当にありました。ここからの指示に従いました: http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin そして、最終的にAndroid Lint plugin 1.1を含むSonarQube 5.1.1サーバーを取得しましたインストール済み。次に、マルチモジュールGradleビルドをSonarQubeプラグインで動作するように構成しました。以下のルート構成のコードフラグメントを参照してください。
plugins {
id 'org.sonarqube' version '1.0'
}
sonarqube {
properties {
property 'sonar.Host.url', 'sonarqube-server:9000'
property 'sonar.jdbc.url', 'jdbc:mysql://sonarqube-db:3306/sonar?useUnicode=true&characterEncoding=utf8'
property 'sonar.jdbc.driverClassName', 'com.mysql.jdbc.Driver'
property 'sonar.jdbc.username', 'sonar'
property 'sonar.jdbc.password', 'sonar'
property 'sonar.sourceEncoding', 'UTF-8'
property 'sonar.login', 'admin'
property 'sonar.password', 'admin'
property 'sonar.profile', 'Android Lint'
property 'sonar.import_unknown_files', true
property 'sonar.Android.lint.report', 'build/outputs/lint-results.xml'
}
}
その後、lint sonarqube
taskを実行して分析を実行しました。その結果、「retrolambda」プロジェクト(Java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression
)に関するLintエラーが大量に発生しました。これは非常に正常であり、発見された問題の説明を含む各モジュールごとにlint-results.xml
(HTMLバージョンに付属)ファイルです。レポートでは、8つのエラーと434の警告が見つかったと述べています。しかし、sonarqubeプラグインがSonarQubeサーバーに結果をアップロードしようとしたときに問題が発生しました。ログには「ファイルが見つかりません」および「ルールが見つかりません」というメッセージがいっぱいでした。そして、処理が終了したとき、SonarQubeサーバー上の私のプロジェクトについて報告された問題はありませんでした。
そして、私は、何がうまくいかなかったのだろうと思っていますか?パスを確認しましたが、すべてのファイルがそこにありました。私は到達可能なすべての議論に目を通しましたが、私の設定は正しいようで、すべてを正しく行います。誰か手がかり、私が見逃したもの、チェックする必要があるものはありますか?提案やアイデアは大歓迎です。
外部のSonarQube Runnerを使用してlintデータをインポートする方法があれば、このツールはGradleプラグインよりも予測可能で安定していると思われるので、私も喜んでいます。
マルチモジュールで成功しましたAndroidプロジェクト。完全なビルドファイルはスペースを取りすぎるため、関連する部分のみをここに示します。
親プロジェクトのbuild.gradleで設定:
buildscript {
...
dependencies { classpath 'com.Android.tools.build:gradle:1.5.0'
...
}
plugins { id "org.sonarqube" version "1.1" }
アプリプロジェクト(および他のすべての子)で以下を設定します。
sonarqube {
properties {
property "sonar.profile", "Android Lint"
property "sonar.sources", "./src/main/Java"
}
}
これが、プロジェクトの分析を開始するためのSonarQubeプラグインの最小セットアップでした。