Polyspace 静的解析の注意事項

Polyspace® 製品ファミリでは、明示的にソフトウェア開発者を対象として設計された機能が提供されています。それが Polyspace as You Code です。この機能は、Polyspace Bug Finder のコードチェック機能を統合開発環境 (IDE) に導入することで、ソフトウェア開発サイクルの後期になってバグが検出されることを回避します。

開発サイクル後期におけるバグ検出のコスト

ソフトウェアのバグは、開発のどの段階でも検出される可能性があります。統合段階で初めて見つかるバグもありますが、大半のバグはそれ以前の段階で検出できます。バグを検出したらすぐに修正することで、開発サイクル後期におけるデバッグタスクの工数を削減できます。

下のチャートは、欠陥の修正にかかるコストが、開発サイクルの進行に伴って急激に増加することを示しています。開発サイクルのコーディング段階で欠陥を検出して修正する方が、費用対効果が高くなります。

Polyspace as You Code

Polyspace as You Code

Polyspace as You Code では、ソース コード リポジトリにコードの変更内容を送信する前でも、コードの品質をチェックできます。Polyspace as You Code をプラグインや拡張機能としてインストールすることで、使い慣れた IDE やエディターの環境内で Polyspace を実行するメリットが得られます。Visual Studio®、Visual Studio Code、Eclipse™ などの IDE 向けのプラグインが使用可能です。Polyspace as You Code は、簡単な API を使用して他の IDE やエディターと統合することもできます。

Polyspace as You Code は、変更中のファイルを必要に応じて、または保存時に解析し、ビルド環境から解析設定を抽出します。新たな脆弱性やコーディングルール違反が見つかった場合は、IDE 内で直接レポートが表示されます。。コードの品質向上に注力したい場合は、既にファイルに存在している検出結果を確認できます。たとえば、Visual Studio Code では、C ファイルや C++ ファイルの解析後に、以下に示すような欠陥が報告される場合があります。

Polyspace as You Code

Polyspace as You Code によって報告される各検出結果には、脆弱性の原因を理解するための以下のような広範なコンテキスト情報が示されます。

  • 欠陥の簡単な説明: 暗黙的な変換はオーバーフローにつながります。
  • 関係するデータ型: 符号なし整数型変数 (サイズ: 32 ビット) を別の符号なし整数型 (サイズ: 16 ビット) に変換します。
  • 期待される値: 符号なし整数型 (サイズ: 16 ビット) の期待される範囲は、[0 ...65535] です。
  • 実際の値: 変数が取得した実際の値が、期待される値を上回っています。
  • 関連イベント: 問題は 138 行目に発生しています。この問題に関連するもう一つの行は、134 行目の割り当てです。問題が発生している行ではなく、それより前の行のバグ修正が必要な場合があります。

これらの詳細と、考えられる修正方法を示した状況依存ヘルプを使用して、エラーを解決できます。この修正が機能すれば、コードを次回保存するときにトークン上の強調表示が消えます。

Polyspace as You Code を使用して、IDE 内でその他の関連アクションを実行できます。たとえば、問題を修正しないと判断したら、Polyspace 固有のコードコメントをワンクリックで追加し、結果を正当化できます。このツールは、品質管理プロセスで特定のタイプの脆弱性やコーディングルール違反をすべて修正または正当化する必要がある場合に役立ちます。開発サイクルの後期に行うと手間のかかる処理を、IDE での開発中に少ない労力で完了できるようになりました。また、コードレビュー担当者が正当化情報を検証できるため、コードレビューのプロセスをさらに効率化できます。

Polyspace as You Code のインストールを Polyspace Access サーバーに接続すると、サーバーでの最新の実行を IDE での結果のベースラインとして使用できます。そうすることで、IDE は最後のサーバー実行以降に行ったコード変更に直接起因する結果のみを表示し、レガシコードに既に存在していた問題は非表示にします。ベースラインを一時的に無効にして、現在のファイルのすべての問題を確認することもできます。

他の Polyspace 製品と同様に、Polyspace as You Code の主な機能は自由にカスタマイズできます。

  • 既定のチェッカーセットが好みでない場合は、好きなチェッカーを設定できます。共通のチェッカーファイルを共有することで、チームや組織全体でコーディング規約を維持することもできます。
  • 保存時に解析を実行したくない場合は、保存時の自動解析を無効にして、IDE から明示的に任意の解析を実行できます。
  • 解析時に独自のスクリプトを使用したい場合は、Polyspace as You Code の設定により、IDE プラグインオプションを使用せずに、保存するたびに独自のスクリプトを実行できます。

Polyspace as You Code が開発後期でのバグ検出を防止する仕組み

Polyspace as You Code は、できるだけ早期に脆弱性を検出して修正し、コーディング規約を適用することで、開発後期でのバグ検出を防止します。これを実現するために、以下のような使いやすいコードチェック機能が用意されています。

  • コンテキスト切り替え不要: Polyspace as You Code は、IDE で開いている現在のファイルで、ソフトウェア脆弱性、コーディング規約違反、複雑すぎるコードなどを検出し、関連するソースコードトークンを強調表示します。強調表示は、IDE の構文エラーの表示と類似しています。強調表示されたトークンにカーソルを合わせると、問題の詳細がさらに表示されるため、調査して迅速に修正することができます。
  • より迅速な実行: Polyspace as You Code は、現在編集中のファイルで実行されます。プロジェクト全体の解析を行うよりも早く、すぐに有意義な結果を得ることができます。
  • 必要な設定は最小限: Polyspace as You Code は、IDE から必要な情報をすべて抽出します (IDE が既にソースコードをビルドするように設定されていることが前提です)。コード解析実行の設定にほとんど手間はかかりません。
  • 自動的に実行されるツール: コードを保存するたびに、Polyspace as You Code がバックグラウンドで実行され、最新の変更によって生じたバグやコーディング規約違反が表示されます。ツールの実行を忘れないようにするためのオーバーヘッドも生じません。

まとめると、Polyspace as You Code を使用すると、より迅速に、より高品質な C コードおよび C++ コードを開発できます。コード解析機能は、コーディング環境で直接利用でき、コードが変更されるとすぐに実行できます。その結果、コードの脆弱性やコード品質に関するフィードバックループを可能な限り短縮し、コードレビューに費やす時間を削減できます。

Polyspace as You Code は、Polyspace Server 製品と共に、コンポーネントレベルまたはシステムレベルのコード解析に使用できます。Polyspace as You Code を使用すると、コードリポジトリに送信する前に単一単位の欠陥やコーディングルール違反を除去できますが、Polyspace Server 製品は、送信後に継続的インテグレーション パイプラインで実行し、より複雑な統合問題を検出できます。これは、開発プロジェクトのライフサイクル全体を通じて、すべての開発者やチームによって高いコード品質を維持するための最も効率的な方法です。

詳細については、Polyspace Bug Finder のリリースノートを参照してください。Polyspace as You Code は R2021a でリリースされました。