SonarQubeの
python の
どうも、
それを
使ってみた
環境情報と 前提
前提
インストールと、
以前、
環境情報
- OS Version
sw_vers ---------------------------- ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1108 ----------------------------
SonarQube の
Version 6.1 python/Django の
Version Python 3.5.1 Django (1.10)
SonarQube の Python Plugin の インストール
検索すると、
インストール手順
ログイン後に、
設定を クリック 設定>システム>アップデータセンター>Available で、
Python を インストール既に インストトール済なので、 [Installed]の 方に います。
plugin で できる こと
SonarPython - Plugins - SonarQube を
以下の
nose テスト結果レポートの
収集、 作成 カバレッジレポートの
収集、 作成 pylintレポートの
収集、 作成 独自ルールの
作成
今回は、pylintレポートの<wbr>収集、<wbr>作成
を
SonarQube で pylint ルールを ONに する
ここが
SonarPython の
pylint で
品質プロファイルで、Sonar way
を
Deprecated
以外の
品質プロファイル
プラグインの
このルールが
sonar-scannerの 設定
Java だと
sonar-scanner
の
sonar-scannerの
sonar-scannerの インストール
brew install sonar-scanner --------------------------- /usr/local/Cellar/sonar-scanner/2.8: 8 files, 546.3K, built in 11 seconds ---------------------------
sonar-project.propertiesの 作成
解析対象の
sonar-project.properties
sonar.projectKey=yourprojectkey sonar.projectName=yourprojectname sonar.projectVersion=0.0.1 sonar.sources=yourprojectsource1,yourprojectsource2 sonar.sourceEncoding=UTF-8 sonar.language=py #----------------------------------------- #sonar.python.pylintを何故か認識してくれないので、コメントアウト。 #スクリプト上から、pylintを実行する #----------------------------------------- #sonar.python.pylint=/usr/local/bin/pylint sonar.python.pylint.reportPath=pylint-reports/pylint-result.txt #----------------------------------------- #テスト結果レポートの設定 #----------------------------------------- #sonar.python.xunit.reportPath=nosetests.xml #sonar.python.xunit.skipDetails=true #----------------------------------------- #カバレッジレポートの設定 #----------------------------------------- #sonar.python.coverage.reportPath=coverage.xml #sonar.python.coveragePlugin=cobertura
設定値の
説明
NO | キー値 | 説明 |
---|---|---|
1 | sonar.projectKey | SonarQube上で表示されるプロジェクトのキー値 DBに登録時にキーになる。 |
2 | sonar.projectName | SonarQube上で表示されるプロジェクト名 |
3 | sonar.projectVersion | プロジェクトのVersion番号 |
4 | sonar.sourceEncoding | ソースコードのエンコーディング指定 |
5 | sonar.language | ソースコードのプログラム言語設定 |
6 | sonar.python.pylint | pylintのパス(設定はしたが、したことで自動実行はされません。。何か設定が足りないのかも) |
7 | sonar.python.pylint.reportPath | pylintの結果レポートのパス |
8 | sonar.python.xunit.reportPath | noseの結果レポートファイルのパス |
9 | sonar.python.xunit.skipDetails | テスト結果の詳細を出力する/しない(だと思います) |
10 | sonar.python.coverage.reportPath | カバレッジレポートのファイルパス |
11 | sonar.python.coveragePlugin | カバレッジプラグインとして何を使うか |
pylintの 設定
インストール
SonarQube の
pylintに
pip install pylint
.pylintrcの 作成
pylint の
これは、
以下の
WARN: Pylint rule 'C0103' is unknown in Sonar WARN: Pylint rule 'C0111' is unknown in Sonar
ルール上、
rule.xmlに
一概に
設定ファイル雛形の
作成 pythonプロジェクトの ルートディレクトリで、
以下のコマンドを 実行します。
これで、設定ファイルの 雛形が 作成されます。 pylint --generate-rcfile > .pylintrc
disable に
除外ルールを 記載する。
disableに除外ルールを カンマ区切りで 記載します。
C0103、R0201等が、 unknown in Sonar
が出力された ルールに なります。
デフォルトで、disable定義された 記載が ありますが、
あまりにも 長いので、 便宜上削除、 実ファイルには 記載されています。 disable=C0103,C0111,C0113,C0122,C0301,C0305,C0325,C0413,E0704,R0101,R0201,R0801,R0912
sonar-scanner の 実行スクリプト作成
以下のような
sonar-scannerの-D
オプション指定は
なんとなく
pylintの--msg-template
指定は、
の
この
- run_sonar_scanner.sh
#!/bin/sh rm -f pylint-reports/pylint-result.txt pylint ./yourprojectsource1/ -r n --msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" >> pylint-reports/pylint-result.txt pylint ./yourprojectsource2/ -r n --msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" >> pylint-reports/pylint-result.txt sonar-scanner -D sonar-project.properties
SonarQubeの 起動
Localの
sonar console
起動していないと、
ERROR: Error during SonarQube Scanner execution org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarQube at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$1.run(IsolatedLauncherFactory.java:84) at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$1.run(IsolatedLauncherFactory.java:71) at java.security.AccessController.doPrivileged(Native Method)
スクリプト実行
./run_sonar_scanner.sh ================================ INFO: Task total time: 8.367 s INFO: ------------------------------------------------------------------------ INFO: EXECUTION SUCCESS INFO: ------------------------------------------------------------------------ INFO: Total time: 10.515s INFO: Final Memory: 47M/222M INFO: ------------------------------------------------------------------------ ================================
これで、
以上です。
コメント