ユースケース:不具合分析
不具合分析とは、ソースコードを解析してエラーやバグなどの欠陥を検証する手法です。
デバックや単体テストなどでコーディングの誤りや脆弱性をテストツールで検出することが一般的ですが、依存関係やグローバル変数の多用など、構造的な観点から確認ができる欠陥もあります。
ここでは、Understandを用いた不具合分析の方法をご紹介します。
デバックや単体テストなどでコーディングの誤りや脆弱性をテストツールで検出することが一般的ですが、依存関係やグローバル変数の多用など、構造的な観点から確認ができる欠陥もあります。
ここでは、Understandを用いた不具合分析の方法をご紹介します。
課題
- 構造が複雑化しており、テストが必要な要素の判断が難しい
- デバックの際、最適な入力値がわからない
- 不具合発生箇所の分析から修正箇所の確認をもっと効率的に分析したい
原因
ソースコードから最適なテスト項目と入出力値の判断ができない例:グローバル変数が多用されていて、必要なテストパターンを網羅するのに時間がかかる。
テスト結果から変更が必要な箇所を把握できない
例:ソースコードが複雑化しており、修正箇所を判断するためにコードを読み解く必要がある。
解決策
Understandは、C/C++、Java、VB.NET、C#、Python、JavaScript、TypeScriptなどで開発されたプログラムを高速解析することができます。Understandは、ビルド環境がなく、コンパイルできないソースコードであっても、ある程度の解析結果を得ることができます。
また、C/C++においては関数ポインターによる関数の呼び出しやポインター変数のアドレス操作の解析も行うことができます。
1.変数が取りうる値を構造から確認する
ポイント
- 変数へのアクセス関係を可視化して、値の取りうる範囲を確認する
2.共有されている変数(割り込み干渉)を確認する
ポイント
- 競合して書き込みされるグローバル変数を可視化して、意図しない変数への参照/変更を確認する
- レポートで競合変数一覧を検出する
Understandの機能
Shared Tasksグラフでは、登録したタスク(例えばmain関数、ルート関数)から、競合して書き込みされるグローバル変数を色付きで可視化できます。全体の可視化だけではなく、1つのグローバル変数を起点にした部分的な割り込みグラフの表示や、レポートで競合変数一覧の出力も可能です。
また、下記の設定が可能です。
排他制御の設定
割り込み禁止区間(保護領域)からの共有変数へのアクセスと、保護領域外からのアクセスを区別し、意図しない変数への割り込み箇所を視覚的にわかりやすく表示します。
保護領域の設定には、制御関数またはマクロを使用可能です。
割り込み優先度、コアの情報の設定
グラフ上に優先度や、マルチコアシステムに対応したコア情報の表示ができます。
割り込み禁止区間(保護領域)からの共有変数へのアクセスと、保護領域外からのアクセスを区別し、意図しない変数への割り込み箇所を視覚的にわかりやすく表示します。
保護領域の設定には、制御関数またはマクロを使用可能です。
割り込み優先度、コアの情報の設定
グラフ上に優先度や、マルチコアシステムに対応したコア情報の表示ができます。
3.静的テストツールからの指摘結果を取り込む
ポイント
- 静的テストツールの指摘レポート(SARIFレポート)をUnderstandに取り込む
- レポートの違反結果からUnderstandの要素にジャンプして分析する
イベント・セミナー
ニュース・キャンペーン
ソースコード解析ツール Understandに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- scitools-info@techmatrix.co.jp