JP2020004363A - 複数の静的解析アラームを再配置するための方法およびシステム - Google Patents

複数の静的解析アラームを再配置するための方法およびシステム Download PDF

Info

Publication number
JP2020004363A
JP2020004363A JP2018243236A JP2018243236A JP2020004363A JP 2020004363 A JP2020004363 A JP 2020004363A JP 2018243236 A JP2018243236 A JP 2018243236A JP 2018243236 A JP2018243236 A JP 2018243236A JP 2020004363 A JP2020004363 A JP 2020004363A
Authority
JP
Japan
Prior art keywords
static analysis
alarms
alarm
relocation
relocated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018243236A
Other languages
English (en)
Other versions
JP6710268B2 (ja
Inventor
ビー トゥカラム ムスケ
B Muske Tukaram
ビー トゥカラム ムスケ
ロヒス タルリ
Talluri Rohith
ロヒス タルリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tata Consultancy Services Ltd
Original Assignee
Tata Consultancy Services Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tata Consultancy Services Ltd filed Critical Tata Consultancy Services Ltd
Publication of JP2020004363A publication Critical patent/JP2020004363A/ja
Application granted granted Critical
Publication of JP6710268B2 publication Critical patent/JP6710268B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Abstract

【課題】報告される静的解析アラームの数を減らし、それらの原因により近いそれらを報告する、複数の静的解析アラームを再配置するシステムを提供する。【解決手段】システムは、静的解析モジュール202および再配置モジュール204を含む。静的アナライザモジュールは、入力として受信したアプリケーションコードに対して静的解析を実行し、アプリケーションコードにおけるエラーを検出する、静的解析アラームのセットを生成する。中間再配置モジュール206は、静的解析アラームのセットを、アプリケーションコード内の最高のプログラムポイントで一時的に上方に再配置する。トレーサビリティリンクモジュール208は、予測可能なアラーム条件とそれらに対応する、関連するオリジナルの静的解析アラームとに基づいて中間再配置された静的解析アラームと静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクを計算する。【選択図】図2

Description

関連出願及び優先権の相互参照
本出願は、2018年6月25日に出願されたインド国非仮明細書第201821023655号からの優先権を主張し、その完全な開示は、その全体が参照により本明細書に組み込まれる。
本明細書の開示は、一般に、アプリケーションコードの静的解析から生成される静的解析アラームの分野に関し、より詳細には、アプリケーションコードにおける複数の静的解析アラームを再配置する(repositioning)ためのシステムおよび方法に関する。
テストは、ソフトウェアプログラムまたはアプリケーションまたは製品が期待されるビジネス要件および技術要件を満たしているかどうかを検証し、確認するプロセスである。ソフトウェアプログラムの品質および信頼性を保証するために実際に広く使用されている技術は、静的解析であり、ソフトウェアプログラムまたはアプリケーションコードは、実際にプログラムまたはアプリケーションコードを実行することなく、欠陥を検出するために解析される。静的解析中、アプリケーションコードは、静的解析ツールを使用して解析され、ツールは、アプリケーションコードにおける安全およびエラープログラムポイントの報告と共に、1以上の静的解析警告/アラームを生成する。静的解析ツールによって生成される静的解析アラームは、欠陥/エラーを表す場合もあればそうでない場合もあり、潜在的な欠陥を示すユーザへの警告である。生成されたアラームは、静的解析ツールによってユーザに報告され、警告に対応するアプリケーションコード内のプログラムポイントにおける安全性を決定する。
実際には、多数の静的解析アラームが生成され、それらのほとんどは静的解析ツールによって使用される近似値によって誤って生成される。誤って生成された静的解析アラームは、欠陥を表さないので、誤検知(false positives)と呼ばれる。さらに、生成された静的解析アラームを誤検知および真の欠陥/エラーに分類するタスクはしばしば手動であり、非常に退屈であり、コストがかかる。生成された多数の静的解析アラーム、および生成された静的解析アラームを手動で分類することに伴うコストは、実際に静的解析ツールを採用する際の主要な懸念事項として認識されてきた。いくつかの既存の方法は、類似または関連する静的解析アラームを一緒にグループ化し、各グループを単一のアラームとして表す。しかし、静的解析アラームをグループ化するこれらの方法は、同じ変数または原因によって関連付けられたアラームをグループ化することができないことがあり、この失敗は、静的解析アラームの報告において冗長性をもたらす。
さらに、従来の静的解析ツールは、ランタイムエラーが起こりそうな位置(location)で静的解析アラームを報告する。ランタイムエラーが起こりそうな場合に静的解析アラームが報告されるので、ユーザは、静的解析アラームがエラーを表すかどうかを識別するために、報告されたアラームプログラムポイントから静的解析アラームの原因までアプリケーションコードを後方方向にトラバースしなければならない。さらに、トラバースプロセスは、工業用アプリケーションコードの大きなサイズおよび複雑さのため、厄介なタスクとなり得る。
本開示の実施形態は、従来のシステムにおいて本発明者らによって認識された上述の技術的問題の1以上に対する解決策として、技術的改善を提示する。例えば、一実施形態では、複数の静的解析アラームを再配置するためのシステムおよび方法が提供される。提案された再配置技術は、報告される静的解析アラームの数を減らすため、またはそれらの原因により近いそれらを報告するため、または両方の目的のために、オリジナルの報告のプログラムポイントからアプリケーションコードの上または下に静的解析アラームのセットからの静的解析アラームの各々を再配置する。さらに、再配置技術は静的解析アラームのセットの再配置が、それらによってカバーされないエラーに影響を及ぼさないことを保証する。再配置された静的解析アラームとそれの対応する静的解析アラームとの間のさらなるトレーサビリティリンクも維持される。
別の態様では、複数の静的解析アラームを再配置するための方法が開示される。この方法は、静的アナライザモジュールへの入力としてアプリケーションコードを提供するステップをさらに含む。さらに、本方法は静的解析モジュールによってアプリケーションコードに対して静的解析を実行して、静的解析アラームのセットを生成するステップを含み、静的解析アラームのセットは、アプリケーションコードにおけるエラーを検出する。さらに、本方法は静的解析アラームのセットの中間再配置を実行し、静的解析アラームのセットにおける各静的解析アラームは、静的解析アラームのセットによって検出されるエラーに影響を与えることなく、アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される。さらに、この方法は、中間再配置された静的解析アラームと、前記静的解析アラームのセットからのそれら応する静的解析アラームとの間のトレーサビリティリンクを計算することを含む。さらに、この方法は、中間再配置の改良(refinement)を実行するステップを含む。さらに、この方法は、改良された中間再配置された(refined intermediate repositioned)静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算することを含む。さらに、この方法は、改良された中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行して、静的解析アラームのセットの最終的な再配置を得ることを含む。さらに、この方法は、最終的に再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算することを含む。最後に、この方法は、最終的な再配置された静的解析アラームのセットを表示することを含む。
別の態様では、複数の静的解析アラームを再配置するためのシステムであって、命令および1以上のモジュールを記憶するメモリと、1以上の通信インターフェースと、1以上の通信インターフェースを介してメモリに結合された1以上のハードウェアプロセッサとを含み、1以上のハードウェアプロセッサはアプリケーションコードを入力として受信し、受信したアプリケーションコードに対して静的解析を実行して静的解析アラームのセットを生成し、静的解析アラームのセットがアプリケーションコードにおけるエラーを検出する静的解析モジュールをさらに備える1以上のモジュールを実行するための命令によって構成される、システム。システムは静的解析アラームのセットの中間再配置を実行するための中間再配置モジュールをさらに含み、静的解析アラームのセットにおける各静的解析アラームは、静的解析アラームのセットによって検出されるエラーに影響を与えることなく、アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される。システムはさらに、中間再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算するためのトレーサビリティリンクモジュールを含む。システムは、中間再配置の改良を実行するための再配置改良モジュールをさらに含む。システムは、改良された中間再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算するためのトレーサビリティリンクモジュールをさらに含む。システムはさらに、改良された中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行して、静的解析アラームのセットの最終的な再配置を得るための最終的な再配置モジュールを含む。システムは、最終的な再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算するためのトレーサビリティリンクモジュールをさらに含む。システムは、最終的な再配置された静的解析アラームのセットを表示するための通信インターフェースをさらに含む。
さらに別の態様では、コンピュータ可読プログラムが具現化された非一時的なコンピュータ可読媒体であって、コンピュータ可読プログラムが1以上のハードウェアプロセッサによって実行されると、アプリケーションコードが静的アナライザモジュールへの入力として提供されるようにする、コンピュータ可読媒体。さらに、プログラムは静的解析モジュールによってアプリケーションコードに対して静的解析を実行して、静的解析アラームのセットを生成することを含み、静的解析アラームのセットは、アプリケーションコードにおけるエラーを検出する。さらに、プログラムは静的解析アラームのセットの中間再配置を実行し、静的解析アラームのセットにおける各静的解析アラームは、静的解析アラームのセットによって検出されるエラーに影響を与えることなく、アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される。さらに、プログラムは、中間再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算することを含む。さらに、プログラムは、中間再配置の改良を実行することを含む。さらに、プログラムは、改良された中間再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算することを含む。さらに、プログラムは、改良された中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行して、静的解析アラームのセットの最終的な再配置を得ることを含む。さらに、プログラムは最終的な再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算することを含み、最後に、プログラムは、最終的な再配置された静的解析アラームのセットを表示することを含む。
当然ながら、上記の一般的記載と下記の詳細な記載は、単に例示的かつ説明的なものであり、主張されているように発明を制限するものではない。
本開示に組み込まれ、その一部を構成する添付の図面は、例示的な実施形態を示し、説明と共に、開示された原理を説明するのに役立つ。
図1は、本発明のいくつかの実施形態による、複数の静的解析アラームを再配置するためのシステムの例示的な構成図を示す。 図2は、本発明のいくつかの実施形態による図1のシステムのメモリのモジュールに格納された様々なモジュールの機能構成図である。 図3は、本発明のいくつかの実施形態による、図1のシステムを用いて複数の静的解析アラームを再配置するための方法を示す例示的なフロー図である。 図4は、本開示のいくつかの実施形態による、中間再配置の改良の間に実行される計算のうちの1つを示す例示的なフロー図である。
例示的な実施形態は、添付の図面を参照して説明される。図において、参照番号の最も左の数字は、参照番号が最初に現れる図を識別する。都合のよい場合はいつでも、図面全体を通して同じ参照番号を使用して、同じまたは同様の部分を指す。開示された原理の例および特徴が本明細書に記載されているが、開示された実施形態の精神および範囲から逸脱することなく、修正、適応、および他の実施形態が可能である。以下の詳細な説明は例示としてのみ考慮され、真の範囲および精神は以下の特許請求の範囲によって示されることが意図される。
用語集−実施形態で使用される用語
本開示の文脈における表現「アプリケーションコード」または「アプリケーション」または「プログラム」または「プログラムコード」は、入力として与えられるソフトウェアコードを指す。
本開示の実施形態で使用される制御フローグラフ(control flow graph(CFG))に関する表記が定義され、プログラムのCFGは、(N、E)として表される有向グラフである。さらに、Nは(割り当ておよび制御条件のような)プログラムステートメントを表すノード(nodes)のセットであり、Eはエッジのセットであり、エッジ(N,N)は、いかなる介在ノードも伴わないN∈NからN∈Nへのプログラム制御の可能なフローを表す。
さらに、ノードn(node n)について、nの先行(predecessor)はpred(n)として表され、nの後続(successor)はsucc(n)として表され、nの入口(entry)に対応するプログラムポイントはentry(n)として表され、nの出口(exit)に対応するプログラムポイントはexit(n)として表される。また、行mにおけるプログラムステートメントのノードはnとして表される。
さらに、本開示の実施形態で使用される静的解析アラームに関する概念が定義され、ここで、αは静的解析モジュールによって生成され、再配置のために入力される静的解析アラームのセットを表し、Φは、セットαに属する静的解析アラームΦを表し、プログラムポイントpで報告される。静的解析アラームΦのアラーム条件(alarm condition)は、静的解析アラームの手動分類中にユーザがチェックすべき条件を表し、ここで静的解析アラームΦは、アラーム条件が満たされたときの誤検知である。静的解析アラームΦのアラーム条件は、cond(Φ)で表される。さらに、数学的記号
Figure 2020004363
は、例示的な実施形態の説明中に必要な場合にはいつでも、空のセットを表すために使用される。
アラーム条件cは、プログラムエントリからpまでのすべてのパスがcをそれのアラーム条件として静的解析アラームΦを含み、ポイントqの後にqからpまでのどのパス上にもcのオペランドの定義が続かない場合、プログラムポイントpにおける「利用可能なアラーム条件」として表される。短縮表記「avcond」は、利用可能なアラーム条件(available alarm condition)を表し、表記「avconds」は、利用可能なアラーム条件のセット(a set of available alarm conditions)を表す。
アラーム条件cは、pからプログラム出口までのすべてのパスがcをそれのアラーム条件として静的解析アラームΦを含み、ポイントqの前にpからqまでのどのパス上にもcのオペランドの定義がない場合、プログラムポイントpにおいて「予測可能アラーム条件」として表される。短縮表記「antcond」は、予測可能なアラーム条件(anticipable alarm condition)を表し、表記「antconds」は、予測可能なアラーム条件のセット(a set of anticipable alarm conditions)を表す。
Figure 2020004363
であり、ここでCが再配置された静的アラーム条件である場合、アラームのセットSのプログラムポイントpへの「安全な再配置」(上方または下方への動き)が生じる:再配置されたアラーム(C)のアラーム条件が再配置されたSにおける静的解析アラームのアラーム条件の共起(conjunction)と等価である場合、実行される再配置は、アラームのセットによって検出されるエラーに影響を及ぼさない。
次に、図面を参照し、より詳細には図1−図4を参照すると、類似の参照符号は、図面全体にわたって一貫して対応する特徴を示し、好ましい実施形態が示され、これらの実施形態は、以下の例示的なシステムおよび/または方法の文脈で説明される。
図1は、本発明の実施形態による複数の静的解析アラームを再配置するための装置100の例示的な構成図を示す。提案されたシステムは、報告される静的解析アラームの数を減らすため、またはそれらの原因により近いそれら報告するため、または両方の目的のために、オリジナルの報告のプログラムポイントからアプリケーションコードの上または下に静的解析アラームのセットにおける静的解析アラームの各々を再配置する。さらに、システムによって実行される再配置技術は、静的解析アラームのセットの再配置が、それらによってカバーされないエラーに影響を及ぼさないことも保証する。再配置された静的解析アラームと、それの対応する静的解析アラームとの間のさらなるトレーサビリティリンクも維持される。
一実施形態では、システム100は、1以上のプロセッサ104と、通信インターフェースまたは入出力(I/O)インターフェース106と、1以上のプロセッサ104に動作可能に結合された1以上のデータ記憶装置またはメモリ102とを含む。メモリ102は、1以上のモジュール108およびデータベース110を含む。ハードウェアプロセッサである1以上のプロセッサ104は、1以上のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、状態機械、論理回路、および/または動作命令に基づいて信号を操作する任意のデバイスとして実装することができる。とりわけ、プロセッサは、メモリに格納されたコンピュータ可読命令をフェッチし、実行するように構成される。一実施形態では、システム100は、ラップトップコンピュータ、ノートブック、ハンドヘルドデバイス、ワークステーション、メインフレームコンピュータ、サーバ、ネットワーククラウドなどの様々なコンピューティング・システムに実装することができる。
通信またはI/Oインターフェース106は、様々なソフトウェアおよびハードウェアインタフェース、例えば、ウェブインタフェース、グラフィカルユーザインタフェースなどを含むことができ、有線ネットワーク、例えば、LAN、ケーブルなど、および無線ネットワーク、例えば、WLAN、セルラー、または衛星を含む、多種多様なネットワークN/Wおよびプロトコルタイプ内の複数の通信を容易にすることができる。一実施形態では、通信またはI/Oインターフェースがいくつかのデバイスを互いに、または別のサーバに接続するための1以上のポートを含むことができる。
メモリ102は、例えば、スタティックランダムアクセスメモリ(SRAM)およびダイナミックランダムアクセスメモリ(DRAM)などの揮発性メモリ、および/または読み出し専用メモリ(ROM)、消去可能プログラマブルROM、フラッシュメモリ、ハードディスク、光ディスク、および磁気テープなどの不揮発性メモリを含む、当技術分野で知られている任意のコンピュータ可読媒体を含むことができる。
図1に関して、図2は、本発明の実施形態による図1のシステム100のメモリ102に格納された様々なモジュール108の構成図である。本開示の一実施形態では、システム100は、静的解析モジュール202および再配置モジュール204を含む。再配置モジュール204は、中間再配置モジュール206、トレーサビリティリンクモジュール208、再配置改良モジュール210、および最終的な再配置モジュール212をさらに備え、前記モジュールは、ソフトウェアプログラムの論理的に自己完結した部分、自己完結したハードウェアコンポーネント、および/または実行されたときに本明細書で説明された上記方法を実行するハードウェアコンポーネントのそれぞれに埋め込まれたソフトウェアプログラムの論理的に自己完結した部分を有する自己完結したハードウェアコンポーネントのうちの少なくとも1つとして実装される。
本開示の一実施形態によれば、システム100は、入力としてアプリケーションコードを受信するように構成された静的アナライザモジュール202を含む。受信したアプリケーションコードに対してさらに静的解析を実行して、静的解析アラームのセットを生成する。生成された静的解析アラームのセットは、アプリケーションコードにおけるエラーを検出する。静的アナライザモジュール202は、Frama−C、Cppcheck、またはClangなどの当技術分野で知られているツールとすることができる。
本開示の実施形態によれば、システム100は、再配置モジュール204内に中間再配置モジュール206をさらに含む。中間再配置モジュール206は、静的解析アラームのセットの中間再配置を実行するように構成され、静的解析アラームのセットにおける各静的解析アラームは静的解析アラームのセットによって検出されるエラーに影響を与えることなく、アプリケーションコード内の最高のプログラムポイントで一時的に上方に再配置される。一実施形態では、以下に示すコードの以下の行は、アプリケーションコードCAを示す;
Figure 2020004363
一実施形態では、静的アナライザモジュール202は、図示されたアプリケーションコードCAから6つの静的解析アラームを生成し、静的解析アラームは、2つの共通にチェックされたカテゴリのエラー、すなわち、境界外のアレイインデックス(array index out of bounds)(AIOB)およびゼロ除算(division by zero)(ZD)に対応する。静的解析アラームは、2つのタイプのランタイムエラーが起こりそうな位置で報告される。さらなる表記AおよびZは、それぞれ、AIOBおよびZDエラーカテゴリに対応する行nにおける静的解析アラームを示すために使用される。
一実施形態では、中間再配置中に、pで報告されたすべての静的解析アラームΦは、pに達するすべての経路に沿った最高の吊り上げポイント(hoisting point)で安全に吊り上げられ(hoisted)(アプリケーションコード内で上方に再配置され)、静的解析アラームの吊り上げは、アプリケーションコード内で上方に静的解析アラームを再配置することを表す。経路上の最も高い吊り上げポイントは、cond(Φ)がqにおける予測可能なアラーム条件であるが、同じ条件がqの直前のいずれのプログラムポイントでももはや予測可能なアラーム条件ではないように、プログラムポイントqとして識別される。したがって、中間再配置は、それの原因ポイント(cause point)により近い静的解析アラーム条件を吊り上げるだけでなく、複数の位置でアラーム条件を吊り上げることももたらす。例えば、図示のアプリケーションコードCAにおける静的解析アラームA17およびA19の静的解析アラーム条件i≧0&&i≦4は、2つの位置:exit(n)とexit(n)で吊り上げられる。この中間再配置は、このポイントで吊り上げられた条件が常に真と評価されるので、exit(n13)における可能な第3の吊り上げを破棄する。
中間再配置技法は、静的解析、データフロー解析、抽象解釈などの1以上のコード解析技法を使用して、予測可能アラーム条件解析を実行し、予測可能アラーム条件解析結果を使用して、中間再配置を実行することを含む。予測可能アラーム条件解析中、予測可能アラーム条件(anticipable alarm conditions:antconds)(antconds)は、後方方向に解析を実行することによって静的解析アラームのセットαから計算される。antcondsの計算は、後方方向データフロー解析を参照することによって例示される。任意のプログラムポイントpで計算されたantconds c毎に、そのポイントにおけるcの期待度(anticipability)に寄与する関連したオリジナルの静的解析アラームα’⊆α(relアラームとしても表される)も計算される。さらに、再配置された静的解析アラーム(再配置された条件としても表される)と、静的解析モジュール202によって最初に生成された静的解析アラームのセットαからのそれの対応する静的解析アラームとの間のトレーサビリティリンクを計算するために、relアラーム(rel-alarms)が使用される。一実施形態では、Pがすべてのプログラムポイントのセットを表せば、Vがプログラム内の変数のセットを表し、Cがプログラム変数、定数、および算術演算子および論理演算子を使用して形成することができるすべての条件のセットである。さらに、タプル(c,Φ)は、antconds(antcond)c∈Cを、それのrelアラームΦ∈αの1つと共に示すために使用される。したがって、プログラムポイントにおけるこの後方方向データフロー解析(antconds解析)によって計算される値は、L=C×αのサブセットによって与えられる。
与えられた集合S⊆Lに対して、以下を定義することができる:
Figure 2020004363
antconds解析は、全てのプログラムポイントp∈PにおいてLフロー感応性(flow-sensitively)のサブセットを計算する。計算されたこれらの値のさらなる格子(lattice)は
Figure 2020004363
であり、ここで、BはLのパワーセットである。さらに、対応するrelアラームでantcondsを計算するために、ミート(meet)
Figure 2020004363
は次のように定義される:所与のX,Y∈B、および
Figure 2020004363
中間再配置のための手続き内設定におけるantconds 解析のデータフロー方程式を以下に示す;
Figure 2020004363
式(3)および式(2)におけるAntInおよびAntOutは、それぞれ、ノードnの入口(entry)および出口(exit)におけるantconds解析によって計算されたantcondsを表す。また、式(6)は、cond(Φ)を予測可能なアラーム条件として生成するための、ノードnのステートメントに対して報告される静的解析アラームΦ毎の処理を示している。また、式(7)は、静的解析アラーム条件cond(Φ)がノードnにおいて流れ込むantcond cinによって暗示される場合に、antcondとして生成されないことを示す。しかし、図示の場合、静的解析アラームΦは、cinに関連付けられる。また、式(8)は、ノードnにおけるantcondsの計算を推移的に示す。その式は、(1)所与のノードnのステートメント、および(2)事後条件(postcondition)Cに対する最も弱い前提条件(precondition)を返す、関数wprecond(n,C)を仮定する。
Figure 2020004363
は、{+、−、/、*}における算術演算子を示すために使用される。簡単にするために、ノードnに関連付けられたステートメントのいくつかのケースのみが、式(8)に示されている。
静的解析アラームの中間再配置中、各静的解析アラームのアラーム条件は、アラームプログラムポイントに到達する各経路における最高のプログラムポイントで一時的に吊り上げられる。最高の吊り上げポイントは、その前にアラーム条件がもはや予測できなくなるポイントとして識別される。さらに、最も高い吊り上げポイントを識別する2つのケースについて以下に説明する;
ケース1: mがnの先行ノードであり、また分岐ノード(branching node)(すなわち、mのステートメントが制御条件である)である場合、entry(n)において予測可能な静的解析アラーム条件cは、exit(m)において予測できない。さらに、このケースは、cがノードnを有するブランチ以外のmから出てくるブランチのうちの1つを通して予測できないときに生じる。このケースでは、antcond cは、entry(n)で吊り上げられる。あるいは、entry(n)で吊り上げられるantcondsが以下の式(9)によって表される;
Figure 2020004363
図示のアプリケーションコードCAを考えると、A17(およびA19)の条件i≧0&&i≦4は、entry(n13)では予測可能だが、exit(n)では予測可能ではなく、nはn13の先行(predecessor)である。したがって、条件はentry(n13)で吊り上げられる。
ケース2:(1)ノードnがcのオペランドの定義を含み、すなわち、cの予測可能性がnによってキルされ(killed)、(2)ノードnがcから推移的に(transitively)にantcondを生成しない場合、exit(n)において予測可能な条件cは、entry(n)において予測可能ではない。
このケースでは、条件cは、exit(n)で吊り上げられる。すなわち、exit(n)で吊り上げるアラーム条件は、以下の式(10)で表される;
Figure 2020004363
図示のアプリケーションコードCAを考えると、A17(およびA19)のアラーム条件、i≧0&&i≦4は、exit nでは予測可能だが、entry nでは予測可能ではなく、nは、推移的に予測可能なアラーム条件を生成しない。したがって、条件は、exit(n)で吊り上げられる。同様に、この条件もexit(n)で吊り上げられる。さらに、中間再配置の間、吊り上げが冗長であると判明した場合、それは破棄される。非冗長な吊り上げは以下の式(11)および(12)を用いて定義され、ここで、alwaysTrue(c,p)は、条件cが常に以下に示すようにpにおいて保持される場合にのみ真である;
Figure 2020004363
図示のアプリケーションコードCAを考えると、冗長な吊り上げの例として、entry(n13)におけるA17およびA19のアラーム条件の吊り上げは、冗長であり、ここで、吊り上げられたアラーム条件i≧0&&i≦4が、行2においてiに値0が割り当てられているため、常に吊り上げ位置において保持される。
さらに、すべてのノードの入口(entry)および出口(exit)で吊り上げている静的解析アラームの中間再配置は、式(11)および(12)を使用してすべてのノードn∈Nを処理することによって実行される。中間再配置の例として図示のアプリケーションコードCAを考える;
(i) i≧0&&i≦4は、exit(n)およびexit(n)において、A17およびA19の両方をそれのrelアラームとして吊り上げられる。
(ii)n≠0は、exit(n26)(それぞれ、entry(n29))において、Z29(それぞれ、Z29)をそれのrelアラームとして吊り上げられる。
(iii) j≧0 && j≦4は、exit(n34)において、A37をそれのrelアラームとして吊り上げられる。さらに、行38でのインクリメント演算および推移により、j≧−1&&j≦3は、また、exit(n34)においてA39をそれのrelアラームとして吊り上げられる。ケース(i)および(ii)の各々において吊り上げられた2つの条件は、ifステートメントの異なるブランチに属し、リファインメントステップ(refinement step)中にマージ(シンキング(sinking))する候補である。ケース(iii)では、同じポイントに再配置された2つの条件がリファインメントステップ中にそれらの共起を通じてマージされる。
本開示の実施形態によれば、システム100は、再配置モジュール204内にトレーサビリティリンクモジュール208をさらに備える。トレーサビリティリンクモジュール208は、中間再配置、中間再配置および最終的な再配置の改良中などの複数のレベルでトレーサビリティリンクを計算するように構成される。
さらに、トレーサビリティリンクモジュール208は、中間再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算するように構成され、中間再配置された静的解析アラームと静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクは、予測可能なアラーム条件とそれらに対応するrelアラーム(関連するオリジナルの静的解析アラーム)とに基づいて計算される。さらに、S⊆Lのantconds cごとに、対応するrelアラームは、antconds cのrelアラームを返すために、relAlarms(c,S)={Φ|<c,Φ>∈S}として表される。トレーサビリティリンクは、Hoistentry(n)(それぞれ、Hoistexit(n))内の吊り上げられた条件cから、relAlarms(c,AntIn)(それぞれ、relAlarms(c,AntOut))によって与えられるそれの対応するrelアラームまで生成される。
本開示の実施形態によれば、システム100は、再配置モジュール204内に再配置改良モジュール210をさらに含む。再配置改良モジュール210は、中間再配置の改良を実行するように構成される。中間再配置の改良中に、中間再配置された静的解析アラームは、静的解析、データフロー解析、抽象的解釈などの1以上のコード解析技術を使用して、中間再配置された静的解析アラームおよび静的解析アラームへのトレーサビリティリンクに基づいて、利用可能なアラーム条件をそれらに関連するオリジナルの静的解析アラームで計算することに基づいて、アプリケーションコードCAにおける最高のポイントで後でマージされるか、またはマージされない。
さらに、1以上の技術に基づいて計算された利用可能なアラーム条件(available alarm conditions:avconds)は、中間再配置を改良し、さらに静的解析アラームのセットの最終的な再配置を得るために使用される。図示されたアプリケーションコードCAを考慮すると、ここで、cは、中間再配置において吊り上げられた条件からプログラムポイントpにおいて計算されたavcondであり、pは、cに関連する単一のプログラムポイントである。さらに、中間再配置の改良中に、cに関連する位置pは、cが利用可能であり、それのノードがpのノードを支配する最高のプログラムポイントとして計算される。さらに、プログラムポイントpは、cの再配置位置と呼ばれる。さらに、avcondsは、推移的に計算され、ポイントpで計算されたavcond cはpで利用可能な条件cの変換バージョンであることができ、cは、pからpへの経路に沿ってcから推移的に計算される。さらに、pにおける条件cは、cの再配置条件と呼ばれる。したがって、avconds計算における推移性により、再配置位置pおよび再配置条件cは、任意のプログラムポイントで識別されたavcondごとに計算される。さらに、値cおよびpは、最終的な再配置を実施するために後に使用される。さらに、任意のポイントで計算されたavcondは、正確に1つの再配置位置pおよび1つの再配置条件cを有する。さらに、avcondsが推移的に計算されない場合(このケースでは、cはcと同じであるため)、avcond cに対する再配置条件cを計算する必要はない。さらに、avcondの関連する値cおよびpは、それらの再配置のためのオリジナルの静的解析アラーム入力に依存するのではなく、中間再配置における吊り上げられた条件および位置に依存して計算される。avcondsとそれらに関連する値cおよびpの計算を、順方向データフロー解析(avconds解析)を用いて示す。Pがすべてのプログラムポイントの集合であり、Cがプログラム変数、定数、および算術演算子および論理演算子を使用して形成できるすべての条件の集合である例を考察する。それの関連する再配置条件c∈cおよび位置p∈Pに対するavcond c ∈cは、関数f:C→C×Pを用いてマッピングされる。さらに、関連する値を有する条件cは、タプル(c,c,p)として表される。したがって、プログラムポイントpにおける順方向解析(avconds分析)はLのサブセットを計算する。
Figure 2020004363
さらに、antconds解析が、すべてのプログラムポイントp∈Pにおいてフローに敏感にLのサブセットを計算すると、これらの値の格子(lattice)は、
Figure 2020004363
によって示される。
さらに、
Figure 2020004363
は、ジョインノード(join node)nの入口(entry)におけるデータフロー値のミートを示すために用いられる。ミート動作は、以下に示される。
Figure 2020004363
ミート(meet)動作は、冪等(idempotent)、可換(commutative)、および連想(associative)である。式を簡単にするために、ミート動作に対応するジョインノードnは、ミートが実行されるときに既知であると仮定する。ミートポイントエントリ(n)において、ミートポイントにおける2つの異なる経路を介して流入するcの再配置位置が異なる場合にのみ、上記のミート動作は、avcond cの再配置条件および位置をそれぞれcおよびエントリ(n)に更新する。他のケースでは、cに関連する値は変化しないままである。中間再配置の改良のための手続き内設定でavcondを推移的に計算するavconds解析のデータフロー方程式を以下に示す。式(14)および(15)のAvInおよびAvOutは、それぞれ、ノードnの入口および出口でそれらに関連付けられた値を用いて計算されたavcondsを表す;
Figure 2020004363
さらに、図4は、AvOutの計算を示す。さらに、式(16)および(17)は、中間再配置において吊り上げられたすべての条件についてavcondが生成されることを示す。さらに、式(17)は、AvIn内のいくつかの他のavcondがcを暗示する場合、c∈Hoistentry(n)に対するavcondを生成しない。しかし、中間再配置の間、antcondsは、ノードがそれらの条件の予測可能性を停止するときにのみ、ノードの出口で吊り上げられるので、そのような含意処理(implication handling)は式(16)では必要とされない。さらに、式(19)は、avcondsの推移計算を記述し、関数postcond(n,c)は、所与の前提条件cpと、所与のノードnのステートメントに対する最も強い事後条件とを返す。さらに、前記式は、利用可能なアラーム条件のいずれかの再配置条件および位置を更新しない。したがって、avcond cの関連する値は、cが生成されたとき(式(16)または式(17))、またはミート動作が実行されたときにのみ更新される。
さらに、トレーサビリティリンクモジュール208は、改良された中間再配置された静的解析アラームと、静的解析アラームのセットからのそれの対応する静的解析アラームとの間のトレーサビリティリンクを計算するように構成される。さらに、改良された中間再配置された静的解析アラームと、静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクは、利用可能なアラーム条件およびそれらに関連するオリジナルの静的解析アラームに基づいて計算される。順方向トレーサビリティリンク解析は中間再配置の改良中に実行され、C×αのサブセットはすべてのプログラムポイントにおいてフローに敏感に計算され、順方向トレーサビリティリンク解析のミート動作は、式(1)によって示されるミート動作と同様である。
中間再配置の改良の間に実行される順方向トレーサビリティリンク解析のデータフロー方程式を以下に示す:
Figure 2020004363
中間再配置の改良の間に実行される順方向トレーサビリティリンク解析の上記データフロー方程式では、fwdInおよびfwdOutはそれぞれ、ノードnの入口および出口で計算されたavcondを表す。いずれかのプログラムポイントにおける順方向トレーサビリティリンク解析のfwdInおよびfwdOutによってそれぞれ表されるavcondsは、中間再配置の改良の間に実行されるavconds解析の式(14)および(15)によって同じプログラムポイントにおいて計算されるavcondsと同じままである。
改良された中間再配置の計算:
中間再配置の改良のために利用されるavcondsが識別され、識別されたavcond cごとに、cの再配置条件cがcの再配置位置pに再配置され、再配置された条件cからcの各relアラームにトレーサビリティリンクが作成される。利用されるavcondsは、アプリケーションコードCA内のすべてのノードnを、式(21)および式(22)を使用して処理することによって識別され、式(21)および(式22)はそれぞれ、ノードnの入口および出口の直後にもはや利用できないavcondsを以下に示すように計算する;
Figure 2020004363
これらの上記の方程式は、中間再配置における2つのケースと同様の行上にある。2つの式による各ノードの処理は、以下のことを保証する:(1)プログラムポイントpで生成された各avcond cは、pで始まり、いくつかの他のavcondに推移的に帰着する場合を除いて、プログラム出口で終わるすべてのパスに沿って再配置するために利用され、そして(2)そのようなパスに沿った利用は1回だけであり、cが利用可能なパス上の最後のプログラムポイントで発生する。図示のアプリケーションコードCAにおけるn≠0のような数個のavcondsがプログラムの終了ポイントに到達することができるが、任意のポイントに対して方程式(21)および(22)のいずれによっても計算されないので、提案された技術は再配置のためにすべての条件c ∈ condsIn(entry(End))を利用する。中間再配置の改良の計算は、以下の計算ステップを用いて説明される:
Figure 2020004363
本開示の実施形態によれば、システム100は、再配置モジュール204内に最終的な再配置モジュール212をさらに含む。最終的な再配置モジュール212は、改良された中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行して、静的解析アラームのセットの最終的な再配置を得るように構成される。さらに、最終的な再配置技術のセットは、最終的な再配置された静的解析アラームを得るための改良された中間再配置された静的解析アラームの単純化、最終的な再配置された静的解析アラームからの冗長性の除去、および最終的な再配置された静的解析アラームからの冗長性の除去後に静的解析アラームの総数を増加させる再配置ケースを識別することによるフォールバックの実行を含む。avcondsを使用する最終的な再配置は、以下に示すようないくつかのステップで実行され、各ステップは、以下に説明するような最終的な再配置技術のセットからの技術の各々を示す。
最終的な再配置ステップ1(改良された中間再配置された条件の簡素化):
さらに、改良された中間再配置された条件を単純化する間、すべてのプログラムポイントは、そのポイントで再配置される条件を単純化するために処理される。単純化は、同じ変数によって関連付けられる再配置された条件の共起で実行される。トレーサビリティリンクモジュール208による単純化の後に生じる条件に対するトレーサビリティリンクは、単純化された条件のトレーサビリティリンクをマージすることによって得られる。プログラムエンドポイント(行40)におけるavcondsを使用し、図示されたアプリケーションコードCAを使用する例を考えると、ステップ1は、exit(n34)において、j≧0&&j≦4およびj≧−1&&j≦3を、A37およびA39へのそれぞれのそれらのリンクで再配置する。単純化ステップの後、これらの2つの条件は、j≧0&&j≦3を、A37およびA39の両方へのそれのトレーサビリティリンクでもたらす。
最終的な再配置ステップ2(冗長性除去のための後処理):
単純化ステップの後に生じる再配置は、いくらかの冗長性を有し得る。以下に示すアプリケーションコードCBの例を考える;
Figure 2020004363
3つのAIOBアラームを有するアプリケーションコードCBは、7行目、8行目、および14行目において報告される。単純化ステップ1の後に再配置される条件は、entry(n)、exit(n12)、およびentry(n18)である。これらの3つの再配置された条件は、それぞれ、5、13、および17行目のアサーションとして示される。前記アプリケーションコードCBにおいて、実行される再配置は、全体のアラームカウントを減少させない。さらに、entry(n18)(行17)に再配置される条件は、2つの他の再配置される条件の存在下で冗長である:他の2つの条件は、この条件に対する支配的なアラームとして作用する。そのような冗長性を排除することによって再配置を改善するために、当技術分野で知られている静的解析アラームグループ化技術が単純化ステップ1の後に結果として生じる単純化された再配置された条件に適用され、さらに、グループ化技術によってフォロワ(follower)として識別される再配置された条件が破棄される。さらに、この最終的な再配置ステップ2を3つの再配置された条件に適用することによって、冗長な再配置された条件を破棄し、アラーム全体のカウントを1つ減らす。
最終的な再配置ステップ3(フォールバックのための後処理)
ステップ2の後に取得された再配置された静的解析条件(静的解析アラーム)は、2つの再配置目標が互いに影響し合うため(特定のシナリオで以下に示されるように)、またはantcondsおよびavcondsの推移的な計算のため、静的解析アラームの数を増加させ得る。以下に示すアプリケーションコードCCの例を考える;
Figure 2020004363
この図示のアプリケーションコードの例CCは、2つの再配置目標の互いに対する影響を示すように作成される。この例は、1つのアラームA17を有する。このアラームの条件、i≧0&&i≦4,はentry(n15)においてavcondではない。さらに、entry(n13)で吊り上げられた条件は、中間再配置の間に式(11)を介して破棄され、この破棄のため、条件はentry(n13)で、したがってentry(n15)でavcondされない。したがって、A17の再配置は、exit(n)およびexit(n)で再配置される2つの条件をもたらす。冗長な条件は、それらの原因ポイントにより近い静的解析アラームを報告するために、中間再配置の間に破棄される。しかしながら、図示の例では、破棄により最終的な静的解析アラームのカウントが増加する。この破棄がない場合、条件は、最終的な静的解析アラームのカウントを増加させることなく、entry(n15)でのみ再配置される。これは2つの再配置目標が互いに影響し合うこと、すなわち、それらの原因により近いアラームを報告することが、アラームの数を増加させ得ることを示す。後処理ステップ3では、アラームの数が増加する状況が識別され、これらの状況における再配置が戻される(reverted)(フォールバックアプローチ(fall back approach))、すなわち、再配置されたもの代わりにオリジナルの静的解析アラームが報告される。
最終的な再配置例:
アプリケーションコードCAにおける静的解析アラームに最終的な再配置技術のセットを適用することは、以下の最終的な再配置をもたらす。この例では、後処理ステップ2および3が単純化ステップ1の後に得られる再配置を変更(改善)しない。
(1) i≧0&&i≦4は、A17およびA19へのそれのトレーサビリティリンクでentry(n11)に再配置され、再配置は、exit(n11)に適用されるとき、式22によって識別される。
(2) n≠0は、Z_27およびZ_29へのそれのトレーサビリティリンクでentry(n32)に再配置され、再配置はentry(End)が特別なケースとして処理されるときに識別される。
(3) j≧0&&j≦3は、A37およびA37へのそれのトレーサビリティリンクでexit(n34)に再配置される。
さらに、トレーサビリティリンクモジュール208は、最終的に再配置された静的解析アラームと、静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクを計算するようにも構成される。さらに、最終的な再配置された静的解析アラームと静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクは、改良された中間再配置されたアラームと静的解析アラームのセットにおける静的解析アラームとの間で計算されたトレーサビリティリンクに基づいて計算される。さらに、最終的に再配置された静的解析アラームのセットは、静的解析アラームのセットからの静的解析アラームの報告および手動検査からの冗長性を低減するために、静的解析アラームのセットの代わりに通信またはI/O106に表示される。さらに、最終的に再配置された静的解析アラームとそれらに対応するオリジナルの静的解析アラームとの間のトレーサビリティリンクはユーザが同じものを要求する場合にのみ、通信またはI/Oインターフェース106に表示される。
図1−2に関して、図3は、装置100を用いて複数の静的解析アラームを再配置するための方法を示す例示的なフロー図である。次に、本開示の方法のステップを、図1−2に示すシステム100およびモジュール202−212のコンポーネント、ならびに流れ図を参照して説明する。ステップ302において、アプリケーションコードが静的アナライザモジュール202への入力として提供される。次のステップ304において、静的解析モジュール202によって受信されたアプリケーションコードに対して静的解析が実行され、静的解析アラームのセットが生成され、静的解析アラームのセットは、アプリケーションコードにおけるエラーを検出する。
次のステップ306では静的解析アラームのセットの中間再配置が中間再配置モジュール206で実行され、静的解析アラームのセットにおける各静的解析アラームは静的解析アラームのセットによって検出されるエラーに影響を与えることなく、アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される。さらに、静的解析アラームは、静的解析、データフロー解析、抽象的解釈などの1以上のコード解析技術を使用して、静的解析アラームのセットからのそれらに関連するオリジナルの静的解析アラームで予測可能なアラーム条件を計算することによって、それの生成のために原因ポイントにより近い上方に再配置される。次のステップ308では、トレーサビリティリンクモジュール208内で、中間再配置された静的解析アラームと静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクが計算される。さらに、中間再配置された静的解析アラームと静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクは、予測可能なアラーム条件およびそれらに関連するオリジナルの静的解析アラームに基づいて計算される。
次のステップ310において、中間再配置の改良は、改良モジュール210を再配置することによって実行される。さらに、中間再配置の改良中に、中間再配置された静的解析アラームは、静的解析、データフロー解析、抽象的解釈などの1以上のコード解析技術を使用して、中間再配置された静的解析アラームおよび静的解析アラームへのそれらのトレーサビリティリンクに基づいて、利用可能なアラーム条件をそれらに関連するオリジナルの静的解析アラームで計算することに基づいて、アプリケーションコードにおける最高のポイントで後でマージされるか、またはマージされない。
次のステップ312において、トレーサビリティリンクはトレーサビリティリンクモジュール208内で、改良された中間再配置された静的解析アラームと静的解析アラームのセットからのそれらに対応する静的解析アラームとの間で計算される。さらに、改良された中間再配置された静的解析アラームとそれらに対応する静的解析アラームとの間のトレーサビリティリンクが、利用可能なアラーム条件とそれらに関連するオリジナルの静的解析アラームとに基づいて計算される。
次のステップ314において、最終的な再配置モジュール212内で、静的解析アラームのセットの最終的な再配置を得るために、最終的な再配置技術のセットが、改良された中間再配置された静的解析アラームのセットに対して実行される。さらに、最終的な再配置技術のセットは、最終的な再配置された静的解析アラームを得るための改良された中間再配置された静的解析アラームの単純化、最終的な再配置された静的解析アラームからの冗長性の除去、および最終的な再配置された静的解析アラームからの冗長性の除去後に静的解析アラームの総数を増加させる再配置ケースを識別することによるフォールバックの実行を含む。
次のステップ316において、トレーサビリティリンクモジュール208内で、最終的な再配置された静的解析アラームと静的解析アラームのセットからのそれらに対応する静的解析アラームとの間のトレーサビリティリンクが計算される。さらに、最終的な再配置された静的解析アラームと静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクは、改良された中間再配置されたアラームと静的解析アラームのセットにおける静的解析アラームとの間で計算されたトレーサビリティリンクに基づいて計算される。次のステップ318において、最終的な再配置された静的解析アラームのセットが通信インターフェース106に表示される。さらに、最終的に再配置された静的解析アラームと、静的解析アラームのセットにおける静的解析アラームとの間のトレーサビリティリンクも、ユーザからの要求に応じて表示される。さらに、再配置された技法は、静的解析アラームのセットの報告および手動検査からの冗長性の低減をもたらす。
本開示の実施形態によれば、複数の静的解析アラームを再配置するためのシステム100は静的解析アラームの数を減らすためのアラーム再配置技術の実用性および有効性を決定するために、以下の実施例の助けを借りて説明することもできる。
いくつかの実験が行われ、1つの実験セットアップは、市販の静的解析ツール(CSAT:static analysis tool)の解析フレームワークの上に静的解析アラーム(static analysis alarms)の再配置(repositioning)を実施した。解析フレームワークはCプログラムの解析をサポートし、関数サマリを使用してデータフロー解析を実施することを可能にする。antconds 解析とavconds解析の両方のさらに限定されたバージョンは、ボトムアップ順序でのみデータフロー解析を解くことによって、機能間設定で実施された。さらに、antconds解析では、関数エントリで予測可能な条件は、関数が単一の場所から呼び出された場合にのみ、それの呼び出し側に伝播された。さらに、avconds解析では、関数の呼び出し(call invocation)に関係なく、関数出口で利用可能なすべての条件が呼び出し側に伝播された。このインプリメンテーションは静的解析アラームを複数のロケーションに再配置することをもたらし、上記で議論される特定のケースについて、フォールバックアプローチが実施され、これは、以下のセクションで詳細に説明される。
評価の目的でユースケースの例を考えると、16個のオープンソースアプリケーションと4個の産業アプリケーションを含む20個のアプリケーションを備える表1が以下に示される。
Figure 2020004363
アプリケーションは、i7 2.5GHzプロセッサおよび16GB RAMを有するコンピュータ上の市販の静的解析ツールを使用して解析される。オープンソースアプリケーションは、当技術分野で知られているグループ化技法を評価するために使用されるベンチマークから選択される。さらに、通常チェックされる4つのランタイムエラーのカテゴリに対応する静的解析アラーム:ゼロ除算(ZD)、境界外の配列インデックス(AIOB)、整数オーバーフロー/アンダーフロー(OFUF)、および初期化されていない変数(UIV)が選択され、選択された静的解析アラームは、最新の静的解析アラームグループ化技術を使用する後処理の後であった。さらに、支配的な静的解析アラームのみが、再配置への入力として使用される。それらのアラーム条件内に関数呼び出しを有するさらなる静的解析アラームは、グループ化および再配置から除外される。さらに、表1は、再配置の前後のアラームの数と、列#Input、#Output、および%Reductionにそれぞれ表される、減少したアラームのパーセンテージとの結果を示す。減少したアラームのパーセンテージは0〜20%の範囲であり、表1に示すように、中間の低減は7.25%、平均低減は6.47%。さらに、オープンソースアプリケーション上の平均低減は、産業アプリケーション上の13.07%と比較して、5.41%である。さらに、表1は、再配置された条件の後処理(最終的な再配置技術のステップ2および3)からもたらされる改善も詳述する。表1の更なる列Redundant condsは最終的な再配置技術のステップ2におけるグループ化技術によって、フォロワとして識別された再配置された条件の数、すなわち、冗長な条件を提示する。さらに、Redundant condsの列は、最終的な再配置技術のステップ1によって計算された再配置された条件の約1%がステップ2によって冗長であると識別されることを示す。さらに、表1の列fallbackはフォールバックが適用されたインスタンスの数23を示し、フォールバックが実際にはめったに適用されないことを示す。これらの23のフォールバックインスタンスのさらなる手動解析は、(a)3つのインスタンスがavconds/antconds計算のために我々が有していた機能間インプリメンテーション(interfunctional implementation)の種類によるものであったこと、(b)18のインスタンスが互いに影響を与える2つの再配置目標によるものであったこと、および(c)他の2つのケースが条件を推移的に計算することによるものであったことを示した。さらに、表1の結果は、異なる関数において最初に報告された静的解析アラームのマージは頻繁ではないが(列mergingに示される結果)、関数境界を横切って静的解析アラームを再配置することは非常に一般的であることを示す(列Reposに示される結果)。この解析から、後方への再配置を停止する理由は、再配置されたアラームの約6%について、後方への再配置が、関数が複数の位置から呼び出されたときに関数の入口で停止したことを示していることが分かる(列Func入力に示される結果)。後方再配置を停止する別の理由は、再配置されたアラームの約59%について、後方再配置が分岐ノードによって停止し、再配置されたアラームがifステートメントの一方の分岐(列Branchesに示される結果)にのみ現れ、最後に他方の再配置されたアラーム(35%)について、後方再配置がアラーム条件に現れる変数の定義(列Definitionsに示される結果)によって停止したことであると理解することができる。
したがって、複数の静的解析アラームを再配置するためのシステムおよび方法が提供される。提案された再配置技術は、報告された静的解析アラームの数を減らすため、またはそれらの原因により近いそれらを報告するため、または両方の目的のために、それらのオリジナルの報告のプログラムポイントからアプリケーションコードの上または下に静的解析アラームのセットを再配置する。さらに、再配置された技術はまた、静的解析アラームの再配置が、それらによってカバーされないエラーに影響を与えることなく行われることを保証する。
本明細書は当業者が実施形態を実施および使用できるように、本明細書の主題を記載する。主題の実施形態の範囲は、特許請求の範囲によって定義され、当業者が思いつく他の修正を含み得る。そのような他の変更は、特許請求の範囲の文字通りの言語と異ならない類似の要素を有する場合、または特許請求の範囲の文字通りの言語と実質的な違いがない等価な要素を含む場合、特許請求の範囲内にあることが意図される。
当然のことながら、保護の範囲はそのようなプログラムに、および加えてメッセージを内部に有するコンピュータ可読手段に、拡張され、そのようなコンピュータ可読記憶手段はプログラムがサーバまたはモバイルデバイス、または任意の適切なプログラマブルデバイス上で動作するときに、方法の1以上のステップを実装するためのプログラムコード手段を含む。ハードウェアデバイスは例えば、サーバまたはパーソナルコンピュータなどの任意の種類のコンピュータ、あるいはそれらの任意の組合せを含む、プログラムすることができる任意の種類のデバイスとすることができる。デバイスはまた、例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などのハードウェア手段、またはハードウェア手段とソフトウェア手段の組み合わせ、例えば、ASICおよびFPGA、または少なくとも1つのマイクロプロセッサおよびソフトウェアモジュールが内部に配置された少なくとも1つのメモリとすることができる手段を含むことができる。したがって、手段は、ハードウェア手段とソフトウェア手段の両方を含むことができる。本明細書で説明する方法の実施形態は、ハードウェアおよびソフトウェアで実施することができる。装置はまた、ソフトウェア手段を含んでもよい。あるいは、実施形態が例えば、複数のCPUを使用して、異なるハードウェアデバイス上で実装されてもよい。
本明細書の実施形態は、ハードウェア要素およびソフトウェア要素を含むことができる。ソフトウェアで実施される実施形態は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されない。本明細書で説明される様々なモジュールによって実行される機能は、他のモジュールまたは他のモジュールの組み合わせにおいて実装され得る。この説明の目的のために、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを備え、格納し、通信し、伝搬し、または移送することができる任意の装置であり得る。
図示のステップは、図示の例示的な実施形態を説明するために示されており、進行中の技術開発は、特定の機能が実行される方法を変えるであろうことが予期されるべきである。これらの実施例は、例示の目的でここに提示されるものであり、限定するものではない。さらに、機能的構築ブロックの境界は、説明の便宜上、本明細書において任意に定義されている。特定の機能及びそれらの関係が適切に実行される限り、代替の境界を定義することができる。本明細書中に含まれる教示に基づいて、代替物(本明細書中に記載されるもの等価物、拡張物、変形物、逸脱物(deviations)などを含む)は、当業者に明らかである。そのような代替物は、開示された実施形態の範囲および精神内に入る。また、「備える(comprising)」、「有する(having)」、「含む(containing)」、及び「含む(including)」という単語、及び同様な形式は、これらの単語のいずれか1つに続く1つ又は複数の項目がそのような1つ又は複数の項目の網羅的なリストであることを意味せず、又は列挙された1つ又は複数の項目だけに限定されることを意味しないという点で、意味が等価であり、オープンエンドであることが意図される。本明細書および添付の特許請求の範囲で使用されるように、単数形「a」、「an」、および「the」は文脈が明確に別段の指示をしない限り、複数の参照を含むことにも留意されたい。
さらに、1以上のコンピュータ可読記憶媒体を、本開示と一致する実施形態を実装する際に利用することができる。コンピュータ可読記憶媒体は、プロセッサによって読み取り可能な情報またはデータを記憶することができる任意のタイプの物理メモリを指す。したがって、コンピュータ可読記憶媒体は、1以上のプロセッサに本明細書で説明される実施形態と一致するステップまたはステージを実行させるための命令を含む、1以上のプロセッサによる実行のための命令を記憶することができる。用語「コンピュータ可読媒体」は有形のアイテムを含み、搬送波および過渡信号を除外する、すなわち、非一時的であると理解されるべきである。例としては、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、揮発性メモリ、不揮発性メモリ、ハードドライブ、CD ROM、DVD、フラッシュドライブ、ディスク、および任意の他の既知の物理記憶媒体が挙げられる。
開示および実施例は例示としてのみ考えられ、開示された実施形態の真の範囲および精神は以下の特許請求の範囲によって示されることが意図される。

Claims (9)

  1. 複数の静的解析アラームを再配置するためのプロセッサ実装方法であって、
    静的解析モジュールへの入力としてアプリケーションコードを提供するステップと、
    静的解析アラームのセットを生成するために、前記アプリケーションコードに対して静的解析を実行するステップであって、前記静的解析アラームのセットは、前記アプリケーションコードにおけるエラーを検出する、ステップと、
    前記静的解析アラームのセットの中間再配置を実行するステップであって、前記静的解析アラームのセットにおける各静的解析アラームは、前記静的解析アラームのセットによって検出されたエラーに影響を与えることなく、前記アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される、ステップと、
    中間再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算するステップと、
    前記中間再配置の改良を実行するステップと、
    改良された前記中間再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算するステップと、
    前記静的解析アラームのセットの最終的な再配置を得るために、改良された前記中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行するステップと、
    最終的な再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算するステップと、
    前記最終的な再配置された静的解析アラームのセットを表示するステップと、
    を備える方法。
  2. 静的解析、データフロー解析、抽象的解釈等などの1つ以上のコード解析技術を使用して、前記静的解析アラームのセットからの関連したオリジナルの静的解析アラームを用いて予測可能なアラーム条件を計算することによって、前記静的解析アラームのセットにおける静的解析アラームの各々は、生成のために一時的に原因ポイントにより近い上方に再配置される、請求項1に記載の方法。
  3. 前記静的解析アラームのセットにおける前記中間再配置された静的解析アラームと前記静的解析アラームとの間の前記トレーサビリティリンクは、予測可能なアラーム条件と、関連するオリジナルの静的解析アラームとに基づいて計算される、請求項1に記載の方法。
  4. 前記中間再配置の改良中に、前記中間再配置された静的解析アラームは、静的解析、データフロー解析、抽象的解釈等などの1以上のコード解析技術を使用して、前記中間再配置された静的解析アラームおよび前記静的解析アラームへのトレーサビリティリンクに基づいて、利用可能なアラーム条件を関連するオリジナルの静的解析アラームを用いて計算することに基づいて、前記アプリケーションコードにおける最高のポイントで後でマージされるか、またはマージされない、請求項1に記載の方法。
  5. 前記静的解析アラームのセットにおける改良された前記中間再配置された静的解析アラームと前記静的解析アラームとの間の前記トレーサビリティリンクは、利用可能なアラーム条件と、関連するオリジナルの静的解析アラームとに基づいて計算される、請求項1に記載の方法。
  6. 前記最終的な再配置技術のセットは、前記最終的な再配置された静的解析アラームを得るための改良された前記中間再配置された静的解析アラームの単純化、前記最終的な再配置された静的解析アラームからの冗長性の排除、および前記最終的な再配置された静的解析アラームからの前記冗長性の排除後に、静的解析アラームの全体数を増加させる再配置ケースを識別することによるフォールバックの実行を含む、請求項1に記載の方法。
  7. 前記静的解析アラームのセットにおける前記最終的な再配置された静的解析アラームと前記静的解析アラームとの間のトレーサビリティリンクは、前記静的解析アラームのセットにおける改良された前記中間再配置された静的解析アラームと前記静的解析アラームとの間で計算されたトレーサビリティリンクに基づいて計算される、請求項1に記載の方法。
  8. 複数の静的解析アラームを再配置するためのシステムであって、
    命令および1以上のモジュール(108)を記憶するメモリ(102)と、
    1以上の通信または入出力インターフェース(106)と、
    前記1以上の通信インターフェース(106)を介して前記メモリ(102)に結合された1以上のハードウェアプロセッサ(104)と、を備え
    前記1以上のハードウェアプロセッサ(104)は、前記1以上のモジュール(108)を実行するための前記命令によって構成され、
    前記1以上のモジュール(108)は、
    入力としてアプリケーションコードを受信し、静的解析アラームのセットを生成するために、受信された前記アプリケーションコードに対して静的解析を実行し、前記静的解析アラームのセットは、前記アプリケーションコードにおけるエラーを検出する、静的解析モジュール(202)と、
    前記静的解析アラームのセットの中間再配置を実行する中間再配置モジュールであって、前記静的解析アラームのセットにおける各静的解析アラームは、前記静的解析アラームのセットによって検出されたエラーに影響を与えることなく、前記アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される、中間再配置モジュール(206)と、
    中間再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算するトレーサビリティリンクモジュール(208)と、
    前記中間再配置の改良を実行する再配置改良モジュール(210)と、
    改良された前記中間再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算するトレーサビリティリンクモジュール(208)と、
    前記静的解析アラームのセットの最終的な再配置を得るために、改良された前記中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行する最終的な再配置モジュール(212)と、
    最終的な再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算する前記トレーサビリティリンクモジュール(208)と、
    前記最終的な再配置された静的解析アラームのセットを表示するための通信または入出力インターフェース(106)と、
    を備える、システム。
  9. コンピュータ可読プログラムが具現化された非一時的コンピュータ可読媒体であって、前記コンピュータ可読プログラムは、1以上のハードウェアプロセッサによって実行されるときに、
    静的解析モジュールへの入力としてアプリケーションコードを提供することと、
    静的解析アラームのセットを生成するために、前記アプリケーションコードに対して静的解析を行い、前記静的解析アラームのセットは、前記アプリケーションコードにおけるエラーを検出する、ことと、
    前記静的解析アラームのセットの中間再配置を実行し、前記静的解析アラームのセットにおける各静的解析アラームは、前記静的解析アラームのセットによって検出されたエラーに影響を与えることなく、前記アプリケーションコードにおける最高のプログラムポイントで一時的に上方に再配置される、ことと、
    中間再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算することと、
    前記中間再配置の改良を実行することと、
    改良された前記中間再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算することと、
    前記静的解析アラームのセットの最終的な再配置を得るために、改良された前記中間再配置された静的解析アラームのセットに対して最終的な再配置技術のセットを実行することと、
    最終的な再配置された静的解析アラームと、前記静的解析アラームのセットからの対応する静的解析アラームとの間のトレーサビリティリンクを計算することと、
    前記最終的な再配置された静的解析アラームのセットを表示することと、
    を行わせる、非一時的コンピュータ可読媒体。
JP2018243236A 2018-06-25 2018-12-26 複数の静的解析アラームを再配置するための方法およびシステム Active JP6710268B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201821023655 2018-06-25
IN201821023655 2018-06-25

Publications (2)

Publication Number Publication Date
JP2020004363A true JP2020004363A (ja) 2020-01-09
JP6710268B2 JP6710268B2 (ja) 2020-06-17

Family

ID=64572117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018243236A Active JP6710268B2 (ja) 2018-06-25 2018-12-26 複数の静的解析アラームを再配置するための方法およびシステム

Country Status (3)

Country Link
US (1) US10684937B2 (ja)
EP (1) EP3588272B1 (ja)
JP (1) JP6710268B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112597756B (zh) * 2020-12-17 2022-11-11 海光信息技术股份有限公司 操作语句报告的生成方法、装置、设备、存储介质
EP4365744A1 (en) * 2021-07-29 2024-05-08 Siemens Aktiengesellschaft Software security defect prediction method and device, and computer readable medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141741A (ja) * 2010-12-28 2012-07-26 Fujitsu Ltd 解析支援プログラム,解析支援装置および解析支援方法
JP2014089700A (ja) * 2012-09-27 2014-05-15 Tata Consultancy Services Ltd ランタイム実行障害のソースを識別するシステム及び方法
JP2015088191A (ja) * 2013-10-31 2015-05-07 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析警告のユーザインタフェース使用可能レビューを促進するシステム及び方法
JP2016071895A (ja) * 2014-09-29 2016-05-09 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited クラスタ化されたコード解析警告のレビューのための方法およびシステム
JP2018026135A (ja) * 2016-08-11 2018-02-15 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析警告の効率的な運用のための原因ポイント解析のためのシステム及び方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098616B2 (en) * 2009-12-11 2015-08-04 International Business Machines Corporation Analyzing computer programs to identify errors
JP5665128B2 (ja) 2011-05-30 2015-02-04 日本電気通信システム株式会社 静的解析支援装置、静的解析支援方法、及びプログラム
US9672355B2 (en) * 2011-09-16 2017-06-06 Veracode, Inc. Automated behavioral and static analysis using an instrumented sandbox and machine learning classification for mobile security
US8756587B2 (en) * 2011-09-30 2014-06-17 International Business Machines Corporation Static analysis of computer software applications
US9459986B2 (en) * 2013-08-28 2016-10-04 International Business Machines Corporation Automatic generation of analysis-equivalent application constructs
US10097574B2 (en) * 2014-12-18 2018-10-09 International Business Machines Corporation Auto-tuning program analysis tools based on user feedback
US10169191B2 (en) 2016-04-23 2019-01-01 International Business Machines Corporation Warning data management with respect to a development phase
US10664601B2 (en) * 2016-10-25 2020-05-26 Nanjing University Method and system automatic buffer overflow warning inspection and bug repair
US10586050B2 (en) * 2016-12-05 2020-03-10 International Business Machines Corporation Consolidating static analysis tool warnings using dynamic programming

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012141741A (ja) * 2010-12-28 2012-07-26 Fujitsu Ltd 解析支援プログラム,解析支援装置および解析支援方法
JP2014089700A (ja) * 2012-09-27 2014-05-15 Tata Consultancy Services Ltd ランタイム実行障害のソースを識別するシステム及び方法
JP2015088191A (ja) * 2013-10-31 2015-05-07 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析警告のユーザインタフェース使用可能レビューを促進するシステム及び方法
JP2016071895A (ja) * 2014-09-29 2016-05-09 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited クラスタ化されたコード解析警告のレビューのための方法およびシステム
JP2018026135A (ja) * 2016-08-11 2018-02-15 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析警告の効率的な運用のための原因ポイント解析のためのシステム及び方法

Also Published As

Publication number Publication date
EP3588272B1 (en) 2021-03-10
US20190391903A1 (en) 2019-12-26
EP3588272A1 (en) 2020-01-01
JP6710268B2 (ja) 2020-06-17
US10684937B2 (en) 2020-06-16

Similar Documents

Publication Publication Date Title
US9026857B2 (en) Method and system for postponed error code checks
US10387236B2 (en) Processing data errors for a data processing system
US11835987B2 (en) Methods and apparatus for finding long methods in code
US20150220332A1 (en) Resolving merge conflicts that prevent blocks of program code from properly being merged
US20140130016A1 (en) Offline type checking in programming languages
US11176248B2 (en) Remediation of security vulnerabilities in computer software
JP6710268B2 (ja) 複数の静的解析アラームを再配置するための方法およびシステム
US20150112917A1 (en) Case-based reasoning
KR102118236B1 (ko) 컨트랙트에 대한 운영 체제 지원 기법
Muske et al. Repositioning of static analysis alarms
US10929265B2 (en) Optimizing automated interactions with web applications
US20140351677A1 (en) Minimum cut set evaluation system, minimum cut set calculation method, and program
US20210216509A1 (en) Database replication error recovery based on supervised learning
Morshed et al. A literature review of code clone analysis to improve software maintenance process
EP3828713A1 (en) Method and system for non-impacting control dependencies based repositioning of static analysis alarms
US9619765B2 (en) Monitoring a situation by generating an overall similarity score
US20150112914A1 (en) Case-based reasoning
US11650907B2 (en) Systems and methods for selective path sensitive interval analysis
US20150112913A1 (en) Case-based reasoning
Sivanandan Fail fast-fail often: Enhancing agile methodology using dynamic regression, code bisector and code quality in Continuous Integration (CI)
US8433668B2 (en) Context-based failure reporting for a constraint satisfaction problem
JP2024031735A (ja) ソースコード修正支援装置およびソースコード修正支援方法
US20190026107A1 (en) Source code comparison apparatus and computer readable recording medium
CN115756490A (zh) 提高安卓编译效率的方法、装置、设备、存储介质和产品
CN116909782A (zh) 根因分析方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190326

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200424

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200512

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200526

R150 Certificate of patent or registration of utility model

Ref document number: 6710268

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250