web-dev-qa-db-ja.com

企業はどのくらいの静的分析履歴を保持する必要がありますか?

非常に大規模なグローバル企業で、すべてのレベル(組み込みからモバイルプラットフォームのアプリケーションコードなど)に多くのコードがあり、プロジェクトは6か月から5年の間何でも続くと仮定します...

静的分析情報を保持するという点でベストプラクティスと見なされるものは何ですか?欠陥と静的警告の間のトレーサビリティが組織(航空宇宙、自動車、政府など)にとって重要であると仮定します。

5
dukeofgaming

静的分析情報があったとしても、それを多く保持する必要はないと思います。ただし、これをサポートするには、適切な構成管理手法が必要です。

まず、ソースコードリポジトリ内のコードに定期的にタグを付ける必要があります。タグ付け( gitSubversionClearCase -ほとんどのバージョン管理システムは同様の機能をサポートする必要があります)を行うことを検討してください。重要なビルドに一意の識別子(ビルド番号やタイムスタンプなど)をタグ付けすることで、ソースコードの特定のスナップショットなどを、欠陥追跡データベースのエントリや静的分析結果に関連付けることができます。

タグができたので、静的分析の結果を特定のソースコードリポジトリにマッピングできます。生成されたコードをバージョン管理に保持してはならないことは一般的に認められています。静的分析を含め、ソースコードから直接生成できるものを保持するべきではないと私は主張します。ただし、トレーサビリティの目的で、静的分析から派生した欠陥を、検出の原因となったビルドに関連付けることができる必要があります。

現実的には、静的な分析結果を保持することをお勧めします。たとえば、外部リリース前の分析結果は、正式なテストレポートの一部として含めることができます。テストレポートの一部ではない場合でも、これをプロジェクトアーカイブに保存することをお勧めします。静的分析の要約(調査結果の数、コードのソース行ごとの調査結果の数、モジュールごとの調査結果の数、重要度ごとの調査結果の数、またはタイプごとの調査結果の数など)を含めることも検討できます。

また、静的分析ツールを管理する方法を検討することもできます。特に、ある種の正式なテストまたはレポートの一部として使用している場合はそうです。ツールのバージョンと、特定のバージョンのコードベースでツールを実行するときに使用される構成ファイルまたはパラメーターを考慮する必要があります。ツールのバージョンと構成を管理しないと、特定のコードベースに対してまったく同じレポートを再生成することが難しくなります。

3
Thomas Owens

静的な分析結果を保持することは非常に良い習慣だと思います。 「どのビルドがこの警告を導入したか」については、必ずしもそれほど興味があるとは限りません。バージョン管理システムから比較的簡単に確認できるはずだからです。さらに、特定の静的分析警告の履歴を追跡することに関心がある場合は、最初に表示されたときにその警告を修正しないことで、すでに何か別の問題を実行している可能性があります。

静的解析結果の履歴が好きな主な理由は、傾向を確認できるからです。たとえば、コードの行数、問題の数、コードカバレッジメトリックを確認できます。たとえば、問題はコード行と線形関係にある必要があります。問題の数がコード行よりも速く増加する場合は、誰かが何か間違ったことをしている可能性があります。同様に、必要なテストカバレッジのベースラインを確立するのに役立ち、誰かがテストの作成を忘れた場合に、それが低下し始めるかどうかを確認できます。

静的分析情報を保持する期間に関する実際の質問について。プロジェクトの最初から正しく保持する必要があると思いますが、すべてを保持する必要はありません。たとえば、私の選択する武器となるSonarQubeは、古いスナップショットの一部を自動的に削除します。 (スナップショットは、特定のビルドでの静的分析結果のセットです。)デフォルトのルールは http://docs.sonarqube.org/display/SONAR/History+and+Events および最も関連性の高い部分はこれです:

  • 1日後に保持されるスナップショットは1日1つだけです。イベントでマークされたスナップショットは削除されません。
  • 1か月後には、1週間に1つのスナップショットのみが保持されます。イベントでマークされたスナップショットは削除されません。
  • 1年後には、月に1つのスナップショットのみが保持されます。イベントでマークされたスナップショットは削除されません。
  • イベントでマークされたスナップショットを含め、5年以上経過したすべてのスナップショットが削除されます。

したがって、当日はすべての分析が表示されますが、明日は前日の最後の分析のみが利用可能であり、他の分析は削除されています。 4月末に、3月の最後の分析を除くすべてが削除されます。などですので、期間ごとに異なる解像度を選択してください。これにより、数年分のデータを効率的に保存できます。

1
ZeroOne