静的解析プログラムの概要2.1
・定義:プログラムを実行せずに、プログラムだけように、構造、プロセス、インターフェイス構文解析又は検査手順を分析し、プロセスを通ります。
・目的:するには、ソフトウェアの欠陥を検出します。
2.1.1コードレビュー
一般的なコードレビュープロジェクト | |
・全ての設計要件が達成されていますか? | ・各機能は、その目的かどうかのコメントを持って? |
・コードはコーディング標準に準拠してコンパイルされているかどうか? | ・コメントタイプフォーマットによってコメントを書き込むかどうか? |
・すべてのコードは、一貫したスタイルですか? | ・コードのコメントの量が所定値に達しましたか? |
•すべてのコメントは、それが明確で正しいですか? | ・名前付きの規則に従い、すべての変数かどうか? |
コメントがあるかどうかをすべてのために・例外処理コード? | ・最小のループネスト最適化するかどうか? |
・デスクトップのチェック:
・コードでプログラム等、制御エラーリスト、試験データの導出の欠陥検出方法を読み取ることにより開発。
短所:非効率的な、任意の。
・コードレビュー:
・いくつかの開発者とテスターの読み、議論、評価・審議、プログラムの静的解析による検討チームの組成;
・チュートリアル:
プログラムへの人々によって演奏・コンピュータの役割、シミュレーションデータとコードを実行し、プロセスは、プログラムの正常な動作を観察することです。
・テストケースは、予め用意します。
2.1.2構造解析
テスターは、ソフトウェアの全体的なアーキテクチャを理解するのに役立ちます。
{{ドライブシステム構成ファイルコールグラフ
{データ構造配列の 分析は、生成 図のフロー制御モジュール{。
ソース - {データインタフェース------「 - との間{クラスの依存関係。
関数呼び出しグラフの代わりに{{内部制御ロジック
{{コード... ...
2.2プログラムの流れ解析
2.2.1制御フロー解析
・目的:発現は、プログラム構造の制御フローグラフを構築します。
・制御フロー解析することにより、欠陥が、それによってプログラムの動作を保証すること、およびリソース管理の消費量を削減するために、効率的に検出することができます。
2.2.2データフロー解析
・プログラム、使用及びトランスミッションケースに定義された分析変数のソフトウェア検証技術、エラー、例外を使用して、変数定義検出/エラー。
・3つのエラーが含まれています:
①変数が定義されているが、使用されていません。
②変数が使用され、まだ定義されていません。
③変数は、使用する前に複数回定義されています。
・制御フロー解析は、プログラム必要と 制御フローグラフ の各ステートメントに含まれ、システムフロー図は 、変数を定義し、変数が分析されました。
2.3シンボリック実行
・実行中のプログラムや範囲の正しさを証明する間の一つの方法。
・役割:
•期待に沿ったプログラムの実行結果かどうかを確認してください。
・符号を生成プログラムの実行パスは、テストデータの自動生成にさらに制約を与えます。
* 実行中に特定のシンボルの値かどうかによると、内符号の技術を実行することができる静的な記号的実行及び動的記号的実行。
2.3.1静的記号解析
* 定義:プログラムを実行することなく、入力として記号値、及び記号的実行シミュレーションコードのプロセスによって実行し、最後を識別するため の変数が入力 プログラム所定の実行可能 パスを 文のターゲット結果に到達するために、(ホワイトボックス静的解析)
・LOL英雄、プログラムの最終的な特性値の主人公のための出力よりプログラムは、プログラム入力のためのロードされた武器の主人公((攻撃、防御、血液溝、ブルータンクを含む)場合、ある人気の点アイスの棒や剣)。そして、タスクのシンボリック実行は、服装の方法によって結果、この最後の属性値を達成することができヒーローを分析し、主人公の最後の属性値を与えています。
・パス条件:建てのシンボリック入力 ブール式は 、パスの実行時に入力制限が満たされなければならないで 蓄積し 、
・の実装における各シンボル (if文のような)分岐点には、パスの状態が更新されます。
①パス条件が成立していないとなった場合、対応するプログラムパスが不可能です。
任意のプログラム溶液パス条件が満たされた場合②、パス条件の実行は、入力された状態です。
入力された一般的手順を使用して、実行時に使用されていない・特定の値。
・脆弱性分析:プログラムの目的の結果を生成するために、脆弱性の状態、理論的には、それは入力変数の脆弱性を掘るのは簡単です。
2.3.2動的な記号解析
* 定義:組み合わせる 記号入力 と 特定の入力 プログラムを解析します。
・プラクティス:入力シンボルに基づいて、複合パスまたは大規模へのパスに直面したとき の代わりに記号入力の特定の入力値を使用する ために、後方に記号的実行を駆動し続けること、および制約パスの解決を得ることができます。
•動的なシンボリック実行は、ステータスシンボルと現在のパスの動作条件を追跡するためのツールを実行すると、
·在一条路径运行结束后,运行工具将路径中未覆盖分支的最后一个路径条件约束 取反 ,再将新的路径条件传递给约束求解器进行求解;
·如果约束求解器可以给出一个满足新路径条件的解,运行工具会运行该条路径并重复上述路径,直至所有路径被覆盖,或覆盖特定目标,或满足时间需求。
2.4 编程规范和规则
比赛的一些编程规范。
2.5 程序静态分析工具
介绍工具。