SonqrQubeで Android appの ソースコードを分析して修正してみよう。
SonqrQubeで Android appの ソースコードを分析&修正
Androidのプロジェクトで Sonar Qubeを利用した話をします。
まず、前回のポスト!でインストールしてた前提でやりますが
インストールしてない人はこちらから設定をお願いします。
http://u02.hatenablog.com/entry/2016/03/03/195653
1. Login
まず http://localhost:9000/ に入って、右上のログインボタンを押し、ログインします。
defaultのアカウントは (admin/admin)で管理者としてログインができます。
2. SonarQubeへ Android Pluginを設置
Androidのlintを分析するためにはまず、pluginをインストールする必要があります。
上の administrationのボタンを押し、
その下のタップで [System] -> [Update Center] をクリックしましょう。
ここで Availableをクリックし、Androidを探して installします。
(ちなみに、日本語パックもありますね)
ボタンを押すとこうなるので sonarをリスタートしてあげましょう
`sonar restart`
3. SCM Sensor設定
SCMの設定を行いましょう
[Administration]->[SCM]
ここをTrueにします。
こうする理由は、SonarQubeは Language別に分析してくれますが、
*.java 以外の xmlとか assetの分析の結果も見たいためですね。
4. Quality Profileを作る
Quality Profilesにはいると先インストールしたため、 Android Lintが追加されていることを確認できます。
ここでやることは、
Sonar Wayの defaultが javaになっているため、
Android Lintのプロジェクトをcopyし、javaの検証も一緒に行うための設定をします。
まず [Android Lint]をクリックして、copyします(右上)
名前は [Android Lint+Sonar way]にしました。
で、作ったプロジェクトをクリックすると下に [Change Parent] というボタンがあります。
ここを押しましょう
親を sonar wayにします。
これで、lintとsonar wayを合わせたprofileを作りました。
とりあえず、これを defaultにします。
これで準備はokですね。
5. GRADLEの設定
gradleprofileに次みたいに設定を保存しときます。
systemProp.sonar.host.url=http://localhost:9000/
systemProp.sonar.login=admin
systemProp.sonar.password=admin
あとは、Gradlefileの設定を行ってみます。
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath "org.sonarqube.gradle:gradle-sonarqube-plugin:1.1"
}
}
apply plugin: 'org.sonarqube'
runSonarQube {
properties {
property "sonar.sourceEncoding", "UTF-8"
property "sonar.projectKey", "davidlab:sonartest"
property "sonar.projectName", "SonarTest"
property "sonar.projectVersion", "0.1"
properties["sonar.sources"] += "src/main"
property "sonar.java.binaries", "build/intermediates/classes/debug"
property "sonar.android.lint.report", "build/outputs/lint-results.xml"
}
}
こういう感じで設定して、一応lintを使いましょう。
gradle lintでできると思います。
android studioは簡単にここでクリックすることでできます
あとは otherの sonarqubeを事項します。
これで情報がsonarqubeに載っていることが確認できます。
6.issueの修正
確認もできたし終わりっ!と。。。
しようと思ったが、実際にissueの修正をする方法を書いてみます。
ここでプロジェクトをクリックすると、issueが見えます。
5個がありますね
こんな風に情報がでます。
右の方の [>] を押してみると詳しいソースコードが見えます。
まずは 使ってない importがあるよーがでますね
あとは こんな風にでるのです。
なんにゃのーと思うのであれば [...]をクリックしてみると詳しい情報が見えます。
javaのconventionで staticが先に来るのがいいよーって言ってますね
あとは static finalだから 大文字にするのがいいのでは?とい指摘がありますね
同じく[...]を押して確認してみます。
こんな風にsoulutionが見えます。
まじいいですねー
あとは リスナーをlambda式でしてほしいというんですが、修正したくないので
resolve as won't fixをします。javaのチェックなのでこんな問題もありますね。
最後に
onClickが宣言されているが何もしてない!事を指摘しています。
そして、もう一度 lintをして、sonarに送ります。
issueを見るとこんな感じで修正されたことが確認できますね!
では、長くなりましたが、ここまでです。
またの時に!