(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
前記課題を果たすための本発明のアバップソースコードのコード検査を遂行するコード検査遂行システムは、
【0014】
コード検査対象であるアバップソースコードを語彙、構文及び意味分析してそれぞれ抽象構文木とシンボルテーブルの資料構造に保存するアバップソースコード文法分析部と、
【0015】
アバップ規則管理モジュールから選択されたコーディング規則に係わるソースコード及び文法構造を前記資料構造基盤によってプログラム経路分析モジュールでコード欠陷を検査して違反されたコード欠陷を修正するようにコード欠陷報告書を生成するアバップソースコード欠陥検査部と、を含んで構成されることを特徴とする。
【0016】
この時、前記アバップソースコード文法分析部は、
【0017】
検査対象であるアバップソースコードファイルをファイル単位で読んであらかじめ定義されたアバップ文法(BNF)によって、アバップソースコードを一連の文字列を意味するトークン単位(キーワード、識別子、シンボル識別子、定数、演算子)で分離する語彙分析モジュールと、
【0018】
各ファイル単位で分離したトークンの構文(文法)があらかじめ定義されたアバップ文法に違反されるか否かを検査して文法間違いがあれば、関連ファイルの文法間違いメッセージを、文法間違いがなければ、文章の構文を分析して構文間の制御流れ関係の意味を付与して各ファイル単位の構文構造を抽出する構文分析モジュールと、
【0019】
前記構文分析モジュールから抽出された情報を各ファイル単位でツリー資料構造に保存する抽象構文木貯蔵処理モジュールと、
【0020】
前記抽象構文木貯蔵処理モジュールで各ファイルを構成するシンボル類型(クラス、メソッド、変数、型、関数、イベント、ダイアログ、処理ブロック)らとその間の連結関係情報及び欠陥検査に必要な各シンボル類型の欠陷パターン構造を抽出する意味分析モジュールと、
【0021】
前記意味分析モジュールから抽出された情報を各ファイルの構成要素であるシンボルのテーブル資料構造に保存するシムボルテーブル貯蔵処理モジュールと、を含んで構成されることを特徴とする。
【0022】
この時、前記アバップソースコード欠陥検査部は、
【0023】
欠陥深刻度及びプログラミング特性によって多様なコーディング規則カテゴリー(アバップ及びSQLコーディングスタイル、コーディング標準、アキテクチャ標準、SQL標準、ラン-タイムエラー、保安弱み)らと各規則のシンボル類型、欠陷パターン構造類型、そして欠陷条件類型をアバップ規則管理モジュールの処理によって、保存及び管理されるアバップ規則データベースと、
【0024】
前記アバップ規則データベースからコーディング規則を選択し、選択された規則と係わるシンボルと欠陷パターン構造に対応されるシンボルテーブルのシンボル値を各ファイル別に検索し、検索された各シンボル値別に対応されるすべての文法構造及びソースコードを抽象構文木から抽出してプログラム経路分析モジュールに伝達するアバップ規則管理モジュールと、
【0025】
前記抽出された各シンボル値打ちの文法構造及びソースコードを選択された規則のプログラム経路パターン(制御流れ、制御及び資料流れ、または制御流れ及び呼び出し)、欠陷パターン構造と欠陥条件によって欠陥検査するプログラム経路分析モジュールと、
【0026】
前記選択されたコード規則に違反された欠陷があれば、コード欠陷報告書を生成するコード欠陥報告書生成モジュールと、を含んで構成されることを特徴とする。
【0027】
この時、前記アバップソースコード文法分析部は、
【0028】
構文分析されたトークンを各ファイル単位で受けて上向き式構文分析技法(Bottom-up Syntax Analysis)であるLR(1)パーサアルゴリズムでトークンの文法的構造で分析して各ファイル単位で構文構造間の制御流れ関係を抽出して抽象構文木の資料構造に保存することを特徴とする。
【0029】
この時、前記アバップソースコード文法分析部は、
【0030】
抽象構文木の資料構造で各ファイルを構成するシンボル類型とその間のシンボル連結関係、タイプ(Type)情報、名連結関係を抽出し、欠陥検査に必要な各シンボル類型の欠陷パターン構造情報をシンボルテーブルの資料構造に保存することを特徴とする。
【0031】
この時、前記アバップソースコード文法分析部は、
【0032】
アバップソースコードを分析する時、アバップファイル(*.abap)がある上位ディレクトリを選択すれば、下位ディレクトリを含んだすべてのアバップファイルを検査対象で遂行するか、または一つのファイルを選択しても検査対象で遂行することを特徴とする。
【0033】
この時、前記プログラム経路分析モジュールは、
【0034】
アバップ規則データベースで定義されたコーディング規則のプログラム経路パターン、欠陷パターン構造と欠陥条件の下にアバップ規則管理ブによって抽出された各シンボル値打ちの文法構造及びソースコードで係わるコーディング規則のコード欠陷を識別する機能を遂行することを特徴とする。
【0035】
この時、前記アバップ規則管理モジュールは、
【0036】
アバップ規則データベースで各カテゴリー別コーディング規則を選択そして詳細オプションを設定し、選択された規則で係わるシンボルと欠陷パターン構造に対応されるシンボルテーブルのシンボル値を各ファイル別に検索し、検索された各シンボル値打ち別に対応されるすべての文法構造及びソースコードを抽象構文木から抽出してプログラム経路分析モジュールに伝達する機能を遂行することを特徴とする。
【0037】
この時、前記アバップ
規則データベースは、
【0038】
多様なカテゴリー(アバップ及びSQLコーディングスタイル、コーディング標準、アキテクチャ標準、SQL標準、ラン-タイムエラー、保安弱み)のコーディング規則を保存するデータベースとして、各規則別にカテゴリー類型、シンボル類型、プログラム経路パターン、欠陷パターン構造類型、欠陥条件、
規則名、規則ID、エラータイプ、エラーメッセージの資料構造で成り立っているし、アバップ規則管理モジュールによって規則の追加または変更を管理することを特徴とする。
【0039】
以下、本発明によるアバップソースコードのコード検査を遂行するコード検査遂行システムを、実施例を挙げて詳しく説明する。
【0040】
図1は、本発明の一実施例によるアバップソースコードのコード検査を遂行するコード検査遂行システムの全体ブロック図である。
【0041】
図1に図示したように、本発明であるアバップソースコードのコード検査を遂行するコード検査遂行システムは、
【0042】
コード検査対象であるアバップソースコードを語彙、構文及び意味分析してそれぞれ抽象構文木とシンボルテーブルの資料構造に保存するアバップソースコード文法分析部100と;
【0043】
アバップ規則管理モジュールから選択されたコーディング規則に係わるソースコード及び文法構造を前記資料構造基盤によってプログラム経路分析モジュールでコード欠陷を検査して違反されたコード欠陷を修正するようにコード欠陷報告書を生成するアバップソースコード欠陥検査部200と;を含んで構成される。
【0044】
この時、前記アバップソースコード文法分析部100は、
【0045】
検査対象であるアバップソースコードファイルをファイル単位で読んであらかじめ定義されたアバップ文法(BNF)によって、アバップソースコードを一連の文字列を意味するトークン単位(キーワード、識別子、シンボル識別子、定数、演算子)で分離する語彙分析モジュール110と、
【0046】
各ファイル単位で分離したトークンの構文(文法)があらかじめ定義されたアバップ文法に違反されるか否かを検査して文法間違いがあれば、関連ファイルの文法間違いメッセージを、
文法間違いがなければ、文章の構文を分析して構文間の制御流れ関係の意味を付与して、各ファイル単位の構文構造を抽出する構文分析モジュール120と、
【0047】
前記構文分析モジュールから抽出された情報を各ファイル単位でツリー資料構造に保存する抽象構文木貯蔵処理モジュール130と、
【0048】
前記抽象構文木貯蔵処理モジュールで各ファイルを構成するシンボル類型(クラス、メソッド、変数、型、関数、イベント、ダイアログ、処理ブロック)らとその間の連結関係情報及び欠陥検査に必要な各シンボル類型の欠陷パターン構造を抽出する意味分析モジュール140と、
【0049】
前記意味分析モジュールから抽出された情報を各ファイルの構成要素であるシンボルのテーブル資料構造に保存するシムボルテーブル貯蔵処理モジュール150とを含んで構成されることを特徴とする。
【0050】
この時、前記アバップソースコード欠陥検査部200は、
【0051】
欠陥深刻度及びプログラミング特性によって、多様なコーディング規則カテゴリー(アバップ及びSQLコーディングスタイル、コーディング標準、アキテクチャ標準、SQL標準、 ラン-タイムエラー、保安弱み)らと各規則のシンボル類型、欠陷パターン構造類型、そして欠陷条件類型をアバップ規則管理モジュールの処理によって、保存及び管理されるアバップ規則データベース210と、
【0052】
前記アバップ規則データベースからコーディング規則を選択し、選択された規則と係わるシンボルと欠陷パターン構造に対応されるシンボルテーブルのシンボル値を各ファイル別に検索し、検索された各シンボル値別に対応されるすべての文法構造及びソースコードを抽象構文木から抽出してプログラム経路分析モジュールに伝達するアバップ規則管理モジュール220と、
【0053】
前記抽出された各シンボル値打ちの文法構造及びソースコードを選択された規則のプログラム経路パターン(制御流れ、制御及び資料流れ、または制御流れ及び呼び出し)、欠陷パターン構造と欠陥条件によって欠陥検査するプログラム経路分析モジュール230と、
【0054】
前記選択されたコード規則に違反された欠陷があれば、コード欠陷報告書を生成するコード欠陥報告書生成モジュール240とを含んで構成されることを特徴とする。
【0055】
本発明の検査対象であるアバップソースコードを語彙、構文及び意味分析して、それぞれ抽象構文木とシンボルテーブルの資料構造に保存するアバップソースコード文法分析部と、アバップ規則管理モジュールから選択されたコーディング規則に係わるソースコード及び文法構造を前記資料構造基盤によってプログラム経路分析モジュールでコード欠陷を検査して違反されたコード欠陷を修正するようにコード欠陷報告書を生成するアバップソースコード欠陥検査部とで大きく仕分けされられる。
【0056】
前記アバップソースコード文法分析部の機能は次のようである。
【0057】
図3のように、使用者によって
図4のようなアバップファイル(*。abap)がある上位ディレクトリを選択すれば、下位ディレクトリを含んだすべてのアバップファイルを検査対象とし、または
図4の例題アバップファイルのように、一つのファイルを選択して検査対象として、選択されたファイルを読んでインデックスを設定し、検査対象であるすべてのアバップソースコードファイルのインデックス手順で語彙分析モジュール110に伝達する。
【0058】
参照的に、
図4の左側の行番号は説明の便宜上、記録したものである。
【0059】
この時、前記語彙分析モジュールは、
図4の例題ソースのような検査対象であるアバップファイルをファイル単位で読んで、あらかじめ定義されたアバップ文法のアバップBackus標準形式(Backus Normal Form、BNF)によって、アバップソースコードを一連の文字列を意味するトークン単位で分離して構文分析モジュール120に伝達する。
【0060】
前記機能を遂行するために、語彙分析モジュールのトークンは、文法的にこれ以上分けることができない基本的な言語要素を示し、キーワード(keyword)、識別子(identifier)、シンボル識別子(symbol-identifier)、定数(constant)、演算子(operator)の記号で仕分けされて各トークンに付与する。
【0061】
図5に図示しように、入力された
図4の一番目と四番目のラインの文章を文字列であるトークンで変換して各トークン別にトークンの記号を付与した例である。
【0062】
ただ、線終決(end)、空白、そして注釈はトークンではない。
【0063】
前記構文分析モジュールは、
図5の例題のような構文分析されたトークンを各ファイル単位で受けてトークンの構文があらかじめ定義されたアバップ文法(BNF)に違反されるか否かを分析して文法間違いがあれば、関連ファイルの文法間違いメッセージをアバップ文法エラーメッセージで知らせ、文法間違いがなければ、上向き式構文分析技法(Bottom-up Syntax Analysis)であるLR(1)パーサアルゴリズムでトークンの文法的構造を分析して各ファイル単位で構文構造間の制御流れ関係を抽出して抽象構文木の資料構造に抽象構文木貯蔵処理モジュール130の処理によって保存し、生成された抽象構文木の文法構造情報を各ファイル単位で意味分析モジュールに伝達する。
【0064】
前記文法検査の実施例として、
図6はトークン化された
図4の四番目ラインのクラス宣言文章でクラス BNFに違反された文法的エラーがないかを点検する。
【0065】
追加的に、すべてのアバップの一文章の終りは、常に "。" 演算子の終決がいなければならない。
【0066】
もし、アバップ文法に違反されたファイルは
図10のように、エラーファイル(Erroneous Files)のファイル数及びエラー位置を表示して意味分析対象から除く。
【0067】
前記抽象構文木生成の実施例として、
図8は、
図4の例題ソースを構文分析した後、生成されたツリー資料構造である。
【0068】
前述したような抽象構文木の資料構造は、
図7でよく見れば、各ファイルの各ノードは、意味的一単位である文章(Statement)を現わし、各文章は、ソースの物理的位置(ID)、表現式(Expression、文法構造及びソースコード)と文章の間の連結関係(親ノード(father、自分のノード深みより前にあるノード)、子ノード(child、自分のノード深みより次にあるノード)、次ノード(next、自分のノードと同じ深みにあるノード)、以前ノード(pervious、自分のノードと同じ深みにあるノード)、 羅列ノード (list、自分のノードと同じ深みにある同時に同一ソースラインにあるノード))の資料構造で成り立つ。
【0069】
図8のように、ノード間の連結関係は、ノード間の制御流れを方向性グラフのように図式化したことであり、各ノードはノード間の制御流れの連結(link)を現わしているし、次のノード(next)のないノードは文章の終りを現わす。
【0070】
前記意味分析モジュール140は、
図8の抽象構文木の資料構造で各ファイルを構成するシンボル類型とその間のシンボル連結関係、タイプ(Type)情報、名連結関係を抽出し、シムボルテーブル貯蔵処理モジュール150によって欠陥検査に必要な各シンボル類型の欠陷パターン構造情報をシンボルテーブルの資料構造に保存する。
【0071】
また、アバップ規則管理モジュール220から選択されたコーディング規則を遂行するために先にシンボルテーブルの資料構造を検索する。
【0072】
前述したようなシンボルテーブルの資料構造をよく見れば、サブシステム (Subsystem)、ファイル(File)、クラス(Class)、メソッド(Method)、変数(Variable)、型(Form)、関数(Function)、イベント(Events)、ダイアログ(Dialog)、処理ブロック(Processing Block)のクラス資料構造で成り立つ。
【0073】
図9のように、各クラスはクラス名、 属性名、メソッド名で構成されており、連結線はクラスとの関係を現わしている。
【0074】
メソッドは各シンボル類型の文法構造及びソースコードを抽象構文木から読み出す機能を遂行する。
【0075】
次は、アバップソースコード欠陥検査部200を具体的に説明するようにする。
前記アバップ規則データベース210は、
図11のように、6個カテゴリーの多様なコーディング規則を保存したデータベースとして、アバップ規則管理モジュール220により規則の追加または変更などを管理するようになる。
【0076】
前記アバップ規則データベースの構造をよく見れば、カテゴリー類型、シンボル類型、プログラム経路パターン、欠陷パターン構造類型、欠陥条件、規則名、規則ID、エラータイプ、エラーメッセージの資料構造で成り立つ。
また、コーディング規則のカテゴリーは、アバップ及びSQ コーディングスタイル、コーディング標準、アキテクチャ標準、SQ標準、ランタイムエラー、保安弱みで仕分けされる。
【0077】
各カテゴリー別コーディング規則の名と説明に対する実施例は次のようである。
【0078】
(1)アバップ及びSQLコーディングスタイル
-Indentation(単位ごとに引っ込みをしなければならない)
-Line Length(ライン当たり100以内で作成しなければならない)
-Hard-Coding(ハードコーディングしてはいけない)
【0079】
(2)コーディング標準
-Variable Naming(変数命名規則を守らなければならない)
-Recursive Calls(再帰呼出してはいけない)
-Form Obsolete Statements (form文章は使用してはいけない)
【0080】
(3)アキテクチャ標準
-Return Value Testing on SQL Statement(SQL文使用の後、errorに対する点検をしなければならない)
-Forbidden External Subroutine Invocation(他のプログラムのサブルーチンは呼び出してはいけない)
-Using Commit and Rollback on Try Block(Try文にcommit workを記述すれば、catch構文に rollback workを記述しなければならない)
【0081】
(4)SQL 標準
-Forbidden Nested Select Statement(多重select文章は、記述してはいけない)
-Forbidden Multiple Table Join(3個以上のTableをjoinしてはいけない)
-Select Statement with an GroupBy Function(Select構文使用の時、groupby 関数を使ってはいけない)
【0082】
(5)ランタイムエラー
-Division by zero(掛け算演算の時、0で分けてはいけない)
-Unassigned Field Symbol(Field symbolは使用前必ず初期化しなければならない)
-Infinite Loops(ループ文作成の時、必ずexitコードを記述しなければならない)
【0083】
(6)保安弱み
-Call of System Function(システム関数は使ってはいけない)
-Call of Transactions(Call Transaction文章は使ってはいけない)
-Use of Database Hints(Select文章使用の時、hints構文を使ってはいけない)
【0084】
アバップ規則管理モジュール220は、
図11のように、アバップ規則データベースで各カテゴリー別コーディング規則を選択そして詳細オプションを設定し、選択された規則から係わるシンボルと欠陷パターン構造に対応されるシンボルテーブルのシンボル値を各ファイル別に検索し、検索された各シンボル値打ち別に対応されるすべての文法構造及びソースコードを抽象構文木から抽出してプログラム経路分析モジュール230に伝達する。
【0085】
前記プログラム経路分析モジュールは、アバップ規則データベースで定義されたコーディング規則のプログラム経路パターン、欠陷パターン構造と欠陥条件の下に前記アバップ規則管理モジュールによって抽出された各シンボル値打ちの文法構造及びソースコードで係わるコーディング規則のコード欠陷を識別する機能を遂行し、検出された欠陷はそれぞれソースコードの位置と繋がれたコード欠陷報告書に伝達して最終使用者に
図12、13、14のように実施例のコード欠陷情報を提供する。
【0086】
前記のような機能を遂行するために、プログラム経路分析モジュールのプログラム経路パターンは制御流れ、制御及び資料流れ、そして制御流れ及び呼び出しで仕分けされ、アバップ規則データベースで定義されたすべてのコーディング規則はただ一つのプログラム経路パターンに属する。
【0087】
前記各プログラム経路パターンによってプログラム経路分析モジュールで欠陷を検査する実施例は次のようである。
【0088】
(1) 制御流れのプログラム経路パターン基盤欠陥検査(
図12 参照)
- 規則名及び欠陥条件(Infinite Loops、ループ文作成の時、必ずexitコードを記述しなければならない):アバップ規則データベース
- Fromシンボルでループ文があるかどうかを検索:アバップ規則管理モジュール及びシンボルテーブル
- Fromシンボルに関連文法構造及びソースコードを読み出し: 抽象構文木
- ループ文でExitコードがあるかどうかを制御流れ経路で分析:プログラム経路分析モジュール
- ループ文でExitコードがなければ、コード欠陷で識別して欠陥報告書の生成:コード 欠陥報告書生成モジュール
- アバップソースの例題
FORM foo。
data i type i value1。
data sum type i value 0。
do。"Violation:shall be exited from loops。
if sum>10。
sum = sum + i。
endif。
enddo。
ENDFORM。
【0089】
(2)制御及び資料流れのプログラム経路パターン基盤欠陥検査(
図13参照)
- 規則名及び欠陥条件(Unassigned
Field Symbol、Field symbolは使用前必ず初期化しなければならない):アバップ規則データベース
- From シンボルでField-symbolがあるかどうかを検索 : アバップ規則管理モジュール及びシンボルテーブル
- From シンボルに関連文法構造及びソースコードを読み出し:抽象構文木
- 文章中にあるField-symbolが初期化したのかを制御及び資料流れ経路で分析: プログラム経路分析モジュール
- 宣言文に初期化されなかったら、コード欠陷で識別して欠陥報告書の生成
: コード欠陷報告で
-アバップソースの例題
FORM foo。
FIELD-SYMBOLS:<fs1> type any。"Violation : shall be assigned。
data:tp_value type string value'any valueis acceptable
data:tp_fieldname type string value'tp_value'。
if<fs1>is ASSIGNED。
write/'assigned'。
else。
write/'unassinged'。
endif。
write<fs1>。
ENDFORM。
【0090】
(3)制御流れ及び呼び出しのプログラム経路パターン基盤欠陥検査(
図14参照)
- 規則名及び欠陥条件(Recursive Calls、再帰呼出してはいけない):アバップ規則データベース
- Methodシンボルで再帰呼び出しがあるかどうかを検索: アバップ規則管理モジュール及びシンボルテーブル
- Methodシンボルに関連文法構造及びソースコードを読み出し:抽象構文木
- メソッド内部で自分自身を呼び出すメソッドがあるかどうかを制御流れ及び呼び出し経路で分析 : プログラム経路分析モジュール
-再帰呼び出しがあったら、コード欠陷に識別して欠陷報告書の生成:コード欠陷報告書
-アバップ ソースの例題
METHOD foo。
data i type i value1。
data sum type i value 0。
write/'unassinged'。
foo()。"Violation:shall not be recursive
ENDMETHOD。
【0091】
図2は、本発明の一実施例によるアバップソースコードのコード検査を遂行するコード検査遂行システムの遂行方法を現わした流れ図である。
【0092】
すなわち、アバップ規則管理モジュールのアバップ及びSQLコーディングスタイル、コーディング標準、アキテクチャ標準、SQL標準、ランタイムエラー、保安弱みの規則の中から選択された規則に対する欠陥検査を遂行してコード欠陷報告書を生成する詳細処理流れ図である。
【0093】
S101は、
図1のアバップ規則管理モジュールから選択されたアバップ規則を規則インデックスを設定する。
【0094】
S102は、S101の設定されたコーディング規則のインデックス手順で検査対象であるすべてのファイルに対してS103からS119までコード欠陷検査を繰り返し遂行し、規則インデックスの終わりまで上の過程を繰り返し的に遂行する。
【0095】
S103は、S102で一つの規則に対するカテゴリー類型、シンボル類型、プログラム経路パターン、欠陷パターン構造類型、欠陥条件、規則名、規則ID、エラータイプ、エラーメッセージの資料構造情報を受ける。
【0096】
受けた一つのプログラム経路パターンをS109、S111、または S113に知らせ、シンボル類型、欠陷パターン構造類型及び欠陥条件はS106に伝達する。
【0097】
S104は、シンボルテーブルのファイルクラスで検索されたファイルをアバップファイルインデックスで設定する。
【0098】
S105は、S104の検索されたアバップファイルインデックス手順で検査対象であるすべてのシンボルに対してS106からS118までコード欠陷検査を繰り返し遂行し、ファイルインデックスの終わりまで上の過程を繰り返し的に遂行する。
【0099】
S106は、S103の一規則のシンボル類型及び欠陷パターン構造類型の情報と S105で伝達した一つのファイル名に根拠してそのファイルで構成されているシンボルの値をシンボルテーブルで検索してシンボル値インデックスを設定する。
【0100】
S107は、S106のシンボル値インデックス手順で値打ちを読み出してS108に伝達し、S108は、シンボル値に係わるすべての文法構造及びソースコードを抽象構文木で検索し、またS103から受けた欠陷パターン構造類型をS110、S112またはS114に伝達する。
【0101】
S109がS103から制御流れの経路パターンをもらったら、S110は、S108から検索されたシンボル値の文法構造及びソースコードを対象としてS103から受けた欠陷パターン構造類型及び欠陥条件の下でコード検査した結果をS115に知らせる。
【0102】
S111がS103から制御及び資料流れの経路パターンをもらったら、S112は S108から検索されたシンボル値の文法構造及びソースコードを対象としてS103から受けた欠陷パターン構造類型及び欠陥条件の下でコード検査した結果をS115に知らせる。
【0103】
S113がS103から制御流れ及び呼び出しの経路パターンをもらったら、S114は、S108から検索されたシンボル値の文法構造及びソースコードを対象としてS103から受けた欠陷パターン構造類型及び欠陥条件の下でコード検査した結果をS115に知らせる。
【0104】
前記S115は、検査したシンボル値のソースコードで欠陷があったら、S116に伝達し、欠陷がなければ、S118へ移動する。
【0105】
S116は、発見された各欠陷のソース位置を抽象構文木の物理的位置(ID)で検索してS117に伝達する。
【0106】
S117は、S116により伝達した欠陷とソース位置を欠陷保存所に保存し、S118に移動する。
【0107】
S118は、S106のシンボル値インデックスで次のシンボル値があれば、S107に移動し、なければ、次のファイルのコード検査のためにS119に移動する。
【0108】
S119は、S104のファイルインデックスで次のファイルがあれば、S105に移動して、なければ、次の規則を適用するためにS120に移動する。
【0109】
S120は、S101の規則インデックスで次の規則があれば、S102に移動し、なければ、コード欠陥検査を終了する。
【0110】
前記のような構成及び動作を通じてアバップソフトウェアに含まれている多様なコード欠陷をソースコードだけで静的分析して実際実行の時、発生することができるコード欠陷を前もって探知することができる效果を提供するようになる。
【0111】
なお、本発明は実施例によって限定されず、本発明が属する技術分野において通常の知識を有するものであれば本発明の趣旨から逸脱しない範囲で、修正または変更できる。