Sonar-オープンソースプロジェクトとコード品質の監視
Olivier Gaudin,Freddy Mallet,SonarSource, http://www.sonarsource.com
ソナーとは何ですか?
Sonar(現在はSonarQubeと呼ばれています)は、ソースコードの品質を管理するために開発チームが使用するオープンソースのプラットフォームです。 Sonarは、最小限の労力で誰もがコード品質管理にアクセスできるようにするという主な目的を念頭に置いて開発されました。
そのため、Sonarはコードアナライザ、レポートツール、欠陥ハンティングモジュール、TimeMachineをコア機能として提供しています。 しかし、それはまた、開発者だけでなく、管理者のニーズに対処することにより、Sonarはソースコードの品質のためのワンストップショップ作り、機能(利用可能な35以上のプラグイン)を拡張するためにコミュニティを可能にするプラグインのメカニズムを搭載しています。
言語の面では、SonarはコアのJavaの分析をサポートしていますが、レポートエンジンは言語に依存しないため、プラグイン(オープンソースまたは商用)を介してJavaScript、PHP、PL/SQL、Cobolの分析もサポートしています。
バージョン2.0以降、ソナーは7軸の品質をカバーすることができます。:
- 重複コード
- コーディング標準
- 単体テスト
- 複雑なコード
- 潜在的なバグ
- 設計とアーキテクチャ
ソナーは、一回限りの監査に使用できますが、会社のコード品質に関するグローバルな継続的改善戦略をサポートするように設計されているため、共有セントラルとして使用できます品質管理のためのリポジトリ。
ウェブサイトhttps://www.sonarqube.org/
製品バージョン:Sonar2.0
ライセンス: LGPL V3
サポート:https://www.sonarsource.com/support/
プラグイン: https://docs.sonarqube.org/display/PLUG/Plugin+Library
ソースコードの品質を管理する必要があるのはなぜですか?
よく書かれたプログラムは、機能を実装するコストがプログラムの寿命を通して一定であるプログラムです-Itay Maman
簡単なイントロとして、これは私が Abadly書かれたプログラムは、機能を実装するコストが時間の経過とともに増加するプログラムです。
それは悪いですね?
私たちはすべて、最先端のアプリケーションをゼロから開発することを目的とした新しいプロジェクトが始まる状況を見てきました。 すべてが非常に速くなります;最初、第二、第三のリリースとその後allof突然、チームの速度が減少し始めます。 第四のリリースは延期されています三回目のために、何かを修正することは何かを壊します。..
ここで何が起こっているのですか? 症状を考えると、チームは他のものの中で技術的負債に苦しんでいると仮定することができ、利害関係者はそれを認識していないため、それに対処することはできません。
しかし、これはおそらくプロジェクトが新しく、可視性があり、誰かがそれを世話しようとしているので解決されます(少なくともそう願っています)。
しかし、この例は、開発が6ヶ月前に開始されたアプリケーションではほとんどの時間を機能しないため、初心者に過ぎませんでした! 私達の仕事は既存の適用への改善から主に成っている。 つまり、ほとんどのお金が費やされている場所、可視性が低い場所、できるだけ多くのことを行うための大きな年間エンベロープがある場所、コードを理解できる唯一の人であるために重要な人がいる場所、変更にどれくらいの時間がかかるかわからない場所、回帰が頻繁であり、人々が変更を行うことを怖がっている場所です。 そして、基本的にはその上のビジネスから何の注意もありません、ちょうどそれを行う!
ソースコードの品質を管理することは、ROIを最適化することであり、可視性を高め、より詳細な制御を提供するためです:
- メンテナンスがどれほど難しいか、私たちは何を期待できますか
- 物事が悪化していないという事実
- システムの重要な部分に注意を払うべきリファクタリングは、achangeに少し追加されますが、良いroiを持つ必要があります。
ソースコードの品質を管理するには?
プロジェクトのソースコード分析を行うときに見なければならない七つの技術軸があり、Sonarは七つのすべての管理をサポートすることができます。 Sonarチームでは、それらを開発者の7大罪と呼びたいと考えています:
- コーディング標準とベストプラクティスを尊重しない
- ソースコードにコメントがない、特にパブリックApiで
- コード行が重複している
- 複雑なコンポーネ
- 潜在的なバグを残す
- スパゲッティデザインを持つ(パッケージcycles…)
ソースコードの品質管理を行う際の最初のステップは、実際には、それらの軸のどれがあなたにとって重要であり、どのような拡張に重要であるかを定次に、現状に基づいて目標レベルに到達するための計画を立てる必要があります(それは単に高いレベルの品質を維持することかもしれません)。 非常に重要なのは、開発チーム全体が完全に採用されたときに小さく始めて大きくすることです。
さて、このアプローチでソナーを使用する方法を見てみましょう。
品質プロファイル
Sonarは、プロジェクトのタイプに必要なレベルを適応させるために、複数の品質プロファイルを管理することができます(サポート、新..).
activate/deactivate/weight coding rules
自動アラートのメトリックのしきい値の定義
project/profile associationの定義
Dashboards
Sonarには、問題がある可能性のあるヒントを取得し、プロジェクトを比較するための全体像を示す2つのダッシュボードが含まれています。:
- すべてのプロジェクトを表示する統合ビュー
- プロジェクトダッシュボードは、モジュールとパッケージレベルでも利用できます
狩猟ツール
問題と思われるものが本当に問題であることを確認するために、Sonarは概要からsmallestdetailsに行くことができる狩猟ツールセットを提供しています:
- 表示されたすべてのメジャーをドリルダウンして、
- クラスの背後にあるものを確認し、単体テスト
- ホットスポットでカバーされていないクラスを見つ..
TimeMachine
アプリケーションがどこに立っているかを知ることは非常に重要であることは間違いありません。 しかし、さらに重要なのは、その進化を知り、理解することです。実際、unittestsによるコードカバレッジの20%があることを知る価値は何ですか? それは良いか悪いですか? 二ヶ月前にそれが15%または25%であった場合、答えは異なりますか? TimeMachineは、特にプロジェクト
のバージョンを記録するので、進化を見て、過去を再生することができますソナーはどのように機能しますか?
ソナーは、三つのコンポーネントで構成される非常にシンプルで柔軟なアーキテクチャで作られています:
- Mavenプラグインにグループ化され、必要に応じてトリガーされるソースコードアナライザのセット。 アナライザは、データベースに格納された構成を使用します。 Sonarは分析を実行するためにMavenに依存していますが、Mavenおよび非Mavenプロジェクトを分析することができます。
- 分析の結果、プロジェクト、グローバル設定を保持するだけでなく、TimeMachineの履歴分析を保持するデータベース。 5つのデータベースエンジンが現在サポートされています:Oracle、MySQL、Derby(デモのみ)、PostgreSQL、MS SQLServer
- プロジェクトのコード品質ダッシュボードを表示し、欠陥を探し、TimeMachineをチェックし、分析を設定するためのwebレポーティングツール。
そのアナライザの一環として、Sonar coreは、コーディングルール違反(PMD、Checkstyle)を見つけ、潜在的なバグ(Findbugs)を検出し、単体テスト(Cobertura、Clover)によるカバレッジを測定するための最 しかし、Sonarを真にユニークなものにするのは、ソースコードだけでなくバイトコードも解析し、結果をミックスする独自のコードアナライザであるSquidです。
分析はMavenプラグインを介して実行されるため、Sonarは”継続的な統合”環境で簡単に起動できます。
Apache commons-collectionプロジェクトのユースケース
Sonarを実行するための前提条件は、JavaとMavenをボックスにインストールすることです。 このような場合は、5つの簡単な手順でソナーを実行できます。
1。 ディストリビューションをhttps://www.sonarqube.org/downloads/からダウンロードし、解凍します
2. コンソールを開き、サーバーを起動します:
> $SONAR_HOME\bin\windows-x86-32\StartSonar.windows上のbat
> $SONAR_HOME/bin//sonar.sh 他のプラットフォームでは
3. ソースをチェックアウトするコンソールを開き、
svn cohttp://svn.apache.org/viewvc/commons/proper/collections/trunk/を実行します。
4. 同じディレクトリ
でmvn install sonar:sonarを実行します。 ブラウズhttp://localhost:9000
アプリケーションのホームページには、いくつかの設定可能な指標と品質管理の下でプロジェクトのリストが表示されます。
拡大するには、プロジェクトをクリックしてダッシュボードを取得するだけです
そこからは、その中の一連の狩猟ツールにアクセスできます:
“最も”または”最も少ない”ファイルについて調べるためのホットスポット。..
また、ダッシュボード内のすべての指標をクリックすると、シーンの後ろにジャンプして、基になるコンポーネント別に指標のビューを取得できます
各狩猟ツールは、最終的に獲物が強調表示されているソースコードにハンターをもたらします
Sonarエコシステム
Sonarの周りには非常に動的なエコシステムがあります
- ユーザーメーリングリストに300人以上、開発メーリングリストに150人以上の人々で構成された活発なコミュニティ
- forgeに35人以上のプラグイン(http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library/)が分割されています
- Jira、Hudson、Bamboo、GateIn、AnthillPro、Crowdなどの外部ツールとの統合
- 新しい動作の追加、高度なメトリックの計算、プロジェクトの統合、新しいメトリックの追加
- PL/SQL、Actionscript3
- Ideとの統合により、コードが編集されたときにコードの欠陥情報を取得する
- 月額3,000+ダウンロード
- Sonarsourceが率いるコア開発チーム(http://www.sonarsource.com)
>
結論
の大規模な採用後 継続的な統合エンジンとテストは、開発プラクティスを駆動し、ソース品質を管理することは、工業化の努力の開発チームのための自然な次のステップのように見えます。 ソナーは少数の努力と楽しみのこの目的に達することを可能にする。
2010年には、Sonarプラットフォームは進化を続け、開発の主軸は新しい言語をカバーし、Ideとの統合を改善しています。