SonarQube(http://www.sonarqube.org/ )のドキュメントを翻訳していきます。
こちらはSonarSource社の提供する下記のページの翻訳です。
http://docs.sonarqube.org/display/SONAR/Analyzing+Source+Code
SonarQubeのインストールが完了し、analyzerをインストールすれば、プロジェクトを解析する準備はできています。
解析のスコープ:ファイルの型とデータ
SonarQubeは20以上の言語の解析を実行できます。
この解析の結果は品質の尺度と課題(コーディングルール違反)になるでしょう。
しかし、解析結果として得られるものは言語によって異なります。:
- 全ての言語で、解析対象のデータはSCMプロバイダーから自動的にインポートされます。GitとSVNは自動的にサポートされます。ほかのプロバイダーはプラグインを追加する必要があります。
- 全ての言語において、ソースコードの静的解析が実行されます(Javaファイル、COBOLプログラムなど)。
- コンパイルされたコードの静的解析もいくつかの言語で実行できます(Javaの.classファイルやjar,C#の.dllファイルなど)。
- 動的解析もいくつかの言語で実行可能です(JavaやC#での単体テストの実行など)
解析のスコープ:どのファイル?
SonarQubeの解析には3つの違ったパラダイムが存在します。
全解析(もしくは通常の"解析"),プレビュー分析,そして増分分析です。
"sonar.analysis.mode"の設定値に下記の3つの解析用パラメータのうち1つを指定することで、3つのモードを切り替えます。:
- analysis -デフォルト値です。このモードでは対象になっている言語の解析可能なものは 全て解析し、結果をデータベースに保存します。
- preview - これはたとえば、Gitのmasterにmergeするかの判断など、そのコードの変更が次に進むために十分正しいか測定するために使います。
- incremental - 増分分析は開発者のローカル環境で変更されたファイルで技術的負債が増えているかを、チェックインする前に検査するために使います。
解析中
解析中はサーバからデータが要求され、対象のファイルが分析され、結果のデータがサーバに送られます。これらの相互作用はほとんどが同期して発生します。
しかし、いくつかの更新は解析の完了後に保存され、バッチファイルでサーバに送信され、非同期で処理されます。これらのバッチファイルはキューに格納されシーケンシャルに処理されます。
そのため、解析完了ログが出力されたあと、更新された値がSonarQubeのプロジェクト上で見えない期間をかなり短くすることが可能です。
解析の実行
まず、直接ダウンロードするか、アップデートセンターを通して、解析されるプロジェクトの言語のpluginをインストールします。
そして、解析方法を選びます。可能な方法は下記の通りです。
※訳注:リンク先は本家のサイトです
- Analyzing with SonarQube Runner (recommended analyzer)
- Analyzing with SonarQube Ant Task
- Analyzing with Maven
- Analyzing with Gradle
- CI Engines
互換性のマトリクス
このチャートは各解析エンジンの現在のバージョンとの下位互換を示します。
SonarQube Version | 3.7 LTS |
4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5 LTS |
5.0 |
---|---|---|---|---|---|---|---|---|
SonarQube Ant Task | 2.2 | 2.2 | 2.2 | 2.2 | 2.2 | 2.2 | 2.2 | 2.2 |
Maven | 2.2.x, 3.0.x, 3.1+ |
2.2.x, 3.0.x, 3.1+ |
2.2.x, 3.0.x, 3.1+ |
2.2.x, 3.0.x, 3.1+ |
2.2.x, 3.0.x, 3.1+ |
2.2.x, 3.0.x, 3.1+ |
2.2.x, 3.0.x, 3.1+ |
3.0.x, 3.1+ |
SonarQube Runner | 2.4 | 2.4 | 2.4 | 2.4 | 2.4 | 2.4 | 2.4 | 2.4 |
※こちらの翻訳の元のページとその著作権表示は下記の通りです
http://docs.sonarqube.org/display/SONAR/Requirements
© 2008-2014, SonarSource S.A, Switzerland.