第1部ソナー雲における符号品質の概念



エンジニアリングチーム/部族では、我々はしばしば適切な効率的なコード解析ツールを選択するジレンマに自分自身を立ち往生見つける.念頭に置いて最高のデザインの練習を使用してコードベースを分析するために不可欠な機能とメトリックのすべてを私たちに提供するツール.チームはコードの臭い、バグ、および脆弱性をすぐに検出することによってコードの問題が発生しないようにしたい.さらに、彼らは彼らのそれぞれのプル要求とコードのマージから彼らの倉庫で速くて正確なフィードバックを見たいです.
ソフトウェア品質工学の主な目的は以下の通りです.
  • のプロセス制御と監督
  • 規格とメトリクスを実施する
  • のデータ収集と分析
  • のテスト開発
  • 問題と解決の識別
  • 修正242479182を確実にするために、
  • はフォローアップします

    概要


    長年にわたって、私はCodacy、コード気候、DeepScanとソナークラウドのような様々なチームの開発者を助けるために多くのコード分析ツールと協力しました.ソナークラウドプロジェクトを実験して、設定するかなりの時間を費やした後に、私は群衆から際立っているとわかりました.それは、上記のソフトウェアの品質エンジニアリングの目標のすべてを包含する機能を提供する包括的な分析エンジンを持っています.私と私のチームを魅了したそれらの特徴のいくつかは、以下でした:
  • プルリクエストデコレータ
    レポート注釈を通してコメントしている
  • インライン
  • プル要求ウィジェット:あなたのプル要求
  • の全体的なコード品質の健康を提供します
  • リポジトリウィジェット:プロジェクト
  • の全体的なコード品質の健康を提供します
    古いコードと新しいコードをスキャンする
  • コードカバレッジ
  • コード複製
  • 保守性評価
  • 異なるプロジェクトのためのカスタム品質ゲートチェックを定義している

  • 異なるプロジェクト
  • のための新しいコード定義を定義している

  • 上記の特徴の一部(品質ゲート、プロファイル、新しいコード定義)はソナークラウドで設定する必要がある実際の設定です.あなたは完全にソナークラウドを利用するの利点を享受しないように、これらの設定を設定するにあなたの注意を与える必要があります.
    私たちはソナー雲の生態系とどのようにすべてのコアの機能は、包括的なコード分析の経験を提供するために一緒に来るを探るつもりです.

    ソナー雲生態系


    プロジェクト


    ソナークラウドでは、単一のリポジトリは単一のプロジェクトに対応します.それはどのようにあなたが持っている各リポジトリのコード品質データとメトリクスのユニークなセットを維持する方法です.

    モノレポサポート


    ソナークラウドはMonorepoプロジェクトを支援するあなたは、複数のプロジェクトを作成することができます、それぞれが同じリポジトリにバインドされている別のmonorepoプロジェクトに対応する.これにより、
  • プロジェクト
  • につき一つの品質門を構成してください
  • は、多重品質ゲート結果
  • を受けます
  • は、Sonarcloud
  • からプロジェクトラベルされたメッセージを読んでください
    各々のMonorepoプロジェクトはSonarクラウドでユニークなプロジェクトキーを持っていなければなりません.
    標準的な慣習は以下の命名規則を持つことです
    Project 1: sampleorg-domain-frontend
    Project 2: sampleorg-domain-backend
    
    プロジェクトがソナークラウドで簡単に識別できるように、あなたの組織がいろいろなエンジニアリング種族の中に多くのMonorepoプロジェクトを維持するならば、これは役に立ちます.ただし、あなたのニーズに合ったフィット感を参照して任意の命名規則に従うことができます.

    新しいコード定義


    ソナークラウドは、Clean As You Codeの概念に従います.コアアイデアは、新しいコードにあなたの注意と努力を集中させることです.あなたが機能と改善の上で働くように、sonarcloudは各々の新しいコミットの上であなたのコードを分析して、どんなコード品質問題と脆弱点にでもあなたを警戒させます.これはすぐに問題に対処することができますし、プロジェクトに追加されたすべての新しいコードは常にクリーンであることを確認します.詳細についてはドキュメントを読んでください.
    これに伴い、新しいコード定義です.プロジェクトの右側の新しいコード定義を設定することは、コードの変更を決定することによって、sonarcloudを最大限に活用することが重要です.新しいコード定義を設定するときに考慮するオプションがいくつかあります.

  • 前のバージョン:プロジェクト
  • の最新のバージョン増分以来現れたコードの問題

  • 特定のバージョン:プロジェクト
  • の特定のバージョンで発生した問題

  • 日数:指定された数日(数値)
  • 以降のコードに現れた問題

  • 特定の日付:指定された日付
  • 以降のコードに表示された問題

    初期コード解析を実行するときは、“新しいコード”の分析を提供していません.代わりに、全体のコードの品質の健康を提供する、それは全体のプロジェクトをスキャンします.あなたが一緒に行って、新しいコミットを分析を開始するように、ソナークラウドは、全体と新しいコードの品質の健康分析(上記の写真から)を提示します.
    プロジェクトレベルまたは組織レベルで新しいコード定義を設定することができます.後者は、定義された新しいプロジェクトに定義を自動的に適用する方法を提供します.

    高級ゲート


    品質ゲートは技術的にあなたのコードがプロジェクトに必要な品質の最小レベルを満たしているかどうかを通知する種類のメトリックです.これは、各解析の結果に適用される一連の条件からなる.結果が品質ゲート条件を満たすか、上回るならば、それは応じて以下のステータスのうちの1つを示します.新しいコードと全体的なコードの条件を定義することができます.以下に例を示します.
  • カバレッジは、80.0 %
  • 未満です
  • 重複線は3.0 %
  • より大きい
  • 保守性評価は
  • よりも悪い
  • 信頼性評価は
  • よりも悪い
    レビューされる
  • セキュリティホットスポットは、100 %未満
  • です
    品質のゲートは分析され、メインブランチ(デフォルトで{organisationName-project-monorepoName})、他の支店、およびプル要求に計算されます.あなたのプロジェクトの品質ゲートの任意の数を作成し、プロジェクトごとにそれらを有効にするか、または作成されるすべてのプロジェクトに適用されるデフォルトの品質ゲートを作成します.
    カスタマイズされた品質ゲートの例を以下に示します.

    品質プロファイル


    品質プロファイルは、コード解析中に適用されるプログラミング言語規則であることを推測したかもしれません.デフォルトでは、ソナークラウドでサポートされているプログラミング言語は、市場で現在ある標準的なベストプラクティスを使用して、“ソナーウェイ”と呼ばれる組み込みプロファイルを持っています.「ソナー・ウェイ」は大部分のプロジェクトに最適ですが、エンジニアリング部族が彼らのニーズに最もよく合う彼らのプロフィールをカスタマイズしたい場合があります.


    ソナークラウドでは、分岐解析の2種類があります.

    短い生活枝


    名前が示すように、これらのブランチは一時的にプルリクエストを介して一時的に解析を実行するために使用されるはずです.短い生きた枝は、分析なしで30日後に自動的に削除されます.

    長いリビングブランチ


    これらのブランチは、部族が上流のブランチ(Sprint、Release)のセットを維持するためにGITフロー技術を利用するアジャイル方法論に従うときに有用である.これらのブランチは削除されるまでソナークラウドプロジェクトの履歴に残ります.一部の企業は非常に長い間、上流ブランチを維持しています.したがって、このオプションは、メインブランチと一緒にこれらのブランチのコード解析を実行するのに非常に役に立ちます(master).

    ロングリビングブランチ


    長い生活の分岐は、プロジェクトレベルで定義されます.単にプロジェクト設定に移動します.長い生きている枝は、正規表現パターンに従います.

    デフォルトでは、パターンはmasterです.これは、ブランチの名前が(branch|release)-.*またはbranch-から始まるとき、それは長い生きている枝と考えられるでしょう.

    プロジェクト設定


    上記の概念と用語のすべては、実際にプロジェクトと組織の設定(品質ゲート、品質プロファイル、長寿命分岐、新しいコード定義、monorepoサポート)です.コードカバレッジ除外、テストファイルの包含と除外、重複包含、ソースファイルの除外と包含、および多くのような一般的な設定です.これらを設定するには、documentationを参照してください.

    概要


    私は、このパート1記事がSONAR雲がどのように動くか、そして、それが続くソフトウェア工学品質に関する洞察をあなたに提供したことを望みます.この記事のパート2はGithubリポジトリでソナークラウドプロジェクトを設定し、Githubアクションを使用してコード解析を行う方法についてのチュートリアルを提供します.
    イメージソース:https://alexandrebrisebois.files.wordpress.com/2014/05/2011-09-18_code_reviews.png