JP2021124852A - Correction pattern data-driven composition - Google Patents
Correction pattern data-driven composition Download PDFInfo
- Publication number
- JP2021124852A JP2021124852A JP2020016769A JP2020016769A JP2021124852A JP 2021124852 A JP2021124852 A JP 2021124852A JP 2020016769 A JP2020016769 A JP 2020016769A JP 2020016769 A JP2020016769 A JP 2020016769A JP 2021124852 A JP2021124852 A JP 2021124852A
- Authority
- JP
- Japan
- Prior art keywords
- defect
- node
- software program
- visit
- defective
- 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.)
- Pending
Links
- 238000012937 correction Methods 0.000 title claims abstract description 33
- 230000007547 defect Effects 0.000 claims abstract description 343
- 230000008439 repair process Effects 0.000 claims abstract description 83
- 238000000034 method Methods 0.000 claims abstract description 72
- 230000002950 deficient Effects 0.000 claims description 336
- 230000004048 modification Effects 0.000 claims description 147
- 238000012986 modification Methods 0.000 claims description 147
- 238000007689 inspection Methods 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 5
- 230000003068 static effect Effects 0.000 description 23
- 238000007792 addition Methods 0.000 description 16
- 230000009471 action Effects 0.000 description 15
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 238000002408 directed self-assembly Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 206010011878 Deafness Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
本開示で議論される実施形態は、修正パターンのデータ駆動型合成に関する。 The embodiments discussed in this disclosure relate to data-driven synthesis of modified patterns.
ソフトウェアプログラムは、意図したように動作できない障害(通常、「バグ」と呼ばれる)をそれらの中に含むことが多い。ときに、静的解析ツールが、ソフトウェアプログラムの中の欠陥を識別するために使用される。 Software programs often include faults (usually called "bugs") that do not work as intended. Sometimes static analysis tools are used to identify defects in software programs.
本開示で請求される主題は、上述のような欠点を解決する実施形態や上述のような環境でのみ機能する実施形態に限定されない。むしろ、この背景技術は、単に、本開示に記載される複数の実施形態が実施される技術分野の一例を説明するために提供される。 The subject matter claimed in this disclosure is not limited to embodiments that resolve the shortcomings described above or that function only in the environment described above. Rather, this background technique is provided solely to illustrate an example of a technical field in which the plurality of embodiments described in the present disclosure are implemented.
一実施形態の一態様によると、方法は、編集操作を識別するステップを含んでよい。編集操作は、欠陥のあるソフトウェアプログラムの欠陥に対応してよい。編集操作は、欠陥のあるソフトウェアプログラムと改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき識別されてよい。改善されたソフトウェアプログラムは、欠陥の修復としての編集操作を含んでよい。方法は、欠陥抽象構文木(abstract syntax tree:AST)を取得するステップを更に含んでよい。欠陥ASTは、欠陥のあるソフトウェアプログラムを表してよい。欠陥ASTは、複数の欠陥ノードを含んでよい。複数の欠陥ノードは、欠陥を含む欠陥のあるソフトウェアプログラムの欠陥位置に対応してよい。複数の欠陥ノードは、編集操作により変更される編集ノードを含んでよい。さらに、方法は、複数の欠陥ノードのうちの特定ノードをプライマリノードとして分類するステップを含んでよい。プライマリノードは、編集操作を実施する際の開始点として動作してよい。方法は、プライマリノードから編集ノードへの訪問(visitor、ビジター)パスを識別するステップを更に含んでよい。訪問パスは、訪問ASTに含まれてよい。訪問ASTは欠陥ASTに対応してよい。訪問パスは、プライマリノードと編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含んでよい。方法は、修正パターンを生成するステップを含んでよい。修正パターンは、訪問パス及び編集操作に基づいてよい。さらに、修正パターンは、欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成されてよい。方法は、修復操作を実行するステップを更に含んでよい。修復操作は、被分析ソフトウェアプログラムの被検査コードの識別された欠陥に関して実行されてよい。修復操作は、修正パターンを用いて実行されてもよい。さらに、修復操作は、被検査コードの識別された欠陥が欠陥のあるソフトウェアプログラムの欠陥と同じ種類であることに基づき、実行されてよい。 According to one aspect of an embodiment, the method may include a step of identifying an editing operation. The editing operation may address the flaws in the defective software program. Editing operations may be identified based on one or more differences between a defective software program and an improved software program. The improved software program may include an editing operation as a defect repair. The method may further include the step of obtaining an abstract syntax tree (AST). The defective AST may represent a defective software program. A defective AST may include a plurality of defective nodes. The plurality of defective nodes may correspond to the defect location of the defective software program including the defect. The plurality of defective nodes may include an edit node that is modified by an edit operation. In addition, the method may include the step of classifying a particular node of the plurality of defective nodes as the primary node. The primary node may act as a starting point when performing an edit operation. The method may further include identifying the visitor path from the primary node to the edit node. The visit path may be included in the visit AST. The visiting AST may correspond to a defective AST. The visit path may include a sequence of one or more visit edges that show the programmatic relationship between the primary node and the edit node. The method may include the step of generating a modification pattern. The modification pattern may be based on the visit path and editing operation. In addition, the modification pattern may be generated in a format that matches the source code of the defective software program. The method may further include the step of performing a repair operation. The repair operation may be performed on the identified defect in the code under test of the software program under analysis. The repair operation may be performed using a correction pattern. In addition, the repair operation may be performed based on the identified defects in the code being inspected being of the same type as the defects in the defective software program.
実施形態の目的及び利点が理解され、少なくとも特に特許請求の範囲で指摘された要素、特徴及び組合せを用いて達成されるだろう。 The objectives and advantages of the embodiments will be understood and will be achieved using at least the elements, features and combinations noted in the claims.
上述の全体的説明及び以下の詳細な説明の両方は、例示及び説明のためであり、本発明の範囲を限定しない。 Both the general description above and the detailed description below are for illustration and explanation purposes only and do not limit the scope of the invention.
例示的な実施形態は、添付の図面を用いて、更なる特異性及び詳細事項と共に記載され説明される。 Exemplary embodiments are described and described with reference to the accompanying drawings, along with additional specificity and details.
全ての図は本開示に記載の少なくとも1つの実施形態に従う。 All figures follow at least one embodiment described in this disclosure.
本開示に記載される幾つかの実施形態は、修正パターンのデータ駆動型合成に関する。ソフトウェアプログラムは、多くの場合、ソフトウェアプログラムを意図しない方法で動作させ得る欠陥(通常、「バグ」として参照される)を含む。さらに、ソフトウェアプログラム内の欠陥を検出するために、静的分析システム及び技術が使用される場合がある。例示的な静的分析器は、限定ではないが、PMD、Coverity、Coverity Scan、Facebook Infer、Google error−prone、SonarQube、及びFindBugs(SpotBugs)を含み得る。 Some embodiments described in the present disclosure relate to data-driven synthesis of modified patterns. Software programs often contain flaws (usually referred to as "bugs") that can cause the software program to operate in unintended ways. In addition, static analysis systems and techniques may be used to detect defects in software programs. Exemplary static analyzers may include, but are not limited to, PMD, Coverity, Coverity Scan, Facebook Infer, Google error-prone, SonarQube, and FindBugs (SpotBugs).
静的分析システム及び技術は、ソフトウェアプログラム内の欠陥を識別することをテストスーツに要求しないことがある。対照的に、動的分析システム及び技術は、ソフトウェアプログラム内の欠陥を識別することをテストスーツに要求し得る。静的分析システム及び技術は、被検査ソフトウェアプログラム内の様々なソフトウェア品質問題(例えば、違反及び/又はバグ)を識別し得る。例えば、静的分析システム及び技術は、ソフトウェアプログラムの中の、文体的違反、共通のソフトウェアの脆弱性、セキュリティ脆弱性、及び/又は他の様式ガイドライン違反を識別し得る。違反が識別されると、静的分析システム及び技術は、違反に関連付けられた欠陥のあるドメイン固有言語(domain specific language:DSL)(例えば、疑わしいコード)にフラグを立て得る。これらの報告された違反は、ソフトウェアプログラムの動作の性能及び/又は正確さに影響を与え得る。 Static analysis systems and techniques may not require test suits to identify defects in software programs. In contrast, dynamic analysis systems and techniques may require test suits to identify defects in software programs. Static analysis systems and techniques can identify various software quality issues (eg, violations and / or bugs) within the software program under test. For example, static analysis systems and technologies can identify stylistic violations, common software vulnerabilities, security vulnerabilities, and / or other format guideline violations within software programs. Once a breach is identified, static analysis systems and techniques may flag the defective domain specific language (DSL) (eg, suspicious code) associated with the breach. These reported violations can affect the performance and / or accuracy of the operation of software programs.
報告された違反は、多数(例えば、大量の報告された違反)であることがある。さらに、報告された違反は、ソフトウェアプログラムの機能にとって重大でないことがある。標準的に膨大な報告される違反及び時にはソフトウェアプログラムの機能に重大な影響を与えないものにより、報告された違反は、時に無視され修正されない(例えば修復されない)ことがある。これは、違反に関連するDSLを手動で修復するための時間量がソフトウェアプログラムの機能における利益を上回ることがあるという事実に起因し得る。これは、使用中にソフトウェアプログラムの動作の意図しない結果及び/又は性能低下を引き起こすことがあり、ユーザの苦情を解決するためにソフトウェアプログラムの開発後に時間を要することがある。 The reported violations can be numerous (eg, a large number of reported violations). In addition, the reported violations may not be critical to the functionality of the software program. Reported violations are sometimes ignored and uncorrected (eg, unrepaired) due to the standardly large number of reported violations and sometimes those that do not significantly affect the functionality of the software program. This may be due to the fact that the amount of time it takes to manually repair the DSL associated with the violation can outweigh the benefits of the functionality of the software program. This may cause unintended consequences and / or performance degradation of the software program's operation during use and may take some time after the software program is developed to resolve the user's complaint.
例えば、1.1百万個を超える違反が4千6百個のオープンソースソフトウェア(OSS)プロジェクトに渡り報告されたとする。これらの1.1百万個の報告された違反のうち、約60万個が解決される(例えば、対応するDSLに修復が行われる)。さらに、ソフトウェア開発者は、彼らの時間の約50%を費やして、報告された違反を発見し修復する。これは、約6ヶ月をプロジェクトに追加し得る。 For example, suppose more than 1.1 million violations have been reported across 4600 open source software (OSS) projects. Of these 1.1 million reported violations, approximately 600,000 will be resolved (eg, the corresponding DSL will be repaired). In addition, software developers spend about 50% of their time discovering and fixing reported violations. This can add about 6 months to the project.
修正パターンを手動で生成することにより報告された違反を手動で解決することは、膨大な数のトレーニングサンプルを必要とし得る。手動で生成した修正パターンは、置換コードを含むが、既存のDSLの修正を記述するステップを含まない、DSLパターンであり得る。さらに、幾つかの手動で生成した修正パターンは、既存のDSLを修正するための単純なステップを含み得る(例えば、手動で生成した修正パターンの中のDSLは、単純な構造的パターン照合に基づいてよい)。さらに、手動で生成した修正パターンは、DSLに対する変更を、DSL内ではなく、ソフトウェアプログラム内に自然言語で記述することがある。さらに、手動で生成した修正パターンは、重要な時間を生成することを要求するソフトウェア開発者により、手動で予め定められることがある。 Manually resolving reported violations by manually generating correction patterns can require a huge number of training samples. A manually generated modification pattern can be a DSL pattern that includes a replacement code but does not include the steps to describe an existing DSL modification. In addition, some manually generated modification patterns may include simple steps to modify an existing DSL (eg, DSLs within manually generated modification patterns are based on simple structural pattern matching. You can). In addition, manually generated modification patterns may describe changes to the DSL in natural language within the software program rather than within the DSL. In addition, manually generated modification patterns may be manually predetermined by software developers who require that significant time be generated.
本開示に記載の1つ以上の実施形態は、手動で修正パターンを生成するのに比べてソフトウェアプログラムの開発における遅延を軽減し得る方法で膨大数の報告された違反を解決するために現実世界のDSLプロジェクトに適用され得る修正パターン(例えば、パッチ)を生成するための自動システム及び技術を提供し得る。修正パターンは、欠陥のあるソフトウェアプログラム内の1つ以上の識別された欠陥(例えば、違反)に関して1つ以上の編集操作(例えば、修復パターン)を識別してよい。さらに、修正パターンは、欠陥のあるソフトウェアプログラムに関連するDSLに対して行われ得る修復(例えば、修正)及び/又は改善として、編集操作を一般化し及び提示し得る。さらに、修正パターンは、DSL内で及び/又は欠陥のあるソフトウェアプログラムのDSLに適合する形式で生成されてよい。 One or more embodiments described in this disclosure are used in the real world to resolve a large number of reported violations in a way that can reduce delays in the development of software programs compared to manually generating patch patterns. It may provide automated systems and techniques for generating modification patterns (eg, patches) that may be applied to a DSL project. The fix pattern may identify one or more editing operations (eg, repair patterns) with respect to one or more identified flaws (eg, violations) in the defective software program. In addition, modification patterns can generalize and present editing operations as possible repairs (eg, modifications) and / or improvements to DSLs associated with defective software programs. In addition, modification patterns may be generated within the DSL and / or in a format compatible with the DSL of the defective software program.
本開示に記載の実施形態は、プログラム合成アルゴリズムを用いて、一般化された実行可能な修正パターンを学習してよい。さらに、本開示に記載の実施形態は、DSL内の新しい及び/又は未だ見ぬ違反に適用され得る修正パターンのデータベースを生成してよい。 The embodiments described in the present disclosure may use a program synthesis algorithm to learn generalized and feasible modification patterns. In addition, the embodiments described in the present disclosure may generate a database of modification patterns that can be applied to new and / or yet unseen violations within the DSL.
本開示に記載の1つ以上の実施形態は、例えば修正パターン生成によりプログラミングを実行し得る修正パターンモジュールを含んでよい。修正パターンモジュールは、ビッグコードソースから1つ以上の欠陥のあるソフトウェアプログラムを受信してよい。修正パターンモジュールは、欠陥のあるソフトウェアプログラム内で識別された1つ以上の欠陥に関して1つ以上の編集操作を識別してよい。さらに、修正パターンモジュールは、欠陥のあるソフトウェアプログラムに対応し及び欠陥のあるソフトウェアプログラム内の欠陥の修復として編集操作を含む、1つ以上の改善されたソフトウェアプログラムを受信してよい。 One or more embodiments described in the present disclosure may include a modification pattern module capable of performing programming, for example by modifying pattern generation. The modification pattern module may receive one or more defective software programs from the big code source. The fix pattern module may identify one or more editing operations with respect to one or more defects identified within the defective software program. In addition, the correction pattern module may receive one or more improved software programs that correspond to the defective software program and include editing operations as repair of defects within the defective software program.
幾つかの実施形態では、修正パターンモジュールは、1つ以上の欠陥抽象構文木(abstract syntax trees:AST)を取得してよい。欠陥ASTは、欠陥のあるソフトウェアプログラムを表してよい。欠陥ASTは、欠陥のあるソフトウェアプログラムの欠陥位置に対応する1つ以上の欠陥ノードを含んでよい。各欠陥AST内の欠陥ノードのうちの1つ以上は、編集操作により変更される編集ノードとして識別されてよい。さらに、各欠陥AST内の編集ノードのうちの1つ以上は、プライマリノードとして分類されてよい。各プライマリノードは、編集操作を実施する際の開始点として動作してよい。 In some embodiments, the modification pattern module may obtain one or more abstract syntax trees (AST). The defective AST may represent a defective software program. A defective AST may include one or more defective nodes corresponding to the defective location of the defective software program. One or more of the defective nodes in each defective AST may be identified as edit nodes that are modified by the edit operation. In addition, one or more of the edit nodes in each defective AST may be classified as a primary node. Each primary node may act as a starting point when performing an edit operation.
上述の及び他の実施形態では、修正パターンモジュールは、欠陥ASTの各々に対応する訪問(visitor)ASTを取得し及び/又は生成してよい。修正パターンモジュールは、プライマリノードから編集ノードへの訪問パス(visitor path)を識別するために、訪問ASTを使用してよい。さらに、修正パターンモジュールは、訪問パス及び修正操作に基づき、DSL内の修正パターンを生成してよい。 In the above and other embodiments, the modification pattern module may acquire and / or generate a visitor AST corresponding to each of the defective ASTs. The modification pattern module may use the visit AST to identify the visitor path from the primary node to the edit node. In addition, the modification pattern module may generate modification patterns in the DSL based on the visit path and modification operation.
幾つかの実施形態では、修復モジュールは、修正パターン及び被検査コードを受信してよい。修復モジュールは、修正パターンを使用して、及び被検査コードの中の1つ以上の欠陥が欠陥のあるソフトウェアプログラム内の1つ以上の欠陥と同じである又は同様であることに基づき、被検査コードに対して修復操作を実行してよい。 In some embodiments, the repair module may receive a modification pattern and a code to be inspected. The repair module is inspected using a correction pattern and based on the fact that one or more defects in the inspected code are the same as or similar to one or more defects in the defective software program. You may perform a repair operation on the code.
本開示の実施形態を、添付の図面を参照して以下に説明する。 Embodiments of the present disclosure will be described below with reference to the accompanying drawings.
図1は、ソフトウェアプログラムの修復操作を実行するために使用され得る修正パターン110の生成に関連する例示的な環境100を示す図である。環境100は、欠陥のあるソフトウェアプログラム104のソースコードに対して行われた修復(例えば、修正)を一般化し及び表して、ビッグコード102から取得される改善されたソフトウェアプログラム106を取得するよう構成される修正パターンモジュール108を含んでよい。修正パターンモジュール108は、また、修正パターン110を出力するよう構成されてよい。修正パターン110は、欠陥のあるソフトウェアプログラム内の同様の欠陥を修復し及び/又は改善するために使用され得る修復を示す、ソースコード内に表される修復パターンを含んでよい。修正パターン110は、欠陥のあるソフトウェアプログラム104内の1つ以上の識別された欠陥(例えば、違反)に関して1つ以上の編集操作(例えば、修復パターン)を識別してよい。さらに、修正パターン110は、欠陥のあるソフトウェアプログラム104に関連するDSLに対して行われ得る修復(例えば、修正)及び/又は改善として、編集操作を一般化し及び表してよい。さらに、修正パターン110は、DSL内で及び/又は欠陥のあるソフトウェアプログラム104のDSLに適合する形式で生成されてよい。
FIG. 1 is a diagram illustrating an exemplary environment 100 associated with the generation of a modification pattern 110 that can be used to perform a repair operation on a software program. Environment 100 is configured to generalize and represent the repairs (eg, modifications) made to the source code of the defective software program 104 to obtain the improved software program 106 obtained from the big code 102. The modified
さらに、環境100は、欠陥に対する被検査コード111(例えば、別の欠陥のあるソフトウェアプログラム)を分析するよう構成される修復モジュール109を含んでよい。修復モジュール109は、変更された被検査コード113を出力するよう更に構成されてよい。変更された被検査コード108は、修復モジュール109により修正パターン110に基づき被検査コード111に対して行われた1つ以上の変更を含んでよい。
In addition, the environment 100 may include a repair module 109 configured to analyze the inspected
被検査コード111は、例えばソフトウェアプログラム、ソフトウェアプログラムのコード、ライブラリ、アプリケーション、スクリプト、又は処理装置による実行のための他のロジック若しくは命令(例えば、修復モジュール109)のような、電子データを有してよい。幾つかの実施形態では、被検査コード111は、ソフトウェアプログラムの完全なインスタンスを含んでよい。追加又は代替で、被検査コード111は、ソフトウェアプログラムの一部を含んでよい。被検査コード111は、ソフトウェアプログラムのために及び静的分析のために使用され得る任意の適切な種類のコンピュータ言語で書かれてよい。
The
修正モジュール109は、コンピューティング装置に、被検査コード111の1つ以上の変更を実行させて、変更被検査コード113を生成させるよう構成されるコード及びルーチンを含んでよい。追加又は代替で、修復モジュール109は、プロセッサ、(例えば、1つ以上の操作を実行する又はその実行を制御する)マイクロプロセッサ、FPGA(field−programmable gate array)又はASIC(application−specific integrated circuit)を含むハードウェアを用いて実装されてよい。幾つかの他の例では、修復モジュール109は、ハードウェア及びソフトウェアの組み合わせを用いて実装されてよい。本開示では、修復モジュール109により実行されるとして記載される操作は、修復モジュール109が対応するシステムに実行するよう指示し得る操作を有してよい。
The modification module 109 may include code and routines configured to cause the computing device to make one or more changes to the inspected
修復モジュール109は、被検査コード111の中の1つ以上の欠陥を修復する(本開示では修正するとしても参照される)ために使用され得る被検査コード111に関する一連の編集操作を実行するよう構成されてよい。幾つかの実施形態では、修復モジュール109は、修正パターン110に基づく編集操作のうちの1つ以上を実行するよう構成されてよい。幾つかの実施形態では、修正パターン110は、被検査コード111の静的プログラム解析又は任意の他の適切な種類のプログラム解析により発見された被検査コード111内の未だ見ぬ複雑な及び/又は他の欠陥を修復するために、修復モジュール109により使用されてよい。
The repair module 109 is to perform a series of editing operations on the inspected
ビッグコード102は、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び複数の検査用の欠陥のあるソフトウェアプログラム107を含んでよい。ビッグコード102は、例えば欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、検査用の欠陥のあるソフトウェアプログラム107、種々のソフトウェアプログラムのソースコード、ライブラリ、アプリケーション、スクリプト、又は処理装置による実行のための他のロジック若しくは命令のような、電子データを含んでよい。幾つかの実施形態では、ビッグコード102は、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び/又は検査用の欠陥のあるソフトウェアプログラム107の完全なインスタンスを含んでよい。追加又は代替として、ビッグコード102は、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び/又は検査用の欠陥のあるソフトウェアプログラム107の一部を含んでよい。被検査コード111は、ソフトウェアプログラムのために及び静的分析のために使用され得る任意の適切な種類のコンピュータ言語で書かれてよい。例えば、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び/又は検査用の欠陥のあるソフトウェアプログラム107は、静的分析器により分析可能であってよいDSLで書かれてよい。幾つかの実施形態では、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び検査用の欠陥のあるソフトウェアプログラム107は、DSLと同じ種類又は互換性のある種類で被検査コード111として書かれてよい。
The big code 102 may include a defective software program 104, an improved software program 106, and a plurality of defective software programs 107 for inspection. The big code 102 is, for example, a defective software program 104, an improved software program 106, a defective software program 107 for inspection, source code of various software programs, a library, an application, a script, or execution by a processing device. It may contain electronic data, such as other logic or instructions for. In some embodiments, the big code 102 may include a complete instance of the defective software program 104, the improved software program 106, and / or the defective software program 107 for inspection. As an addition or alternative, the big code 102 may include a defective software program 104, an improved software program 106, and / or a portion of the defective software program 107 for inspection. The
幾つかの実施形態では、ビッグコード102は、任意の適切なソースから取得された既存のコードを含んでよい。例えば、ビッグコード102は、プログラム開発者によりアップロードされたコードを含んでよい。欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び検査用の欠陥のあるソフトウェアプログラム107は、異なるソフトウェアプログラム(例えば、被検査コード111)内の欠陥を修復するために使用されてよい。幾つかの実施形態では、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び検査用の欠陥のあるソフトウェアプログラム107は、機械可読DSLで、ビッグコード102に格納されてよい。追加又は代替として、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び検査用の欠陥のあるソフトウェアプログラム107は、人間に可読な形式で、ビッグコード102に格納されてよい。
In some embodiments, the big code 102 may include existing code obtained from any suitable source. For example, the big code 102 may include code uploaded by the program developer. The defective software program 104, the improved software program 106, and the defective software program 107 for inspection may be used to repair defects in different software programs (eg,
欠陥のあるソフトウェアプログラム104は、静的分析器(図示しない)により識別された1つ以上の欠陥を含むソフトウェアプログラムであってよい。幾つかの実施形態では、静的分析器は、欠陥のあるソフトウェアプログラム104を分析して、欠陥のあるソフトウェアプログラム104のDSL内の1つ以上の欠陥を識別してよい。幾つかの実施形態では、静的分析は、欠陥のあるソフトウェアプログラム104がビッグコード102に格納される前に実行されてよい。他の実施形態では、欠陥のあるソフトウェアプログラム104は、ビッグコード102に格納されるとき、欠陥があるとしてラベル付けされてよく、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104の静的分析を実行してよい。
The defective software program 104 may be a software program containing one or more defects identified by a static analyzer (not shown). In some embodiments, the static analyzer may analyze the defective software program 104 to identify one or more defects in the DSL of the defective software program 104. In some embodiments, the static analysis may be performed before the defective software program 104 is stored in the big code 102. In other embodiments, the defective software program 104 may be labeled as defective when stored in the big code 102, and the
幾つかの実施形態では、欠陥のあるソフトウェアプログラム104内の欠陥は、欠陥のあるソフトウェアプログラム104のDSL内の1つ以上の構文違反及び/又は意味的違反を含んでよい。上述の及び他の実施形態では、欠陥のあるソフトウェアプログラム104内の欠陥の識別は、それぞれの欠陥に対応する欠陥のあるソフトウェアプログラム104内のDSLの1つ以上の行の欠陥の欠陥位置を識別してよい。 In some embodiments, the defect in the defective software program 104 may include one or more syntactic and / or semantic violations in the DSL of the defective software program 104. In the above and other embodiments, the identification of defects in the defective software program 104 identifies the defect location of one or more lines of the DSL in the defective software program 104 corresponding to each defect. You can do it.
改善されたソフトウェアプログラム106は、欠陥のあるソフトウェアプログラム104に関連するソフトウェアプログラムであってよい。例えば、改善されたソフトウェアプログラム106は、改善されたソフトウェアプログラム106内では1つ以上の欠陥が修復されていることを除き、欠陥のあるソフトウェアプログラム104と同じ又は同様の動作を実行してよい。例えば、改善されたソフトウェアプログラム106内のDSLの各行は、欠陥のあるソフトウェアプログラムのDSLの欠陥を含む1つ以上の行を除き、欠陥のあるソフトウェアプログラム104内のDSLの行と同じ又は同様であってよい。 The improved software program 106 may be a software program associated with the defective software program 104. For example, the improved software program 106 may perform the same or similar operation as the defective software program 104, except that one or more defects have been repaired within the improved software program 106. For example, each DSL line in the improved software program 106 is the same as or similar to the DSL line in the defective software program 104, except for one or more lines that contain the DSL defect in the defective software program. It may be there.
幾つかの実施形態では、欠陥のあるソフトウェアプログラム104内の欠陥は、欠陥に関する1つ以上の編集操作を実行することにより、改善されたソフトウェアプログラム106において修正されてよい。編集操作は、それぞれの欠陥を修復すべき欠陥位置において、欠陥のあるソフトウェアプログラム104に対して行われ得る1つ以上の編集を含んでよい。その結果、改善されたソフトウェアプログラム106は、それぞれの欠陥の修復として対応する編集操作を含んでよい。特定の欠陥に対応する編集操作は、特定の欠陥を修正するために実行され得る1つ以上の編集に基づいてよい。編集操作は、新しいDSLの挿入、既存DSLの改訂、又は既存DSLの再構成、を含んでよい。欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106は、編集操作、及び改善されたソフトウェアプログラム106のDSLを取得するために欠陥のあるソフトウェアプログラム104のDSLに対して行われた対応する編集を識別するために使用されてよい。 In some embodiments, defects in the defective software program 104 may be corrected in the improved software program 106 by performing one or more editing operations on the defects. The editing operation may include one or more edits that may be made to the defective software program 104 at the defect location where each defect should be repaired. As a result, the improved software program 106 may include corresponding editing operations as repair of each defect. The editing operation corresponding to a particular defect may be based on one or more edits that can be performed to correct the particular defect. Editing operations may include inserting a new DSL, revising an existing DSL, or reconstructing an existing DSL. The defective software program 104 and the improved software program 106 perform editing operations and the corresponding edits made to the DSL of the defective software program 104 in order to obtain the DSL of the improved software program 106. May be used to identify.
修正パターンモジュール108は、コンピューティング装置に、改善されたソフトウェアプログラム106のDSLを取得するために欠陥のあるソフトウェアプログラム104のDSLに対して行われた編集操作を一般化し及び表すことを可能にするよう構成されるコード及びルーチンを含んでよい。追加又は代替として、修正パターンモジュール108は、(例えば、1又は複数の工程を実行する又はその性能を制御する)プロセッサ、マイクロプロセッサ、FPGA(field−programmable gate array)又はASIC(application−specific integrated circuit)を含むハードウェアを用いて実装できる。幾つかの他の例では、修正パターンモジュール108は、ハードウェア及びソフトウェアの組み合わせを用いて実装されても良い。本開示では、修正パターンモジュール108により実行されるとして記載される動作は、修正パターンモジュール108が対応するシステムに実行するよう指示し得る動作を有してよい。
The
修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104、改善されたソフトウェアプログラム106、及び/又は、改善されたソフトウェアプログラム106のDSLを取得するために欠陥のあるソフトウェアプログラム104のDSLに対して行われた編集操作を一般化し及び表すために使用され得る検査用の欠陥のあるソフトウェアプログラム107に関して一連の動作を実行するよう構成されてよい。さらに、修正パターンモジュール108は、以下に詳述するように、修正パターン110を生成してよい。幾つかの実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106の単一のペアに基づき、修正パターン110を生成してよい。他の実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106の複数のペアに基づき、修正パターン110を生成してよい。
The
例えば、修正パターンモジュール108は、文字列の(string)ソフトウェアルーチン(「文字列の例」とも呼ばれる)に対して行われる編集操作を表す修正パターン110を生成するために使用されてよい。文字列の例では、例示的なDSL内の欠陥のあるソースコードは次の通りであってよい:
幾つかの実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106をビッグコード102から取得してよい。上述の及び他の実施形態では、修正パターンモジュール108は、改善されたソフトウェアプログラム106を得るために行われた、欠陥のあるソフトウェアプログラム104内の特定の欠陥に関する編集操作を識別してよい。追加又は代替として、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104内の特定の欠陥に関する複数の編集操作を識別してよい。
In some embodiments, the
幾つかの実施形態では、編集操作は、欠陥のあるソフトウェアプログラム104と改善されたソフトウェアプログラム106との間の1つ以上の相違に基づいてよい。他の実施形態では、編集操作は、プログラム解析(例えば、静的分析)により決定された欠陥のあるソフトウェアプログラム104内の欠陥の欠陥種類に基づいてよい。例えば、修正パターン110は、静的分析器から静的欠陥識別子を受信し、及び/又は静的分析器を用いて静的欠陥識別子を生成してよい。幾つかの実施形態では、静的欠陥識別子は、レポジトリ、及び欠陥に対応する欠陥のあるソフトウェアプログラム104のDSL内の行番号の記述を含んでよい。 In some embodiments, the editing operation may be based on one or more differences between the defective software program 104 and the improved software program 106. In other embodiments, the editing operation may be based on the defect type of the defect in the defective software program 104 determined by program analysis (eg, static analysis). For example, the modification pattern 110 may receive a static defect identifier from a static analyzer and / or generate a static defect identifier using the static analyzer. In some embodiments, the static defect identifier may include a description of the line number in the DSL of the defect corresponding software program 104 in the repository.
文字列の例では、例示的なDSL内の強力なソフトウェアプログラムの静的欠陥識別子は、次の通りであってよい:
代替として、編集操作は、欠陥のあるソフトウェアプログラム104のDSL及び改善されたソフトウェアプログラム106のDSLの比較に基づき識別されてよい。追加又は代替として、編集操作は、欠陥のあるソフトウェアプログラム104を表す欠陥AST及び改善されたソフトウェアプログラム106を表す改善ASTの比較に基づき識別されてよい。上述の及び他の実施形態では、欠陥AST及び改善ASTは、欠陥のあるソフトウェアプログラム104と改善されたソフトウェアプログラム106との間の相違を、ソースコード及び/又は欠陥種類を用いて決定するよりも、該相違のより正確な表現を提供し得る。 Alternatively, the editing operation may be identified based on a comparison of the DSL of the defective software program 104 and the DSL of the improved software program 106. As an addition or alternative, the editing operation may be identified based on a comparison of the defective AST representing the defective software program 104 and the improved AST representing the improved software program 106. In the above and other embodiments, the defective AST and the improved AST rather than determine the difference between the defective software program 104 and the improved software program 106 using the source code and / or the defect type. , May provide a more accurate representation of the difference.
幾つかの実施形態では、編集操作は、改善されたソフトウェアプログラム106を取得するために単一の変更(例えば、単一の編集)が欠陥のあるソフトウェアプログラム104に対して行われたことを示してよい。代替として、編集操作は、改善されたソフトウェアプログラム106を取得するために複数の変更が欠陥のあるソフトウェアプログラム104に対して行われたことを示してよい。例えば、編集操作は、第1編集が欠陥のあるソフトウェアプログラム104内の第1欠陥に適用されること、及び第2編集が欠陥のあるソフトウェアプログラム104内の第2欠陥に適用されること、を示してよい。 In some embodiments, the editing operation indicates that a single change (eg, a single edit) was made to the defective software program 104 in order to obtain the improved software program 106. You can do it. Alternatively, the editing operation may indicate that a plurality of changes have been made to the defective software program 104 in order to obtain the improved software program 106. For example, the editing operation applies that the first edit is applied to the first defect in the defective software program 104 and that the second edit is applied to the second defect in the defective software program 104. May be shown.
文字列の例では、編集操作は、4個の編集が文字列のソフトウェアルーチンのDSLに対して生じたことを示してよい。自然言語で表わされた4個の編集は次の通りであってよい:宣言型をStringBufferで置き換え、コンストラクタ呼び出しにより初期化し、全ての追加割り当てをappendで置き換え、全ての文字列の使用をtoStringの呼び出しで置き換える。さらに、例示的なDSL(例えば、ソースコード)内で表される文字列のソフトウェアルーチンのDSLに対する4個の編集は、以下を含んでよい:
幾つかの実施形態では、修正パターンモジュール108は、欠陥AST及び改善ASTをビッグコード102から取得してよい。他の実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104を用いて欠陥ASTを、及び改善されたソフトウェアプログラム106を用いて改善ASTを生成してよい。欠陥AST及び改善ASTは、任意の適切なAST生成技術を用いて生成されてよい。
In some embodiments, the
欠陥AST及び改善ASTは、それぞれ、欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106の抽象構文構造を表してよい。さらに、欠陥AST及び改善ASTは、複数のノードを含んでよい。各ノードは、対応するソフトウェアプログラムの要素(例えば、対応するソフトウェアプログラムの構成)に対応してよい。 The defective AST and the improved AST may represent the abstract syntax structure of the defective software program 104 and the improved software program 106, respectively. In addition, the defective AST and the improved AST may include multiple nodes. Each node may correspond to a corresponding software program element (eg, a corresponding software program configuration).
欠陥ASTは、複数の使用可能(operational)ノード、及び1つ以上の欠陥ノードを含んでよい。使用可能ノードは、いかなる欠陥にも関連付けられていない、欠陥のあるソフトウェアプログラム104のDSL内の要素に対応してよい。さらに、欠陥ノードは、欠陥に関連付けられている、欠陥のあるソフトウェアプログラム104のDSL内の要素に対応してよい。幾つかの実施形態では、欠陥ノードは、欠陥のあるソフトウェアプログラム104内の欠陥の欠陥位置に対応してよい。 A defective AST may include a plurality of operational nodes and one or more defective nodes. The available node may correspond to an element in the DSL of the defective software program 104 that is not associated with any defect. In addition, the defective node may correspond to an element in the DSL of the defective software program 104 associated with the defect. In some embodiments, the defective node may correspond to the defective location of the defect in the defective software program 104.
欠陥ノードは、1つ以上の編集ノードを含んでよい。編集ノードは、改善されたソフトウェアプログラム106を取得するために編集される、欠陥のあるソフトウェアプログラム104のDSLの部分に対応してよい。 The defective node may include one or more editing nodes. The edit node may correspond to the DSL portion of the defective software program 104 that is edited to obtain the improved software program 106.
欠陥AST及び改善ASTは、複数のASTエッジも含んでよい。ASTエッジは、対応するソフトウェアプログラムの制御フロー内のジャンプを表してよい。さらに、ASTエッジは、対応するASTのノード間のホップを表してよい。 Defect ASTs and improved ASTs may also include multiple AST edges. The AST edge may represent a jump in the control flow of the corresponding software program. In addition, the AST edge may represent a hop between the nodes of the corresponding AST.
幾つかの実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104内の欠陥の各々の欠陥属性を識別してよい。修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104内の欠陥の少なくとも一部に共通である欠陥属性を識別してよい。幾つかの実施形態では、欠陥属性は、欠陥種類、欠陥位置、ノード名、他のノード属性、例えば、キーと対応する値とのペア(例えば、キーは「種類」であり、対応する値は「String(文字列型)」である)、ノード種類、及びノードラベル、を含んでよい。幾つかの実施形態では、欠陥属性は、欠陥のあるソフトウェアプログラム104のDSLの属性に対応してよい。他の実施形態では、欠陥属性は、欠陥のあるソフトウェアプログラム104を表すASTの属性に対応してよい。
In some embodiments, the
幾つかの実施形態では、修正パターンモジュール108は、欠陥属性が欠陥のあるソフトウェアプログラム104内の欠陥の各々に関連付けられている場合、欠陥属性を共通欠陥属性として分類してよい。他の実施形態では、修正パターンモジュール108は、欠陥属性が欠陥のあるソフトウェアプログラム104内の欠陥の少なくとも一部に関連付けられている場合、欠陥属性を共通欠陥属性として分類してよい。幾つかの実施形態では、欠陥属性が欠陥のあるソフトウェアプログラム104内の欠陥の少なくとも大部分に関連付けられている場合、欠陥属性は共通欠陥属性として分類されてよい。
In some embodiments, the
幾つかの実施形態では、ビッグコード102は、複数の欠陥のあるソフトウェアプログラム104を含んでよい。上述の及び他の実施形態では、修正パターンモジュール108は、単一の欠陥のあるソフトウェアプログラム104ではなく、複数の欠陥のあるソフトウェアプログラム104を用いて共通欠陥属性を識別してよい。
In some embodiments, the big code 102 may include a plurality of defective software programs 104. In the above and other embodiments, the
追加又は代替として、修正パターンモジュール108は、ビッグコード102から検査用の欠陥のあるソフトウェアプログラム107を取得してよい。幾つかの実施形態では、検査用の欠陥のあるソフトウェアプログラム107は、欠陥を含む複数のソフトウェアプログラムを含んでよい。検査用の欠陥のあるソフトウェアプログラム107内の欠陥は、欠陥のあるソフトウェアプログラム104内の欠陥と同じ又は同様であってよい。例えば、検査用の欠陥のあるソフトウェアプログラム107内の欠陥は、同じ又は同様の欠陥種類であってよい。別の例では、検査用の欠陥のあるソフトウェアプログラム107内の欠陥は、同じ又は同様の欠陥位置を有してよい。
As an addition or alternative, the
幾つかの実施形態では、修正パターンモジュール108は、検査用の欠陥のあるソフトウェアプログラム107内の欠陥の各々の欠陥属性を識別してよい。上述の及び他の実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム107内の欠陥の少なくとも一部に共通である欠陥属性を識別してよい。幾つかの実施形態では、欠陥属性は、欠陥種類、欠陥位置、ノード名、他のノード属性、例えば、キーと対応する値とのペア(例えば、キーは「種類」であり、対応する値は「String(文字列型)」である)、ノード種類、及びノードラベル、を含んでよい。幾つかの実施形態では、欠陥属性は、検査用の欠陥のあるソフトウェアプログラム107のDSLの属性に対応してよい。他の実施形態では、欠陥属性は、検査用の欠陥のあるソフトウェアプログラム107を表すASTの属性に対応してよい。
In some embodiments, the
幾つかの実施形態では、修正パターンモジュール108は、欠陥属性が検査用の欠陥のあるソフトウェアプログラム107内の欠陥の各々に関連付けられている場合、欠陥属性を共通欠陥属性として分類してよい。他の実施形態では、修正パターンモジュール108は、欠陥属性が検査用の欠陥のあるソフトウェアプログラム107内の欠陥の少なくとも一部に関連付けられている場合、欠陥属性を共通欠陥属性として分類してよい。幾つかの実施形態では、欠陥属性が検査用の欠陥のあるソフトウェアプログラム107内の欠陥の少なくとも大部分に関連付けられている場合、欠陥属性は共通欠陥属性として分類されてよい。
In some embodiments, the
修正パターンモジュール108は、(例えば、欠陥のあるソフトウェアプログラム104、他の欠陥のあるソフトウェアプログラム104、及び/又は検査用の欠陥のあるソフトウェアプログラム107から取得された)共通欠陥属性を使用して、欠陥のあるソフトウェアプログラム104に関連付けられた1つ以上の欠陥ノードをプライマリノードとして分類してよい。幾つかの実施形態では、修正パターンモジュール108は、任意の欠陥ノードが共通欠陥属性のうちのいずれかに関連付けられているか否かを決定してよい。幾つかの実施形態では、修正パターンモジュール108は、欠陥ノードが共通欠陥属性のうちの全部に関連付けられている場合、欠陥ノードをプライマリノードとして分類してよい。代替として、修正パターンモジュール108は、欠陥ノードが共通欠陥属性のうちの少なくとも1つに関連付けられている場合、欠陥ノードをプライマリノードとして分類してよい。
The
幾つかの実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104の特定の欠陥に関連付けられた1つの欠陥ノードを、プライマリノードとして分類してよい。他の実施形態では、修正パターンモジュール108は、欠陥のあるソフトウェアプログラム104の特定の欠陥に関連付けられた1つより多くの欠陥ノードを、プライマリノードとして分類してよい。幾つかの実施形態では、修正パターンモジュール108は、欠陥AST内の単一の欠陥ノードをプライマリノードとして分類してよい。他の実施形態では、修正パターンモジュール108は、欠陥AST内の1つより多くの欠陥ノードをプライマリノードとして分類してよい。
In some embodiments, the
他の実施形態では、プライマリノードは、編集操作を実施する際の開始点として動作してよい。他の実施形態では、プライマリノードは、編集操作の一部を実施する際の開始点として動作してよい。さらに、プライマリノードは、複数の編集操作を実施する際の開始点として動作してよい。幾つかの実施形態では、編集操作は、改善されたソフトウェアプログラム106を取得するために欠陥のあるソフトウェアプログラム104に対して行われる変更の中心であってよい。幾つかの実施形態では、プライマリノードは、編集ノードとして分類されてもよい。 In other embodiments, the primary node may act as a starting point for performing editing operations. In other embodiments, the primary node may act as a starting point for performing some of the editing operations. Further, the primary node may operate as a starting point when performing a plurality of editing operations. In some embodiments, the editing operation may be central to the changes made to the defective software program 104 in order to obtain the improved software program 106. In some embodiments, the primary node may be classified as an edit node.
修正パターンモジュール108は、編集操作を実施する際に開始点として動作し得る、異なるソフトウェアプログラム内のコード(例えば、被検査コード111)の欠陥のある行を決定するための検索条件を生成するために、プライマリノードを使用してよい。編集操作を実施する際の開始点として動作する、欠陥のあるソフトウェアプログラム内のDSLの欠陥のある行に対応する欠陥ノードは、プライマリノードとして分類されてよい。追加又は代替として、修正パターンモジュール108は、編集操作を実施する際に開始点として動作し得る、異なるソフトウェアプログラム内のDSLの欠陥のある行に対応する欠陥ノードを直接決定するための検索条件を生成するために、プライマリノードを使用してよい。
The
文字列の例では、修正パターンモジュール108により生成された例示的なDSL内の検索条件は、次の通りであってよい:
修正パターンモジュール108は、欠陥ASTに基づき、訪問ASTを生成してよい。訪問ASTは欠陥のあるソフトウェアプログラム104に対応してよい。さらに、訪問ASTは、欠陥のあるソフトウェアプログラム104のプログラム構造を表してよい。訪問ASTは、複数の訪問エッジを含んでよい。訪問エッジは、訪問AST内のノード間のプログラム上の関係を表してよい。プログラム上の関係は、親、子、decl、lhs、呼び出し元、又は任意の他の適切なプログラム上の関係を含んでよい。
The
幾つかの実施形態では、修正パターンモジュール108は、欠陥ASTの各ノード及び各ASTエッジを含む、重複(duplicate)欠陥ASTを生成してよい。幾つかの実施形態では、修正パターンモジュール108は、重複欠陥ASTから全部のASTエッジを削除してよい。修正パターンモジュール108は、重複欠陥AST内の種々のノード間の訪問エッジを追加してよい。訪問エッジが追加されると、重複欠陥ASTは、訪問ASTとして分類されてよい。
In some embodiments, the
修正パターンモジュール108は、プライマリノードと各編集ノードとの間の、訪問AST内の各訪問パスを識別してよい。訪問パスは、プライマリノードから編集ノードへと辿られる訪問エッジの経路であってよい。複数の訪問パスは、プライマリノードから異なる編集ノードへの、訪問エッジの同じ又は同様のシーケンスを含んでよい。さらに、複数の訪問パスは、複数のプライマリノードから1つ以上の編集ノードへの、訪問エッジの同じ又は同様のシーケンスを含んでよい。例えば、第1プライマリノードから第1編集ノードへの訪問パスは、第2プライマリノードから第2編集ノードへの訪問パスと同じ又は同様の訪問エッジのシーケンスを含んでよい。
The
文字列の例では、プライマリノードから第1編集ノードへの訪問パスは以下を含んでよい:
さらに、プライマリノードから第2編集ノードへの訪問パスは以下を含んでよい:
In addition, the visit path from the primary node to the second edit node may include:
修正パターンモジュール108は、編集ノードがプライマリノードから共通訪問パスを含むことに基づき、編集ノードをグループ化してよい。幾つかの実施形態では、編集ノードは、編集ノードが単一のプライマリノードからの共通訪問パスを含むことに基づき、グループ化(例えば、クラスタ化)されてよい。他の実施形態では、編集ノードは、編集ノードが複数のプライマリノードからの共通訪問パスを含むことに基づき、グループ化(例えば、クラスタ化)されてよい。修正パターンモジュール108は、異なる編集ノードに関連付けられた訪問パスが共通訪問パスであるか否かを決定してよい。幾つかの実施形態では、訪問パスは、訪問パスが同じ又は同様の訪問エッジ種類のシーケンスを含む場合、共通訪問パスであってよい。さらに、訪問パスは、訪問パスが同じ又は同様の訪問パスの記述を含む場合、共通訪問パスであってよい。代替として、訪問パスは、訪問パスが同じ又は同様の訪問エッジの記述のシーケンスを含む場合、共通訪問パスであってよい。
The
文字列の例では、共通訪問パスは、以下の訪問エッジの記述を含んでよい:
幾つかの実施形態では、修正パターンモジュール108は、共通訪問パスのうちの1つを、望ましい訪問パスとして分類してよい。幾つかの実施形態では、望ましい訪問パスは、プライマリノードから編集ノードへの最も少ない数の訪問エッジ(例えば、最小ホップ数)を含む共通訪問パスに基づき決定されてよい。他の実施形態では、望ましい訪問パスは、他の共通訪問パスに比べて低く重み付けされたパス長を含む共通訪問パスに基づき決定されてよい。上述の及び他の実施形態では、共通訪問パスの中の各エッジは、3、2、1、又は任意の他の適切な値のような、重み付け値を含んでよい。例えば、第1ノードと第2エッジとの間のlhs()のプログラム上の関係に関連付けられた第1エッジは、3の重み付け値を有してよく、第2ノードと第3ノードとの間のupdate()のプログラム上の関係に関連付けられた第2エッジは、2の重み付け値を有してよい。共通訪問パスの重み付けされたパス長は、共通訪問パスの中のエッジに関連付けられた重み付け値の和であってよい。例えば、第2ノードをトラバースする、第1ノードと第2ノードとの間の共通訪問パスは、5の重み付けパス長を有してよい(例えば、3(第1エッジの重み付け値)+2(第2エッジの重み付け値)=5)。
In some embodiments, the
2つ以上の編集ノードをグループ化することの利点は、修正パターン110を格納するためのメモリの使用量を削減することであってよい。別の利点は、修正パターン110が、グループ化(例えば、クラスタ化)を伴わない修正パターン110より、一般化された修復パターンとして生成できることであってよい。 The advantage of grouping two or more edit nodes may be to reduce the memory usage for storing the modification pattern 110. Another advantage may be that the modification pattern 110 can be generated as a more generalized repair pattern than the modification pattern 110 without grouping (eg, clustering).
文字列の例では、望ましい訪問パスは次の通りであってよい:
修正パターン110は、プライマリノードに対する、欠陥のあるソフトウェアプログラム104のDSLに対する変更の位置を指定してよい。幾つかの実施形態では、修正パターン110は、欠陥のあるソフトウェアプログラム104のDSLに適合する形式(例えば、ソースコード及び/又はコンピュータ言語)で生成されてよい。例えば、コアDSL内の修正パターン110は、次の通りであってよい:
幾つかの実施形態では、修正パターンモジュール108は、1つ以上の訪問パス及び編集操作に基づき、修正パターン110を生成してよい。例えば、欠陥ASTが、グループ化されていない4個の欠陥ノードを含み、そのうちの1つがプライマリノードである場合、修正パターン110は、4個の訪問パス(例えば、プライマリノードから他の3個の欠陥ノードの各々への望ましい訪問パス、及びプライマリノードへの訪問パス)及び編集操作に基づいてよい。別の例では、欠陥ASTが、4個の欠陥ノードを含み、そのうちの2つがグループ化され、グループ化されたノードのうちの1つがプライマリノードである場合、修正パターン110は、3個の訪問パス(例えば、プライマリノードから2つのグループ化されていない欠陥ノードへの望ましい訪問パス、及びプライマリノードへの訪問パス)及び編集操作に基づいてよい。幾つかの実施形態では、修正パターン110は、複数の編集操作に基づいてよい。
In some embodiments, the
文字列の例では、コアDSL内の修正パターン110の一部は次の通りであってよい:
修復モジュール109は、修正パターン110を受信してよい。さらに、修復モジュール109は、被検査コード111を受信してよい。幾つかの実施形態では、修復モジュール109は、被検査コード111の静的分析を実行するよう構成されてよい。幾つかの実施形態では、修復モジュール109は、被検査コード111内の欠陥が、欠陥のあるソフトウェアプログラム104内の欠陥と同じ又は同様であるか否かを決定してよい。被検査コード111内の欠陥は、欠陥が、同じ又は同様の欠陥種類、欠陥位置、ノード名、キー及び対応する値のペア(例えば、キーが「種類」であり、対応する値が「String(文字列型)」である)のような他のノード属性、ノード種類、及びノードラベルを含む場合、欠陥のあるソフトウェアプログラム104内の欠陥と同じ又は同様であってよい。
The repair module 109 may receive the correction pattern 110. Further, the repair module 109 may receive the inspected
被検査コード111内の欠陥が欠陥のあるソフトウェアプログラム104内の欠陥と同じ又は同様であることに応答して、修復モジュール109は、修正パターン110を用いて被検査コード111を変更して、変更被検査コード113を生成してよい。例えば、修復モジュール109は、欠陥のあるソフトウェアに対して行われたものと同じ又は同様の変更を被検査コード111に対して行って、改善されたソフトウェアプログラム106を得てよい。したがって、変更被検査コード113は、被検査コード111の改善されたバージョンであってよい。
In response that the defect in the inspected
本開示の範囲から逸脱することなく図1に対し変更、追加又は省略が行われてよい。例えば、環境100は、本開示で示され説明されたものより多くの又は少ない要素を有してよい。さらに、幾つかの実施形態では、1つ以上のルーチン、1つ以上の命令、又は修復モジュール108、修正パターン110、及び修復モジュール109の少なくとも一部のコードは、結合され又は分離されてよい。幾つかの実施形態では、動作は、上述のものと異なる順序で実行されてよい。さらに、ビッグコード102は、単一の欠陥のあるソフトウェアプログラム104及び単一の改善されたソフトウェアプログラム106を含むとして示されるが、ビッグコード102は、任意の数の欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106、例えば2個の欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106、5個の欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106、又は1000個の欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106、を含んでよい。
Changes, additions or omissions may be made to FIG. 1 without departing from the scope of the present disclosure. For example, the environment 100 may have more or less elements than those shown and described in this disclosure. Further, in some embodiments, one or more routines, or one or more instructions, or at least a portion of the code of the
図2は、ソフトウェアプログラムの修復操作を実行するために使用され得る修正パターンを生成するよう構成され得る例示的なコンピューティングシステム200を示す。コンピューティングシステム200は、例えば図1の環境100において実装されてよい。コンピューティングシステム200は、1つ以上のプロセッサ214、メモリ216、及び修正パターンモジュール208と修復モジュール209とを含むデータ記憶装置212を含んでよい。修正パターンモジュール208は、図1の修正パターンモジュール108と同じ又は同様であってよい。修復モジュール209は、図1の修復モジュール109と同じ又は同様であってよい。
FIG. 2 shows an exemplary computing system 200 that can be configured to generate modification patterns that can be used to perform a repair operation on a software program. The computing system 200 may be implemented, for example, in the environment 100 of FIG. The computing system 200 may include one or more processors 214, memory 216, and a data storage device 212 that includes a
プロセッサ214は、任意の適切な特定用途向け又は汎用コンピュータ、コンピューティングエンティティ、又は種々のコンピュータハードウェア若しくはソフトウェアモジュールを有してよく、任意の適切なコンピュータ可読記録媒体に格納された命令を実行するよう構成されてよい。例えば、プロセッサ214は、マイクロプロセッサ、マイクロコントローラ、デジタシグナルプロセッサ(DSP)、ASIC、FPGA又はプログラム命令を解釈し及び/若しくは実行し並びに/又はデータを処理するよう構成された任意の他のデジタル若しくはアナログ回路を有してよい。 Processor 214 may have any suitable purpose-built or general purpose computer, computing entity, or various computer hardware or software modules to execute instructions stored on any suitable computer-readable recording medium. It may be configured as follows. For example, processor 214 is a microprocessor, microcontroller, digital signal processor (DSP), ASIC, FPGA or any other digital or any other digital configured to interpret and / or execute program instructions and / or process data. It may have an analog circuit.
図2には単一のプロセッサを示したが、プロセッサ214は、より一般的には、本開示で説明される任意の数の工程を個々に又は共同で実行するよう構成される任意の数のプロセッサを有してよい。さらに、プロセッサ214のうちの1つ以上は、1つ以上の異なる電子装置又はコンピューティングシステムに存在してよい。幾つかの実施形態では、プロセッサ214は、プログラム命令を解釈し及び/又は実行し、及び/又はメモリ216、データ記憶装置212又はメモリ216及びデータ記憶装置212に格納されたデータを処理してよい。幾つかの実施形態では、プロセッサ214は、データ記憶装置212からプログラム命令をフェッチし、該プログラム命令をメモリ216にロードしてもよい。プログラム命令がメモリ216にロードされた後、プロセッサ214は該プログラム命令を実行してよい。 Although FIG. 2 shows a single processor, processor 214, more generally, of any number configured to perform any number of steps individually or jointly as described in the present disclosure. It may have a processor. Further, one or more of the processors 214 may be present in one or more different electronic devices or computing systems. In some embodiments, processor 214 interprets and / or executes program instructions and / or may process data stored in memory 216, data storage device 212 or memory 216, and data storage device 212. .. In some embodiments, the processor 214 may fetch a program instruction from the data storage device 212 and load the program instruction into memory 216. After the program instruction is loaded into memory 216, processor 214 may execute the program instruction.
メモリ216及びデータ記憶装置212は、コンピュータ実行可能命令又はデータ構造を伝える又は格納しているコンピュータ可読記憶媒体を含み得る。このようなコンピュータ可読媒体は、プロセッサ214のような汎用又は特定目的コンピュータによりアクセスできる任意の利用可能な媒体を含み得る。例として且つ限定ではなく、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD−ROM又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、フラッシュメモリ装置(例えば、固体メモリ素子)を含む有形又は非一時的コンピュータ可読記憶媒体、又はコンピュータにより実行可能な命令若しくはデータ構造の形式でプログラムコード手段を伝える若しくは格納するために用いられ汎用若しくは特定目的コンピュータによりアクセス可能な他の非一時的記憶媒体を有し得る。上述の組合せも、コンピュータ可読記憶媒体の範囲に包含され得る。コンピュータ実行可能命令は、例えば、プロセッサ214に特定の工程又は工程のグループを実行させるよう構成される命令及びデータを含み得る。 The memory 216 and the data storage device 212 may include a computer-readable storage medium that conveys or stores computer executable instructions or data structures. Such computer-readable media may include any available medium accessible by a general purpose or special purpose computer such as processor 214. By way of example and not limited to, such computer readable storage media include RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory devices (eg, solid). A tangible or non-temporary computer-readable storage medium, including a memory element), or used to convey or store program code means in the form of computer-executable instructions or data structures, accessible by general-purpose or special-purpose computers, etc. Can have a non-temporary storage medium. The above combinations may also be included in the scope of computer-readable storage media. Computer executable instructions may include, for example, instructions and data configured to cause processor 214 to execute a particular process or group of processes.
修正パターンモジュール208及び/又は修復モジュール209は、データ記憶装置212に格納されたプログラム命令を含んでよい。プロセッサ214は、修正パターンモジュール208及び/又は修復モジュール209をメモリ216にロードし、ロードした修正パターンモジュール208及び/又は修復モジュール209を実行するよう構成されてよい。代替で、プロセッサ214は、メモリ216にロードしないで、データ記憶装置212から修正パターンモジュール208及び/又は修復モジュール209を1行毎に実行してよい。修正パターンモジュール208及び/又は修復モジュール209を実行すると、プロセッサ214は、本開示の他の場所に記載された修正パターンを生成するよう構成されてよい。
The
本開示の範囲から逸脱することなくコンピューティングシステム200に対し変更、追加又は省略が行われてよい。例えば、幾つかの実施形態では、コンピューティングシステム200は、明示的に示され又は記載されてない任意の数の他のコンポーネントを有してよい。本願明細書に記載した実施形態は、以下に更に詳細に議論するように、種々のコンピュータハードウェア又はソフトウェアモジュールを備えた特定用途又は汎用コンピュータの使用を含み得る。 Modifications, additions or omissions may be made to the computing system 200 without departing from the scope of the present disclosure. For example, in some embodiments, the computing system 200 may have any number of other components not explicitly shown or described. The embodiments described herein may include the use of special purpose or general purpose computers with various computer hardware or software modules, as discussed in more detail below.
図3は、ソフトウェアプログラムを修復する例示的な方法300のフローチャートを示す。方法300は、欠陥のあるソフトウェアプログラム及び改善されたソフトウェアプログラム(例えば、図1の欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106)に関して、任意の適切なシステム、機器、又は装置により実行されてよい。例えば、図1の修正パターンモジュール108及び/又は修復モジュール又は(例えば修正パターンモジュール及び/又は修復モジュールにより指示されるとき)図2のコンピューティングシステム200は、欠陥のあるソフトウェアプログラム及び改善されたソフトウェアプログラムに関して方法300に関連する工程のうちの1つ以上を実行し又は実行を指示してよい。別個のブロックとして示したが、特定の実装に依存して、方法300のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されてよい。
FIG. 3 shows a flowchart of an
方法300は、ブロック302を含んでよく、ここで、欠陥のあるソフトウェアプログラムの欠陥に関する編集操作が識別されてよい。幾つかの実施形態では、編集操作は、欠陥のあるソフトウェアプログラムと、欠陥の修復として編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づいて識別されてよい。編集操作は、欠陥のあるソフトウェアプログラムに対する、1つ以上の欠陥位置における、それぞれの欠陥を修復するための1つ以上の編集を含んでよい。その結果、改善されたソフトウェアプログラムが取得され得る。幾つかの実施形態では、欠陥のあるソフトウェアプログラム及び改善されたソフトウェアプログラムは、図1のビッグコード102のようなビッグコードから取得されてよい。
ブロック304で、欠陥のあるソフトウェアプログラムを表す欠陥ASTが取得されてよい。幾つかの実施形態では、欠陥ASTは、欠陥を含む欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含んでよい。上述の及び他の実施形態では、欠陥ノードは、編集操作により変更される編集ノードを含んでよい。幾つかの実施形態では、欠陥ASTは、ビッグコード(例えば、図1のビッグコード)のような別個のソースから取得されてよい。他の実施形態では、欠陥ASTはローカルに生成されてよい。
At
ブロック306で、複数の欠陥ノードのうちの特定ノードは、プライマリノードとして分類されてよい。プライマリノードは、編集操作を実施する際の開始点として動作してよい。幾つかの実施形態では、特定ノードは、特定ノードが1つ以上の共通欠陥属性を有することに基づき、プライマリノードとして分類されてよい。幾つかの実施形態では、特定ノードは、以下に詳細に記載される図5の方法500の1つ以上の動作に基づき、プライマリノードとして分類されてよい。
In
ブロック308で、プライマリノードから編集ノードへの訪問パスが識別されてよい。幾つかの実施形態では、訪問パスは、欠陥ASTに対応する訪問ASTに含まれてよい。上述の及び他の実施形態では、訪問パスは、プライマリノードと編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含んでよい。訪問ASTは、図1に関連して上述したように生成されてよい。
At
ブロック310で、修正パターンが生成されてよい。幾つかの実施形態では、修正パターンは、欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成されてよい。例えば、修正パターンは、欠陥のあるソフトウェアプログラムに適合するDSL内で生成されてよい。
At
ブロック312で、修復操作は、被分析ソフトウェアプログラムの被検査コードの識別された欠陥に関して実行されてよい。幾つかの実施形態では、修復操作は、修正パターンを用いて実行されてもよい。上述の及び他の実施形態では、修復操作は、被検査コードの識別された欠陥が欠陥のあるソフトウェアプログラムの欠陥と同じ種類であることに基づき、実行されてよい。
At
本開示の範囲から逸脱することなく方法300に対し変更、追加又は省略が行われてよい。例えば、方法300の工程は、異なる順序で実施されてよい。追加又は代替として、2以上の工程が同時に実行されてよい。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されてよい。
Changes, additions or omissions may be made to
さらに、幾つかの実施形態では、方法300は反復的に実行されて良く、ここで、1つ以上の工程が単一の障害位置に対して同時に実行されてよい。追加又は代替として、1つ以上のブロックに関連する1つ以上の工程は、複数の欠陥位置に関して一度に実行されてよい。
Further, in some embodiments,
図4は、ソフトウェアプログラムの修復操作を実行するために使用され得る修正パターンを生成する例示的な方法400のフローチャートを示す。方法400は、欠陥のあるソフトウェアプログラム及び改善されたソフトウェアプログラム(例えば、図1の欠陥のあるソフトウェアプログラム104及び改善されたソフトウェアプログラム106)に関して、任意の適切なシステム、機器、又は装置により実行されてよい。例えば、図1の修正パターンモジュール108、修復モジュール109、又は(例えば修正パターンモジュール及び/又は修復モジュールにより指示されるとき)図2のコンピューティングシステム200は、欠陥のあるソフトウェアプログラム及び改善されたソフトウェアプログラムに関して方法400に関連する工程のうちの1つ以上を実行し又は実行を指示してよい。別個のブロックとして示したが、特定の実装に依存して、方法400のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されてよい。さらに、方法300の1つ以上の工程は、幾つかの実施形態において方法400の一部として実行されてよい。
FIG. 4 shows a flowchart of an
方法400は、ブロック402で開始してよく、ここで、複数の欠陥のあるソフトウェアプログラム及び複数の改善されたソフトウェアプログラムが取得されてよい。欠陥のあるソフトウェアプログラム及び複数の改善されたソフトウェアプログラムは、図1のビッグコードのようなビッグコードから取得されてよい。
ブロック404で、1つ以上欠陥ASTが生成されてよい。幾つかの実施形態では、欠陥ASTは、欠陥のあるソフトウェアプログラムの各々について生成されてよい。幾つかの実施形態では、欠陥ASTは、1つ以上の欠陥を含む欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含んでよい。上述の及び他の実施形態では、欠陥ノードは、編集操作により変更される編集ノードを含んでよい。
At
ブロック406で、編集操作は、欠陥のあるソフトウェアプログラム内の各欠陥について決定されてよい。幾つかの実施形態では、編集操作は、欠陥のあるソフトウェアプログラムと改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき識別されてよい。編集操作は、欠陥のあるソフトウェアプログラムに対する、欠陥位置における、それぞれの欠陥を修復するための1つ以上の編集を含んでよい。その結果、改善されたソフトウェアプログラムが取得され得る。
At
幾つかの実施形態では、欠陥のあるソフトウェアプログラムの第2欠陥に関する第2編集操作が識別されてよい。幾つかの実施形態では、第2編集操作は、欠陥のあるソフトウェアプログラムと、第2欠陥の修復として第2編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づいて識別されてもよい。第2編集操作は、欠陥のあるソフトウェアプログラムに対する、1つ以上の欠陥位置における、それぞれの第2欠陥を修復するための1つ以上の編集を含んでよい。その結果、改善されたソフトウェアプログラムが取得され得る。 In some embodiments, a second editing operation relating to a second defect in the defective software program may be identified. In some embodiments, the second edit operation is identified based on one or more differences between the defective software program and the improved software program that includes the second edit operation as a repair of the second defect. May be done. The second editing operation may include one or more edits to the defective software program to repair each second defect at one or more defect locations. As a result, an improved software program can be obtained.
ブロック408で、1つ以上のプライマリノードが各欠陥ASTの中で識別されてよい。プライマリノードは、編集操作を実施する際の開始点として動作してよい。幾つかの実施形態では、ノードは、ノードが1つ以上の共通欠陥属性を有することに基づき、プライマリノードとして分類されてよい。幾つかの実施形態では、ノードのうちの1つ以上は、以下に詳細に記載される図5の方法500の1つ以上の動作に基づき、プライマリノードとして分類されてよい。
At
例えば、複数の欠陥ノードのうちの特定ノードは、第1プライマリノードとして分類されてよい。第1プライマリノードは、第1編集操作を実施する際の開始点として動作してよい。幾つかの実施形態では、特定ノードは、特定ノードが1つ以上の共通欠陥属性を有することに基づき、第1プライマリノードとして分類されてよい。上述の及び他の実施形態では、特定ノードは、図5の方法500の1つ以上の動作に基づき、第1プライマリノードとして分類されてよい。 For example, a specific node among a plurality of defective nodes may be classified as a first primary node. The first primary node may operate as a starting point when performing the first editing operation. In some embodiments, the particular node may be classified as a first primary node based on the particular node having one or more common defect attributes. In the above and other embodiments, the particular node may be classified as a first primary node based on one or more operations of method 500 of FIG.
別の例として、複数の欠陥ノードのうちの別の特定ノードは、第2プライマリノードとして分類されてよい。第2プライマリノードは、第2編集操作を実施する際の開始点として動作してよい。幾つかの実施形態では、別の特定ノードは、別の特定ノードが1つ以上の共通欠陥属性を有することに基づき、第2プライマリノードとして分類されてよい。幾つかの実施形態では、別の特定ノードは、図5の方法500の1つ以上の動作に基づき、第2プライマリノードとして分類されてよい。 As another example, another particular node of the plurality of defective nodes may be classified as a second primary node. The second primary node may operate as a starting point when performing the second editing operation. In some embodiments, another particular node may be classified as a second primary node based on the fact that the other particular node has one or more common defect attributes. In some embodiments, another particular node may be classified as a second primary node based on one or more operations of method 500 of FIG.
ブロック410で、訪問ASTが各欠陥ASTについて生成されてよい。幾つかの実施形態では、訪問ASTは、欠陥ASTに基づいてよい。上述の及び他の実施形態では、訪問ASTは、欠陥のあるソフトウェアプログラムに対応してよい。さらに、訪問ASTは、欠陥のあるソフトウェアプログラムのプログラム構造を表してよい。訪問ASTは、複数の訪問エッジを含んでよい。訪問エッジは、訪問AST内のノード間のプログラム上の関係を表してよい。訪問ASTは、図1に関連して上述したように生成されてよい。
At
ブロック412で、各欠陥AST内の1つ以上の欠陥ノードがクラスタ化されてよい。幾つかの実施形態では、欠陥ノードは、欠陥ノードが編集ノードとして識別され及び訪問ASTの中のプライマリノードからの共通訪問パスを含むことに基づき、クラスタ化(例えば、グループ化)されてよい。上述の及び他の実施形態では、欠陥ノードは、欠陥ノードが訪問ASTの中の単一のプライマリノードからの共通訪問パスを含むことに基づき、クラスタ化されてよい。他の実施形態では、欠陥ノードは、欠陥ノードが訪問ASTの中の複数のプライマリノードからの共通訪問パスを含むことに基づき、クラスタ化されてよい。
At
ブロック414で、各プライマリノードから各編集ノードへの1つ以上の訪問パスが識別されてよい。幾つかの実施形態では、訪問パスは、各訪問ASTについて識別されてよい。上述の及び他の実施形態では、訪問パスは、プライマリノードと編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含んでよい。
At
例えば、第1プライマリノードから第1編集ノードへの第1訪問パスが識別されてよい。幾つかの実施形態では、第1訪問パスは、訪問ASTに含まれてよい。幾つかの実施形態では、第1訪問パスは、第1プライマリノードと第1編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含んでよい。 For example, the first visit path from the first primary node to the first edit node may be identified. In some embodiments, the first visit path may be included in the visit AST. In some embodiments, the first visit path may include a sequence of one or more visit edges that indicate the programmatic relationship between the first primary node and the first edit node.
別の例として、第2プライマリノードから第2編集ノードへの第2訪問パスが識別されてよい。幾つかの実施形態では、第2訪問パスも、訪問ASTに含まれてよい。上述の及び他の実施形態では、第2訪問パスは、第2プライマリノードと第2編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含んでよい。 As another example, the second visit path from the second primary node to the second edit node may be identified. In some embodiments, the second visit path may also be included in the visit AST. In the above and other embodiments, the second visit path may include a sequence of one or more visit edges that indicate the programmatic relationship between the second primary node and the second edit node.
ブロック416で、各プライマリノードから各編集ノードへの望ましい訪問パスが識別されてよい。幾つかの実施形態では、望ましい訪問パスは、訪問AST内の各プライマリノード及び各編集ノードについて識別されてよい。上述の及び他の実施形態では、望ましい訪問パスは、共通訪問パスに基づき決定されてよい。幾つかの実施形態では、訪問パスは、訪問パスが同じ又は同様の訪問エッジ種類のシーケンスを含む場合、共通訪問パスであってよい。上述の及び他の実施形態では、訪問パスは、訪問パスが、プライマリノードから編集ノードへの最も少ない数の訪問エッジ(例えば、最小ホップ数)を含む場合に、望ましい訪問パスであってよい。
At
ブロック418で、修正パターンは、それぞれの欠陥のあるソフトウェアプログラムのDSL内で生成されてよい。幾つかの実施形態では、修正パターンは、欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成されてよい。 At block 418, the modification pattern may be generated within the DSL of each defective software program. In some embodiments, the modification pattern may be generated in a format that matches the source code of the defective software program.
本開示の範囲から逸脱することなく方法400に対し変更、追加又は省略が行われてよい。例えば、方法400の工程は、異なる順序で実施されてよい。追加又は代替として、2以上の工程が同時に実行されてよい。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されてよい。
Changes, additions or omissions may be made to
さらに、幾つかの実施形態では、方法400は反復的に実行されてよく、ここで、一度に、単一の欠陥のあるソフトウェアプログラム及び単一の改善されたソフトウェアプログラムが分析されてよい。
Further, in some embodiments,
図5は、特定ノードをプライマリノードとして分類する例示的な方法500のフローチャートを示す。方法500は、検査用の欠陥のあるソフトウェアプログラム及び欠陥のあるソフトウェアプログラム(例えば、図1の検査用の欠陥のあるソフトウェアプログラム107及び欠陥のあるソフトウェアプログラム104)に関して、任意の適切なシステム、機器、又は装置により実行されてよい。例えば、図1の修正パターンモジュール108又は(例えば修正パターンモジュールにより指示されるとき)図2のコンピューティングシステム200は、特定ノードをプライマリノードとして分類するステップに関して、方法500に関連する工程のうちの1つ以上を実行し又は実行を指示してよい。別個のブロックとして示したが、特定の実装に依存して、方法500のブロックのうちの1又は複数に関連するステップ及び工程は、更なるブロックに分割され、少ないブロックに結合され、又は除去されてよい。上述のように、幾つかの例では、方法500の工程のうちの1つ以上は、方法300のブロック306及び方法400のブロック408に関して実行されてよい。
FIG. 5 shows a flowchart of an exemplary method 500 for classifying a particular node as a primary node. Method 500 relates to any suitable system, device, with respect to the defective software program for inspection and the defective software program (eg, the defective software program 107 for inspection and the defective software program 104 in FIG. 1). , Or may be performed by the device. For example, the
方法500は、ブロック502で開始してよく、ここで、欠陥のあるソフトウェアプログラムの欠陥と同様の1つ以上の欠陥を含む複数の検査用の欠陥のあるソフトウェアプログラムが取得されてよい。検査用の欠陥のあるソフトウェアプログラムは、図1のビッグコードのようなビッグコードから取得されてよい。
Method 500 may start at
ブロック504で、検査用の欠陥のあるソフトウェアプログラムの中の欠陥のうちの少なくとも1つの1つ以上の共通欠陥属性が識別されてよい。幾つかの実施形態では、欠陥属性が検査用の欠陥のあるソフトウェアプログラム内の欠陥の各々に関連付けられている場合、欠陥属性は共通欠陥属性として分類されてよい。他の実施形態では、欠陥属性が検査用の欠陥のあるソフトウェアプログラム内の欠陥の少なくとも一部に関連付けられている場合、欠陥属性は共通欠陥属性として分類されてよい。さらに、欠陥属性が検査用の欠陥のあるソフトウェアプログラム内の欠陥の少なくとも大部分に関連付けられている場合、欠陥属性は共通欠陥属性として分類されてよい。幾つかの実施形態では、図1に関連して上述したように、欠陥属性が検査用の欠陥のあるソフトウェアプログラム内の欠陥の少なくとも閾百分率に関連付けられている場合、欠陥属性は共通欠陥属性として分類されてよい。
At
ブロック506で、特定ノードはプライマリノードとして分類されてよい。幾つかの実施形態では、図1に関連して上述したように、プライマリノードは、編集操作を実施する際の開始点として動作してよい。幾つかの実施形態では、特定ノードは、特定ノードが共通欠陥属性のうちの1つ以上を有することに基づき、プライマリノードとして分類されてよい。
At
幾つかの実施形態では、特定ノードは、特定ノードが共通欠陥属性のうちのいずれかに関連付けられていることに基づき、プライマリノードとして分類されてよい。他の実施形態では、特定ノードは、特定ノードが共通欠陥属性のうちの全部に関連付けられていることに基づき、プライマリノードとして分類されてよい。さらに、図1に関連して上述したように、特定ノードは、特定ノードが共通欠陥属性のうちのプライマリ閾百分率に関連付けられていることに基づき、プライマリノードとして分類されてよい。代替として、特定ノードは、特定ノードが共通欠陥属性のうちの少なくとも1つに関連付けられていることに基づき、プライマリノードとして分類されてよい。 In some embodiments, the particular node may be classified as the primary node based on the particular node being associated with any of the common defect attributes. In other embodiments, the particular node may be classified as the primary node based on the particular node being associated with all of the common defect attributes. Further, as described above in connection with FIG. 1, a particular node may be classified as a primary node based on the particular node being associated with the primary threshold percentage of the common defect attributes. Alternatively, the particular node may be classified as the primary node based on the particular node being associated with at least one of the common defect attributes.
本開示の範囲から逸脱することなく方法500に対し変更、追加又は省略が行われてよい。例えば、方法500の工程は、異なる順序で実施されてよい。追加又は代替として、2以上の工程が同時に実行されてよい。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されてよい。 Changes, additions or omissions may be made to Method 500 without departing from the scope of the present disclosure. For example, the steps of method 500 may be performed in a different order. As an addition or alternative, two or more steps may be performed simultaneously. Moreover, the schematic steps and actions are provided merely as examples, and some steps and actions are optional and combined or added to fewer steps and actions without departing from the essence of the disclosed embodiments. It may be extended to steps and actions.
図6は、図1の環境で実施され得る例示的な欠陥AST622及び例示的な改善AST624を示す。欠陥AST622及び改善AST624は、本開示で議論された文字列の例に対応してよい。欠陥AST622及び改善AST624は、それぞれ複数のノードを含んでよい。図6では、単一のノード638は、例示的なノードを示すために638として示される。欠陥AST622の中のノードの制御フローは、ASTエッジとして表され得る。図6では、単一のASTエッジは、例示的なASTエッジを示すために640として示される。ASTエッジは、文字列のソフトウェアルーチンの制御フロー内のジャンプを表してよい。
FIG. 6 shows an exemplary defect AST622 and an exemplary improved AST624 that can be implemented in the environment of FIG. Defective AST622 and improved AST624 may correspond to the string examples discussed in this disclosure. The defect AST622 and the improvement AST624 may each include a plurality of nodes. In FIG. 6, a
欠陥AST622内のノードは、図1と関連して上述したように編集操作に関連して変更されるべき1つ以上の編集ノードを含んでよい。図6では、3個の編集ノードが、複数の例示的な編集ノードを示すために628a、628b、及び628cとして示される。さらに、欠陥AST622内のノードは、プライマリノード642を含んでよい。プライマリノード642は、図1と関連して上述したように、改善AST624及び改善されたソフトウェアプログラムを取得するために編集操作を実施するための開始点として動作してよい。幾つかの実施形態では、プライマリノード642は、編集ノードとして分類されてもよい。
The nodes in the defect AST622 may include one or more editing nodes that should be modified in connection with the editing operation as described above in connection with FIG. In FIG. 6, three editing nodes are shown as 628a, 628b, and 628c to indicate a plurality of exemplary editing nodes. In addition, the nodes in the defect AST622 may include a
幾つかの実施形態では、図1と関連して上述したように、プライマリノード642及び編集ノード628bは、プライマリノード及び編集ノード628bが共通訪問パスを含むことに基づき、グループ化(例えば、クラスタ化)されてよい。図6では、606のように示される楕円は、プライマリノード及び編集ノード628bのグループ化を表してよい。
In some embodiments, as described above in connection with FIG. 1, the
上述のように、編集操作は、文字列のソフトウェアルーチンに対する4個の編集を含んでよい。第1編集は、以下の例示的なDSLに対応してよい:
図6では、破線矢印は、様々な編集を表してよい。図6では、第1編集は破線矢印632により表されてよく、第2編集は破線矢印634により表されてよく、第3編集は破線矢印636により表されてよく、第4編集は破線矢印634により表されてよい。
In FIG. 6, the dashed arrow may represent various edits. In FIG. 6, the first edit may be represented by the dashed
上述のように、本開示で記載した実施形態は、以下に更に詳細に議論するように、種々のコンピュータハードウェア又はソフトウェアモジュールを備えた特定用途又は汎用コンピュータ(例えば、図2のプロセッサ214)の使用を含み得る。さらに、上述のように、本開示に記載の実施形態は、コンピュータ実行可能命令又はデータ構造を伝える又はそれを格納されたコンピュータ可読媒体(例えば、図2のメモリ252)を用いて実施されてもよい。 As mentioned above, the embodiments described in this disclosure are for specific purpose or general purpose computers (eg, processor 214 in FIG. 2) with various computer hardware or software modules, as discussed in more detail below. May include use. Further, as described above, the embodiments described in the present disclosure may be implemented using a computer-readable medium (eg, memory 252 in FIG. 2) that conveys or stores computer executable instructions or data structures. good.
本開示で用いられるように、用語「モジュール」又は「コンポーネント」は、モジュール若しくはコンポーネントのアクションを実行するよう構成される特定ハードウェア実装、及び/又はコンピューティングシステムの汎用ハードウェア(例えばコンピュータ可読媒体、処理装置、等)に格納され及び/又はそれらにより実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを表してよい。幾つかの実施形態では、本開示に記載されたのと異なるコンポーネント、モジュール、エンジン及びサービスは、(例えば、別個のスレッドとして)コンピューティングシステムで実行されるオブジェクト又は処理として実施されてよい。本開示に記載のシステム及び方法の幾つかは概して(汎用ハードウェアに格納される及び/又はそれにより実行される)ソフトウェアで実装されるように記載されたが、専用ハードウェアの実装又はソフトウェアと専用ハードウェアの組み合わせの実装も可能であり考えられる。この説明では、「コンピュータエンティティ」は、本開示で先に定められたようにコンピューティングシステム、又はコンピューティングシステムで実行されるモジュール若しくはモジュールの組合せであってよい。 As used herein, the term "module" or "component" is a specific hardware implementation configured to perform an action on a module or component, and / or general purpose hardware for a computing system (eg, a computer-readable medium). , Processing equipment, etc.) and / or may represent software objects or software routines that can be executed by them. In some embodiments, components, modules, engines and services different from those described in this disclosure may be implemented as objects or processes performed in a computing system (eg, as separate threads). Some of the systems and methods described in this disclosure are generally described as being implemented in software (stored in and / or executed in general purpose hardware), but with dedicated hardware implementations or software. It is possible and conceivable to implement a combination of dedicated hardware. In this description, a "computer entity" may be a computing system, as defined earlier in this disclosure, or a module or combination of modules running on a computing system.
本開示で及び特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本体)で使用される用語は、概して、広義の(open)用語と考えられる(例えば、用語「含む(including)」は「含むが、限定されない」と解釈されるべきであり、用語「有する(having)」は「少なくとも有する」と解釈されるべきであり、用語「含む(includes)」は「含むが、限定されない」と解釈されるべきである)。 The terms used in this disclosure and in particular in the appended claims (eg, the body of the appended claims) are generally considered to be open terms (eg, the term "including"). Should be interpreted as "includes but not limited", the term "having" should be interpreted as "at least having" and the term "includes" should be interpreted as "includes but not limited". It should be interpreted as "not done").
さらに、特定数の導入された請求項の引用が意図される場合、このような意図は、請求項の中に明示的に示され、このような引用が存在しない場合はこのような意図が存在しない。例えば、理解の助けとして、以下の添付の特許請求の範囲は、請求項の引用を導入するために、「少なくとも1つの」及び「1又は複数の」をいう前置語句の使用を含み得る。しかしながら、このような語句の使用は、同じ請求項が前置語句「1又は複数」又は「少なくとも1つの」及び「a又はan」のような不定冠詞を含むときでも、不定冠詞「a、an」による請求項引用の導入がこのような導入された請求項引用を含む任意の特定の請求項をこのような引用を1つだけ含む実施形態に限定することを示すと考えられてはならない(例えば、「a」及び/又は「an」は「少なくとも1つの」又は「1又は複数の」を意味すると解釈されるべきである)。同様のことは、請求項引用を導入するために使用される定冠詞の使用についても該当する。 In addition, if a particular number of introduced claims are intended to be cited, such intent is explicitly stated in the claims, and if no such citation exists, such intent exists. do not. For example, as an understanding aid, the following appended claims may include the use of the prefix phrases "at least one" and "one or more" to introduce claim citations. However, the use of such phrases is such that the indefinite article "a, an" is used even when the same claim contains indefinite articles such as the prefix "one or more" or "at least one" and "a or an". The introduction of a claim citation by "" should not be considered to indicate that any particular claim containing such an introduced claim citation is limited to an embodiment containing only one such citation ( For example, "a" and / or "an" should be interpreted to mean "at least one" or "one or more"). The same applies to the use of definite articles used to introduce claim citations.
さらに、特定数の導入された請求項引用が明示的に引用される場合、当業者は、このような引用が少なくとも引用された番号を意味することと解釈されるべきであることを認識するだろう(例えば、「2つの引用」はそのままで、他の変更が無ければ、少なくとも2つの引用、又は2以上の引用を意味する)。さらに、「A、B、C、等のうちの少なくとも1つ」又は「A、B、C、等のうちの1又は複数」に類似する慣例が用いられる例では、通常、このような構成は、Aのみ、Bのみ、Cのみ、A及びBを一緒に、A及びCを一緒に、B及びCを一緒に、又はA、B、Cを一緒に、等を含むと意図される。 In addition, if a particular number of introduced claim citations are explicitly cited, those skilled in the art will recognize that such citations should be construed as meaning at least the cited number. Deaf (eg, "two citations" remains the same, meaning at least two citations, or two or more citations, unless otherwise changed). Furthermore, in examples where conventions similar to "at least one of A, B, C, etc." or "one or more of A, B, C, etc." are used, such a configuration is usually , A only, B only, C only, A and B together, A and C together, B and C together, or A, B, C together, etc. are intended to be included.
さらに、2以上の代替用語を表す任意の離接語又は語句は、説明、請求項、又は図面の中であるかに係わらず、用語のうちの1つ、用語のうちのいずれか、又は両方の用語を含む可能性を包含すると理解されるべきである。例えば、語句「A又はB」は、「A」又は「B」又は「A及びB」の可能性を含むと理解されるべきである。 In addition, any clitic or phrase representing two or more alternative terms, whether in the description, claim, or drawing, is one of the terms, one of the terms, or both. It should be understood to include the possibility of including the term. For example, the phrase "A or B" should be understood to include the possibility of "A" or "B" or "A and B".
本開示に記載された全ての例及び条件文は、教育上の目的で、読者が本開示の原理及び発明者により考案された概念を理解するのを助け、技術を促進させるためであり、これらの特に記載された例及び条件に限定されないものと考えられるべきである。本開示の実施形態が詳細に記載されたが、種々の変更、置換及び修正が本開示の精神及び範囲から逸脱することなく行われ得る。 All examples and conditional statements contained in this disclosure are for educational purposes to assist the reader in understanding the principles of this disclosure and the concepts devised by the inventor and to facilitate the art. It should be considered not limited to the specifically described examples and conditions of. Although embodiments of the present disclosure have been described in detail, various modifications, substitutions and modifications may be made without departing from the spirit and scope of the present disclosure.
以上の実施形態に加えて、更に以下の付記を開示する。
(付記1) 欠陥のあるソフトウェアプログラムと欠陥の修復としての編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記欠陥に関する前記編集操作を識別するステップと、
前記欠陥のあるソフトウェアプログラムを表す欠陥抽象構文木(AST)を取得するステップであって、前記欠陥ASTは、前記欠陥を含む前記欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含み、前記複数の欠陥ノードは前記編集操作により変更される編集ノードを含む、ステップと、
前記複数の欠陥ノードのうちの特定ノードを、前記編集操作を実施する際の開始点として動作するプライマリノードとして分類するステップと、
前記プライマリノードから前記編集ノードへの訪問パスを識別するステップであって、前記訪問パスは前記欠陥ASTに対応する訪問ASTに含まれ、前記訪問パスは前記プライマリノードと前記編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含む、ステップと、
前記訪問パス及び前記編集操作に基づき修正パターンを生成するステップであって、前記修正パターンは、前記欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成される、ステップと、
前記修正パターンを用いて、被検査コードの識別された欠陥が前記欠陥のあるソフトウェアプログラムの前記欠陥と同じ種類であることに基づき、被分析ソフトウェアプログラムの前記被検査コードの前記識別された欠陥に関する修復操作を実行するステップと、
を含む方法。
(付記2) 前記編集ノードは、第1編集ノードであり、前記複数の欠陥ノードは前記編集操作により変更された第2編集ノードを含み、前記訪問パスは第1訪問パスであり、前記方法は、さらに、
前記プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記修正パターンは前記第2訪問パスに更に基づく、ステップ、を含む付記1に記載の方法。
(付記3) 前記第1訪問パス及び前記第2訪問パスが同じ種類の訪問エッジの同じシーケンスを有することに基づき、前記第1訪問パス及び前記第2訪問パスを、互いに関して共通訪問パスであると識別するステップを更に含み、
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、付記2に記載の方法。
(付記4) 前記訪問パスが、前記欠陥又は前記欠陥のあるソフトウェアプログラムの他の欠陥に関連する他の訪問パスと比べて少数の訪問エッジを有することに基づき、前記修正パターンを生成する際に使用するために、前記訪問パスを選択するステップ、を更に含む付記1に記載の方法。
(付記5) 前記欠陥のあるソフトウェアプログラムは、複数の欠陥を含み、前記複数の欠陥ノードのうちの前記特定ノードを前記プライマリノードとして分類する前記ステップは、
前記欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの少なくとも一部の複数の共通欠陥属性を識別するステップであって、前記複数の欠陥ノードのうちの前記特定ノードは、前記特定ノードが前記欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの前記一部の前記複数の共通欠陥属性のうちの1つ以上を含むことに基づき、前記プライマリノードとして分類される、ステップを含む、付記1に記載の方法。
(付記6) 前記欠陥のあるソフトウェアプログラムの前記欠陥は第1欠陥であり、前記編集操作は第1編集操作であり、前記プライマリノードは第1プライマリノードであり、前記訪問パスは第1訪問パスであり、前記編集ノードは第1編集ノードであり、前記複数の欠陥ノードは第2編集ノードを更に含み、前記方法は、さらに、
前記欠陥のあるソフトウェアプログラムと第2欠陥の修復としての第2編集操作を含む前記改善されたソフトウェアプログラムとの間の前記1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記第2欠陥に関する前記第2編集操作を識別するステップと、
前記複数の欠陥ノードのうちの別の特定ノードを、前記第2編集操作を実施する際の開始点として動作する第2プライマリノードとして分類するステップと、
前記第2プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記第2訪問パスは、前記訪問ASTに含まれ、前記第2プライマリノードと前記第2編集ノードとの間のプログラム上の関係を示し、前記修正パターンは、前記第2訪問パス及び前記第2編集操作に更に基づく、ステップと、
を含む付記1に記載の方法。
(付記7) 前記第1訪問パス及び前記第2訪問パスが類似する訪問パス記述を含むことに基づき、前記第1訪問パス及び前記第2訪問パスを、互いに関して共通訪問パスであると識別するステップを更に含み、
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、付記2に記載の方法。
(付記8) 命令を格納するよう構成された1つ以上の非一時的コンピュータ可読記憶媒体であって、前記命令は、実行されることに応答して、システムに動作を実行させ、前記動作は、
欠陥のあるソフトウェアプログラムと欠陥の修復としての編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記欠陥に関する前記編集操作を識別するステップと、
前記欠陥のあるソフトウェアプログラムを表す欠陥ASTを取得するステップであって、前記欠陥ASTは、前記欠陥を含む前記欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含み、前記複数の欠陥ノードは前記編集操作により変更される編集ノードを含む、ステップと、
前記複数の欠陥ノードのうちの特定ノードを、前記編集操作を実施する際の開始点として動作するプライマリノードとして分類するステップと、
前記プライマリノードから前記編集ノードへの訪問パスを識別するステップであって、前記訪問パスは前記欠陥ASTに対応する訪問ASTに含まれ、前記訪問パスは前記プライマリノードと前記編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含む、ステップと、
前記訪問パス及び前記編集操作に基づき修正パターンを生成するステップであって、前記修正パターンは、前記欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成される、ステップと、
前記修正パターンを用いて、被検査コードの識別された欠陥が前記欠陥のあるソフトウェアプログラムの前記欠陥と同じ種類であることに基づき、被分析ソフトウェアプログラムの前記被検査コードの前記識別された欠陥に関する修復操作を実行するステップと、
を含む、1つ以上の非一時的コンピュータ可読記憶媒体。
(付記9) 前記編集ノードは、第1編集ノードであり、前記複数の欠陥ノードは前記編集操作により変更された第2編集ノードを含み、前記訪問パスは第1訪問パスであり、前記動作は、さらに、
前記プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記修正パターンは前記第2訪問パスに更に基づく、ステップ、を含む付記8に記載の1つ以上の非一時的コンピュータ可読記憶媒体。
(付記10) 前記動作は、前記第1訪問パス及び前記第2訪問パスが同じ種類の訪問エッジの同じシーケンスを有することに基づき、前記第1訪問パス及び前記第2訪問パスを、互いに関して共通訪問パスであると識別するステップを更に含み、
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、付記9に記載の1つ以上の非一時的コンピュータ可読記憶媒体。
(付記11) 前記複数の欠陥ノードのうちの前記特定ノードを前記プライマリノードとして分類するステップは、
前記欠陥のあるソフトウェアプログラムの前記欠陥と同様の複数の欠陥を含む複数の検査用の欠陥のあるソフトウェアプログラムを取得するステップと、
前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの少なくとも一部の複数の共通欠陥属性を識別するステップであって、前記複数の欠陥ノードのうちの前記特定ノードは、前記特定ノードが、前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの前記一部の前記複数の共通欠陥属性のうちの1つ以上を含むことに基づき、前記プライマリノードとして分類される、ステップと、
を含む、付記8に記載の1つ以上の非一時的コンピュータ可読記憶媒体。
(付記12) 前記欠陥のあるソフトウェアプログラムの前記欠陥は第1欠陥であり、前記編集操作は第1編集操作であり、前記プライマリノードは第1プライマリノードであり、前記訪問パスは第1訪問パスであり、前記編集ノードは第1編集ノードであり、前記複数の欠陥ノードは第2編集ノードを更に含み、前記動作は、さらに、
前記欠陥のあるソフトウェアプログラムと第2欠陥の修復としての第2編集操作を含む前記改善されたソフトウェアプログラムとの間の前記1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記第2欠陥に関する前記第2編集操作を識別するステップと、
前記複数の欠陥ノードのうちの別の特定ノードを、前記第2編集操作を実施する際の開始点として動作する第2プライマリノードとして分類するステップと、
前記第2プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記第2訪問パスは、前記訪問ASTに含まれ、前記第2プライマリノードと前記第2編集ノードとの間のプログラム上の関係を示し、前記修正パターンは、前記第2訪問パス及び前記第2編集操作に更に基づく、ステップと、
を含む、付記8に記載の1つ以上の非一時的コンピュータ可読記憶媒体。
(付記13) 前記動作は、前記第1訪問パス及び前記第2訪問パスが類似する訪問パス記述を含むことに基づき、前記第1訪問パス及び前記第2訪問パスを、互いに関して共通訪問パスであると識別するステップを更に含み、
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、付記12に記載の1つ以上の非一時的コンピュータ可読記憶媒体。
(付記14) システムであって、
命令を格納するよう構成された1つ以上の非一時的コンピュータ可読記憶媒体と、
前記1つ以上のコンピュータ可読記憶媒体に通信可能に結合され、前記命令の実行に応答して、前記システムに動作を実行させるよう構成される1つ以上のプロセッサと、
を含み、前記動作は、
欠陥のあるソフトウェアプログラムと欠陥の修復としての編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記欠陥に関する前記編集操作を識別するステップと、
前記欠陥のあるソフトウェアプログラムを表す欠陥ASTを取得するステップであって、前記欠陥ASTは、前記欠陥を含む前記欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含み、前記複数の欠陥ノードは前記編集操作により変更される編集ノードを含む、ステップと、
前記複数の欠陥ノードのうちの特定ノードを、前記編集操作を実施する際の開始点として動作するプライマリノードとして分類するステップと、
前記プライマリノードから前記編集ノードへの訪問パスを識別するステップであって、前記訪問パスは前記欠陥ASTに対応する訪問ASTに含まれ、前記訪問パスは前記プライマリノードと前記編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含む、ステップと、
前記訪問パス及び前記編集操作に基づき修正パターンを生成するステップと、
前記修正パターンを用いて、被検査コードの識別された欠陥が前記欠陥のあるソフトウェアプログラムの前記欠陥と同じ種類であることに基づき、被分析ソフトウェアプログラムの前記被検査コードの前記識別された欠陥に関する修復操作を実行するステップと、
を含む、システム。
(付記15) 前記編集ノードは、第1編集ノードであり、前記複数の欠陥ノードは前記編集操作により変更された第2編集ノードを含み、前記訪問パスは第1訪問パスであり、前記動作は、さらに、
前記プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記修正パターンは前記第2訪問パスに更に基づく、ステップ、を含む、付記14に記載のシステム。
(付記16) 前記第1訪問パス及び前記第2訪問パスが同じ種類の訪問エッジの同じシーケンスを有することに基づき、前記第1訪問パス及び前記第2訪問パスを、互いに関して共通訪問パスであると識別するステップを更に含み、
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、付記15に記載のシステム。
(付記17) 前記動作は、前記訪問パスが、前記欠陥又は前記欠陥のあるソフトウェアプログラムの他の欠陥に関連する他の訪問パスと比べて少数の訪問エッジを有することに基づき、前記修正パターンを生成する際に使用するために、前記訪問パスを選択するステップ、を更に含む、付記14に記載のシステム。
(付記18) 前記複数の欠陥ノードのうちの前記特定ノードを前記プライマリノードとして分類するステップは、
前記欠陥のあるソフトウェアプログラムの前記欠陥と同様の複数の欠陥を含む複数の検査用の欠陥のあるソフトウェアプログラムを取得するステップと、
前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの少なくとも一部の複数の共通欠陥属性を識別するステップであって、前記複数の欠陥ノードのうちの前記特定ノードは、前記特定ノードが、前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの前記一部の前記複数の共通欠陥属性のうちの1つ以上を含むことに基づき、前記プライマリノードとして分類される、ステップと、
を含む、付記14に記載のシステム。
(付記19) 前記欠陥のあるソフトウェアプログラムの前記欠陥は第1欠陥であり、前記編集操作は第1編集操作であり、前記プライマリノードは第1プライマリノードであり、前記訪問パスは第1訪問パスであり、前記編集ノードは第1編集ノードであり、前記複数の欠陥ノードは第2編集ノードを更に含み、前記動作は、さらに、
前記欠陥のあるソフトウェアプログラムと第2欠陥の修復としての第2編集操作を含む前記改善されたソフトウェアプログラムとの間の前記1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記第2欠陥に関する前記第2編集操作を識別するステップと、
前記複数の欠陥ノードのうちの別の特定ノードを、前記第2編集操作を実施する際の開始点として動作する第2プライマリノードとして分類するステップと、
前記第2プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記第2訪問パスは、前記訪問ASTに含まれ、前記第2プライマリノードと前記第2編集ノードとの間のプログラム上の関係を示し、前記修正パターンは、前記第2訪問パス及び前記第2編集操作に更に基づく、ステップと、
を含む、付記14に記載のシステム。
(付記20) 前記修正パターンは、前記欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成される、付記14に記載のシステム。
In addition to the above embodiments, the following additional notes will be further disclosed.
(Appendix 1) The editing operation relating to the defect of the defective software program is based on one or more differences between the defective software program and the improved software program including the editing operation as repair of the defect. Identifying steps and
A step of obtaining a defect abstract syntax tree (AST) representing the defective software program, wherein the defect AST includes a plurality of defect nodes corresponding to the defect locations of the defective software program including the defects. The step and the step, wherein the plurality of defective nodes include an edit node modified by the edit operation.
A step of classifying a specific node among the plurality of defective nodes as a primary node that operates as a starting point when performing the editing operation, and
A step of identifying a visit path from the primary node to the edit node, the visit path is included in the visit AST corresponding to the defect AST, and the visit path is between the primary node and the edit node. A step and a step that contains a sequence of one or more visiting edges that show a programmatic relationship.
A step of generating a modification pattern based on the visit path and the editing operation, wherein the modification pattern is generated in a format compatible with the source code of the defective software program.
With respect to the identified defect of the inspected code of the software program to be analyzed, based on the correction pattern that the identified defect of the inspected code is of the same type as the defect of the software program with the defect. The steps to perform the repair operation and
How to include.
(Appendix 2) The edit node is a first edit node, the plurality of defective nodes include a second edit node modified by the edit operation, the visit path is a first visit path, and the method is ,Moreover,
The method according to Appendix 1, which comprises a step of identifying a second visit path from the primary node to the second edit node, wherein the modification pattern is further based on the second visit path.
(Appendix 3) Based on that the first visit path and the second visit path have the same sequence of visit edges of the same type, the first visit path and the second visit path are common visit paths with respect to each other. Including further steps to identify
The method according to Appendix 2, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
(Appendix 4) In generating the modification pattern based on the visit path having a smaller number of visit edges compared to the defect or other visit paths associated with the defect or other defect of the defective software program. The method according to Appendix 1, further comprising the step of selecting the visit path for use.
(Appendix 5) The defective software program includes a plurality of defects, and the step of classifying the specific node among the plurality of defective nodes as the primary node is described.
A step of identifying a plurality of common defect attributes of at least a part of the plurality of defects in the defective software program, wherein the specific node among the plurality of defective nodes is the specific node. Includes a step that is classified as the primary node based on including one or more of the plurality of common defect attributes of the portion of the plurality of defects in the defective software program. The method described in Appendix 1.
(Appendix 6) The defect of the defective software program is the first defect, the editing operation is the first editing operation, the primary node is the first primary node, and the visit path is the first visit path. The editing node is the first editing node, the plurality of defective nodes further includes a second editing node, and the method further comprises.
The second defect of the defective software program based on the one or more differences between the defective software program and the improved software program including the second editing operation as a repair of the second defect. And the step of identifying the second editing operation with respect to
A step of classifying another specific node among the plurality of defective nodes as a second primary node that operates as a starting point when performing the second editing operation.
A step of identifying a second visit path from the second primary node to the second edit node, the second visit path is included in the visit AST, and the second primary node and the second edit node. The modification pattern is further based on the second visit path and the second editing operation.
The method according to Appendix 1, which comprises.
(Appendix 7) The first visit path and the second visit path are identified as common visit paths with respect to each other based on the fact that the first visit path and the second visit path include similar visit path descriptions. Including more steps
The method according to Appendix 2, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
(Appendix 8) One or more non-temporary computer-readable storage media configured to store an instruction, wherein the instruction causes the system to perform an operation in response to being executed. ,
With the step of identifying the editing operation for the defect in the defective software program based on one or more differences between the defective software program and the improved software program including the editing operation as repairing the defect. ,
A step of acquiring a defect AST representing the defective software program, wherein the defect AST includes a plurality of defect nodes corresponding to defect locations of the defective software program including the defect, and the plurality of defects. A node contains a step and an edit node that is modified by the edit operation.
A step of classifying a specific node among the plurality of defective nodes as a primary node that operates as a starting point when performing the editing operation, and
A step of identifying a visit path from the primary node to the edit node, the visit path is included in the visit AST corresponding to the defect AST, and the visit path is between the primary node and the edit node. A step and a step that contains a sequence of one or more visiting edges that show a programmatic relationship.
A step of generating a modification pattern based on the visit path and the editing operation, wherein the modification pattern is generated in a format compatible with the source code of the defective software program.
With respect to the identified defect of the inspected code of the software program to be analyzed, based on the correction pattern that the identified defect of the inspected code is of the same type as the defect of the software program with the defect. The steps to perform the repair operation and
One or more non-temporary computer-readable storage media, including.
(Appendix 9) The edit node is a first edit node, the plurality of defective nodes include a second edit node modified by the edit operation, the visit path is a first visit path, and the operation is ,Moreover,
One or more non-identifications according to Appendix 8, comprising a step of identifying a second visit path from the primary node to the second edit node, wherein the modification pattern is further based on the second visit path. Temporary computer-readable storage medium.
(Appendix 10) The operation is based on the fact that the first visit path and the second visit path have the same sequence of visit edges of the same type, and the first visit path and the second visit path are common to each other. It also includes a step to identify it as a visit path, including
The step of generating the modification pattern is one or more non-temporary computer-readable storage media according to Appendix 9, based on the first visit path and the second visit path being identified as common visit paths.
(Appendix 11) The step of classifying the specific node among the plurality of defective nodes as the primary node is
The step of acquiring a plurality of defective software programs for inspection including a plurality of defects similar to the above-mentioned defects of the defective software program, and
A step of identifying at least a plurality of common defect attributes among the plurality of defects in the plurality of inspection defect software programs, wherein the specific node among the plurality of defect nodes is , The particular node, based on the inclusion of one or more of the plurality of common defect attributes of the plurality of the plurality of defects in the software program with the plurality of inspection defects. Steps and, which are classified as primary nodes
One or more non-temporary computer-readable storage media according to Appendix 8, comprising:
(Appendix 12) The defect of the defective software program is the first defect, the editing operation is the first editing operation, the primary node is the first primary node, and the visit path is the first visit path. The editing node is the first editing node, the plurality of defective nodes further includes a second editing node, and the operation further includes.
The second defect of the defective software program based on the one or more differences between the defective software program and the improved software program including the second editing operation as a repair of the second defect. And the step of identifying the second editing operation with respect to
A step of classifying another specific node among the plurality of defective nodes as a second primary node that operates as a starting point when performing the second editing operation.
A step of identifying a second visit path from the second primary node to the second edit node, the second visit path is included in the visit AST, and the second primary node and the second edit node. The modification pattern is further based on the second visit path and the second editing operation.
One or more non-temporary computer-readable storage media according to Appendix 8, comprising:
(Appendix 13) The operation is based on the fact that the first visit path and the second visit path include a similar visit path description, and the first visit path and the second visit path are made into a common visit path with respect to each other. Including further steps to identify as present
The step of generating the modification pattern is one or more non-temporary computer-readable storage media according to Appendix 12, based on the first visit path and the second visit path being identified as common visit paths.
(Appendix 14) It is a system
One or more non-temporary computer-readable storage media configured to store instructions,
With one or more processors communicatively coupled to the one or more computer-readable storage media and configured to cause the system to perform an operation in response to execution of the instruction.
The above-mentioned operation includes
With the step of identifying the editing operation for the defect in the defective software program based on one or more differences between the defective software program and the improved software program including the editing operation as repairing the defect. ,
A step of acquiring a defect AST representing the defective software program, wherein the defect AST includes a plurality of defect nodes corresponding to defect locations of the defective software program including the defect, and the plurality of defects. A node contains a step and an edit node that is modified by the edit operation.
A step of classifying a specific node among the plurality of defective nodes as a primary node that operates as a starting point when performing the editing operation, and
A step of identifying a visit path from the primary node to the edit node, the visit path is included in the visit AST corresponding to the defect AST, and the visit path is between the primary node and the edit node. A step and a step that contains a sequence of one or more visiting edges that show a programmatic relationship.
A step of generating a correction pattern based on the visit path and the editing operation, and
With respect to the identified defect of the inspected code of the software program to be analyzed, based on the correction pattern that the identified defect of the inspected code is of the same type as the defect of the software program with the defect. The steps to perform the repair operation and
Including the system.
(Appendix 15) The edit node is a first edit node, the plurality of defective nodes include a second edit node modified by the edit operation, the visit path is a first visit path, and the operation is ,Moreover,
The system according to Appendix 14, wherein the modification pattern further comprises a step, which is a step of identifying a second visit path from the primary node to the second edit node, the modification pattern further based on the second visit path.
(Appendix 16) Based on the fact that the first visit path and the second visit path have the same sequence of visit edges of the same type, the first visit path and the second visit path are common visit paths with respect to each other. Including further steps to identify
The system according to Appendix 15, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
(Appendix 17) The behavior is based on the modification pattern based on the visit path having a smaller number of visit edges compared to the defect or other visit paths associated with the defect or other defect of the defective software program. The system according to Appendix 14, further comprising the step of selecting the visit path for use in generating.
(Appendix 18) The step of classifying the specific node among the plurality of defective nodes as the primary node is
The step of acquiring a plurality of defective software programs for inspection including a plurality of defects similar to the above-mentioned defects of the defective software program, and
A step of identifying at least a plurality of common defect attributes among the plurality of defects in the plurality of inspection defect software programs, wherein the specific node among the plurality of defect nodes is , The particular node, based on the inclusion of one or more of the plurality of common defect attributes of the plurality of the plurality of defects in the software program with the plurality of inspection defects. Steps and, which are classified as primary nodes
14. The system according to Appendix 14.
(Appendix 19) The defect of the defective software program is the first defect, the editing operation is the first editing operation, the primary node is the first primary node, and the visit path is the first visit path. The editing node is the first editing node, the plurality of defective nodes further includes a second editing node, and the operation further includes.
The second defect of the defective software program based on the one or more differences between the defective software program and the improved software program including the second editing operation as a repair of the second defect. And the step of identifying the second editing operation with respect to
A step of classifying another specific node among the plurality of defective nodes as a second primary node that operates as a starting point when performing the second editing operation.
A step of identifying a second visit path from the second primary node to the second edit node, the second visit path is included in the visit AST, and the second primary node and the second edit node. The modification pattern is further based on the second visit path and the second editing operation.
14. The system according to Appendix 14.
(Supplementary Note 20) The system according to Supplementary Note 14, wherein the modification pattern is generated in a format compatible with the source code of the defective software program.
100 環境
102 ビッグコード
104 欠陥のあるソフトウェアプログラム
106 改善されたソフトウェアプログラム
107 検査用の欠陥のあるソフトウェアプログラム
108 修正パターンモジュール
109 修復モジュール
110 修正パターン
111 被検査コード
113 変更被検査コード
100 Environment 102 Big Code 104 Defective Software Program 106 Improved Software Program 107 Defective Software Program for
Claims (20)
前記欠陥のあるソフトウェアプログラムを表す欠陥抽象構文木(AST)を取得するステップであって、前記欠陥ASTは、前記欠陥を含む前記欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含み、前記複数の欠陥ノードは前記編集操作により変更される編集ノードを含む、ステップと、
前記複数の欠陥ノードのうちの特定ノードを、前記編集操作を実施する際の開始点として動作するプライマリノードとして分類するステップと、
前記プライマリノードから前記編集ノードへの訪問パスを識別するステップであって、前記訪問パスは前記欠陥ASTに対応する訪問ASTに含まれ、前記訪問パスは前記プライマリノードと前記編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含む、ステップと、
前記訪問パス及び前記編集操作に基づき修正パターンを生成するステップであって、前記修正パターンは、前記欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成される、ステップと、
前記修正パターンを用いて、被検査コードの識別された欠陥が前記欠陥のあるソフトウェアプログラムの前記欠陥と同じ種類であることに基づき、被分析ソフトウェアプログラムの前記被検査コードの前記識別された欠陥に関する修復操作を実行するステップと、
を含む方法。 With the step of identifying the editing operation for the defect in the defective software program based on one or more differences between the defective software program and the improved software program including the editing operation as repairing the defect. ,
A step of obtaining a defect abstract syntax tree (AST) representing the defective software program, wherein the defect AST includes a plurality of defect nodes corresponding to the defect locations of the defective software program including the defects. The step and the step, wherein the plurality of defective nodes include an edit node modified by the edit operation.
A step of classifying a specific node among the plurality of defective nodes as a primary node that operates as a starting point when performing the editing operation, and
A step of identifying a visit path from the primary node to the edit node, the visit path is included in the visit AST corresponding to the defect AST, and the visit path is between the primary node and the edit node. A step and a step that contains a sequence of one or more visiting edges that show a programmatic relationship.
A step of generating a modification pattern based on the visit path and the editing operation, wherein the modification pattern is generated in a format compatible with the source code of the defective software program.
With respect to the identified defect of the inspected code of the software program to be analyzed, based on the correction pattern that the identified defect of the inspected code is of the same type as the defect of the software program with the defect. The steps to perform the repair operation and
How to include.
前記プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記修正パターンは前記第2訪問パスに更に基づく、ステップ、を含む請求項1に記載の方法。 The edit node is a first edit node, the plurality of defective nodes includes a second edit node modified by the edit operation, the visit path is a first visit path, and the method further comprises.
The method of claim 1, comprising the step of identifying a second visit path from the primary node to the second edit node, wherein the modification pattern is further based on the second visit path.
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、請求項2に記載の方法。 A step of identifying the first visit path and the second visit path as common visit paths with respect to each other, based on the first visit path and the second visit path having the same sequence of visit edges of the same type. Including
The method of claim 2, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
前記欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの少なくとも一部の複数の共通欠陥属性を識別するステップであって、前記複数の欠陥ノードのうちの前記特定ノードは、前記特定ノードが前記欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの前記一部の前記複数の共通欠陥属性のうちの1つ以上を含むことに基づき、前記プライマリノードとして分類される、ステップを含む、請求項1に記載の方法。 The defective software program contains a plurality of defects, and the step of classifying the specific node among the plurality of defective nodes as the primary node is described.
A step of identifying a plurality of common defect attributes of at least a part of the plurality of defects in the defective software program, wherein the specific node among the plurality of defective nodes is the specific node. Includes a step that is classified as the primary node based on including one or more of the plurality of common defect attributes of the portion of the plurality of defects in the defective software program. The method according to claim 1.
前記欠陥のあるソフトウェアプログラムと第2欠陥の修復としての第2編集操作を含む前記改善されたソフトウェアプログラムとの間の前記1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記第2欠陥に関する前記第2編集操作を識別するステップと、
前記複数の欠陥ノードのうちの別の特定ノードを、前記第2編集操作を実施する際の開始点として動作する第2プライマリノードとして分類するステップと、
前記第2プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記第2訪問パスは、前記訪問ASTに含まれ、前記第2プライマリノードと前記第2編集ノードとの間のプログラム上の関係を示し、前記修正パターンは、前記第2訪問パス及び前記第2編集操作に更に基づく、ステップと、
を含む請求項1に記載の方法。 The defect of the defective software program is the first defect, the editing operation is the first editing operation, the primary node is the first primary node, the visit path is the first visit path, and the above. The edit node is a first edit node, the plurality of defective nodes further include a second edit node, and the method further comprises.
The second defect of the defective software program based on the one or more differences between the defective software program and the improved software program including the second editing operation as a repair of the second defect. And the step of identifying the second editing operation with respect to
A step of classifying another specific node among the plurality of defective nodes as a second primary node that operates as a starting point when performing the second editing operation.
A step of identifying a second visit path from the second primary node to the second edit node, the second visit path is included in the visit AST, and the second primary node and the second edit node. The modification pattern is further based on the second visit path and the second editing operation.
The method according to claim 1.
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、請求項2に記載の方法。 Based on the fact that the first visit path and the second visit path include similar visit path descriptions, the first visit path and the second visit path further include a step of identifying the first visit path and the second visit path as common visit paths with respect to each other. ,
The method of claim 2, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
欠陥のあるソフトウェアプログラムと欠陥の修復としての編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記欠陥に関する前記編集操作を識別するステップと、
前記欠陥のあるソフトウェアプログラムを表す欠陥ASTを取得するステップであって、前記欠陥ASTは、前記欠陥を含む前記欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含み、前記複数の欠陥ノードは前記編集操作により変更される編集ノードを含む、ステップと、
前記複数の欠陥ノードのうちの特定ノードを、前記編集操作を実施する際の開始点として動作するプライマリノードとして分類するステップと、
前記プライマリノードから前記編集ノードへの訪問パスを識別するステップであって、前記訪問パスは前記欠陥ASTに対応する訪問ASTに含まれ、前記訪問パスは前記プライマリノードと前記編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含む、ステップと、
前記訪問パス及び前記編集操作に基づき修正パターンを生成するステップであって、前記修正パターンは、前記欠陥のあるソフトウェアプログラムのソースコードに適合する形式で生成される、ステップと、
前記修正パターンを用いて、被検査コードの識別された欠陥が前記欠陥のあるソフトウェアプログラムの前記欠陥と同じ種類であることに基づき、被分析ソフトウェアプログラムの前記被検査コードの前記識別された欠陥に関する修復操作を実行するステップと、
を含む、1つ以上の非一時的コンピュータ可読記憶媒体。 One or more non-temporary computer-readable storage media configured to store an instruction, the instruction causing the system to perform an operation in response to being executed.
With the step of identifying the editing operation for the defect in the defective software program based on one or more differences between the defective software program and the improved software program including the editing operation as repairing the defect. ,
A step of acquiring a defect AST representing the defective software program, wherein the defect AST includes a plurality of defect nodes corresponding to defect locations of the defective software program including the defect, and the plurality of defects. A node contains a step and an edit node that is modified by the edit operation.
A step of classifying a specific node among the plurality of defective nodes as a primary node that operates as a starting point when performing the editing operation, and
A step of identifying a visit path from the primary node to the edit node, the visit path is included in the visit AST corresponding to the defect AST, and the visit path is between the primary node and the edit node. A step and a step that contains a sequence of one or more visiting edges that show a programmatic relationship.
A step of generating a modification pattern based on the visit path and the editing operation, wherein the modification pattern is generated in a format compatible with the source code of the defective software program.
With respect to the identified defect of the inspected code of the software program to be analyzed, based on the correction pattern that the identified defect of the inspected code is of the same type as the defect of the software program with the defect. The steps to perform the repair operation and
One or more non-temporary computer-readable storage media, including.
前記プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記修正パターンは前記第2訪問パスに更に基づく、ステップ、を含む請求項8に記載の1つ以上の非一時的コンピュータ可読記憶媒体。 The edit node is a first edit node, the plurality of defective nodes includes a second edit node modified by the edit operation, the visit path is a first visit path, and the operation further comprises.
One or more of the steps according to claim 8, wherein the modification pattern is a step of identifying a second visit path from the primary node to the second edit node, further based on the second visit path. Non-temporary computer-readable storage medium.
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、請求項9に記載の1つ以上の非一時的コンピュータ可読記憶媒体。 The operation is based on the fact that the first visit path and the second visit path have the same sequence of visit edges of the same type, and the first visit path and the second visit path are common visit paths with respect to each other. Including further steps to identify
The one or more non-temporary computer-readable storage medium according to claim 9, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
前記欠陥のあるソフトウェアプログラムの前記欠陥と同様の複数の欠陥を含む複数の検査用の欠陥のあるソフトウェアプログラムを取得するステップと、
前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの少なくとも一部の複数の共通欠陥属性を識別するステップであって、前記複数の欠陥ノードのうちの前記特定ノードは、前記特定ノードが、前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの前記一部の前記複数の共通欠陥属性のうちの1つ以上を含むことに基づき、前記プライマリノードとして分類される、ステップと、
を含む、請求項8に記載の1つ以上の非一時的コンピュータ可読記憶媒体。 The step of classifying the specific node among the plurality of defective nodes as the primary node is
The step of acquiring a plurality of defective software programs for inspection including a plurality of defects similar to the above-mentioned defects of the defective software program, and
A step of identifying at least a plurality of common defect attributes among the plurality of defects in the plurality of inspection defect software programs, wherein the specific node among the plurality of defect nodes is , The particular node, based on the inclusion of one or more of the plurality of common defect attributes of the plurality of the plurality of defects in the software program with the plurality of inspection defects. Steps and, which are classified as primary nodes
One or more non-temporary computer-readable storage media according to claim 8.
前記欠陥のあるソフトウェアプログラムと第2欠陥の修復としての第2編集操作を含む前記改善されたソフトウェアプログラムとの間の前記1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記第2欠陥に関する前記第2編集操作を識別するステップと、
前記複数の欠陥ノードのうちの別の特定ノードを、前記第2編集操作を実施する際の開始点として動作する第2プライマリノードとして分類するステップと、
前記第2プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記第2訪問パスは、前記訪問ASTに含まれ、前記第2プライマリノードと前記第2編集ノードとの間のプログラム上の関係を示し、前記修正パターンは、前記第2訪問パス及び前記第2編集操作に更に基づく、ステップと、
を含む、請求項8に記載の1つ以上の非一時的コンピュータ可読記憶媒体。 The defect of the defective software program is the first defect, the editing operation is the first editing operation, the primary node is the first primary node, the visit path is the first visit path, and the above. The edit node is the first edit node, the plurality of defective nodes further include a second edit node, and the operation further includes.
The second defect of the defective software program based on the one or more differences between the defective software program and the improved software program including the second editing operation as a repair of the second defect. And the step of identifying the second editing operation with respect to
A step of classifying another specific node among the plurality of defective nodes as a second primary node that operates as a starting point when performing the second editing operation.
A step of identifying a second visit path from the second primary node to the second edit node, the second visit path is included in the visit AST, and the second primary node and the second edit node. The modification pattern is further based on the second visit path and the second editing operation.
One or more non-temporary computer-readable storage media according to claim 8.
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、請求項12に記載の1つ以上の非一時的コンピュータ可読記憶媒体。 The operation identifies the first visit path and the second visit path as common visit paths with respect to each other, based on the fact that the first visit path and the second visit path include similar visit path descriptions. Including more steps
The one or more non-temporary computer-readable storage medium according to claim 12, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
命令を格納するよう構成された1つ以上の非一時的コンピュータ可読記憶媒体と、
前記1つ以上のコンピュータ可読記憶媒体に通信可能に結合され、前記命令の実行に応答して、前記システムに動作を実行させるよう構成される1つ以上のプロセッサと、
を含み、前記動作は、
欠陥のあるソフトウェアプログラムと欠陥の修復としての編集操作を含む改善されたソフトウェアプログラムとの間の1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記欠陥に関する前記編集操作を識別するステップと、
前記欠陥のあるソフトウェアプログラムを表す欠陥ASTを取得するステップであって、前記欠陥ASTは、前記欠陥を含む前記欠陥のあるソフトウェアプログラムの欠陥位置に対応する複数の欠陥ノードを含み、前記複数の欠陥ノードは前記編集操作により変更される編集ノードを含む、ステップと、
前記複数の欠陥ノードのうちの特定ノードを、前記編集操作を実施する際の開始点として動作するプライマリノードとして分類するステップと、
前記プライマリノードから前記編集ノードへの訪問パスを識別するステップであって、前記訪問パスは前記欠陥ASTに対応する訪問ASTに含まれ、前記訪問パスは前記プライマリノードと前記編集ノードとの間のプログラム上の関係を示す1つ以上の訪問エッジのシーケンスを含む、ステップと、
前記訪問パス及び前記編集操作に基づき修正パターンを生成するステップと、
前記修正パターンを用いて、被検査コードの識別された欠陥が前記欠陥のあるソフトウェアプログラムの前記欠陥と同じ種類であることに基づき、被分析ソフトウェアプログラムの前記被検査コードの前記識別された欠陥に関する修復操作を実行するステップと、
を含む、システム。 It ’s a system,
One or more non-temporary computer-readable storage media configured to store instructions,
With one or more processors communicatively coupled to the one or more computer-readable storage media and configured to cause the system to perform an operation in response to execution of the instruction.
The above-mentioned operation includes
With the step of identifying the editing operation for the defect in the defective software program based on one or more differences between the defective software program and the improved software program including the editing operation as repairing the defect. ,
A step of acquiring a defect AST representing the defective software program, wherein the defect AST includes a plurality of defect nodes corresponding to defect locations of the defective software program including the defect, and the plurality of defects. A node contains a step and an edit node that is modified by the edit operation.
A step of classifying a specific node among the plurality of defective nodes as a primary node that operates as a starting point when performing the editing operation, and
A step of identifying a visit path from the primary node to the edit node, the visit path is included in the visit AST corresponding to the defect AST, and the visit path is between the primary node and the edit node. A step and a step that contains a sequence of one or more visiting edges that show a programmatic relationship.
A step of generating a correction pattern based on the visit path and the editing operation, and
With respect to the identified defect of the inspected code of the software program to be analyzed, based on the correction pattern that the identified defect of the inspected code is of the same type as the defect of the software program with the defect. The steps to perform the repair operation and
Including the system.
前記プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記修正パターンは前記第2訪問パスに更に基づく、ステップ、を含む、請求項14に記載のシステム。 The edit node is a first edit node, the plurality of defective nodes includes a second edit node modified by the edit operation, the visit path is a first visit path, and the operation further comprises.
14. The system of claim 14, further comprising a step of identifying a second visit path from the primary node to the second edit node, wherein the modification pattern is further based on the second visit path.
前記修正パターンを生成するステップは、前記第1訪問パス及び前記第2訪問パスが共通訪問パスとして識別されることに基づく、請求項15に記載のシステム。 A step of identifying the first visit path and the second visit path as common visit paths with respect to each other, based on the first visit path and the second visit path having the same sequence of visit edges of the same type. Including
The system of claim 15, wherein the step of generating the modification pattern is based on the first visit path and the second visit path being identified as a common visit path.
前記欠陥のあるソフトウェアプログラムの前記欠陥と同様の複数の欠陥を含む複数の検査用の欠陥のあるソフトウェアプログラムを取得するステップと、
前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの少なくとも一部の複数の共通欠陥属性を識別するステップであって、前記複数の欠陥ノードのうちの前記特定ノードは、前記特定ノードが、前記複数の検査用の欠陥のあるソフトウェアプログラムの中の前記複数の欠陥のうちの前記一部の前記複数の共通欠陥属性のうちの1つ以上を含むことに基づき、前記プライマリノードとして分類される、ステップと、
を含む、請求項14に記載のシステム。 The step of classifying the specific node among the plurality of defective nodes as the primary node is
The step of acquiring a plurality of defective software programs for inspection including a plurality of defects similar to the above-mentioned defects of the defective software program, and
A step of identifying at least a plurality of common defect attributes among the plurality of defects in the plurality of inspection defect software programs, wherein the specific node among the plurality of defect nodes is , The particular node, based on the inclusion of one or more of the plurality of common defect attributes of the plurality of the plurality of defects in the software program with the plurality of inspection defects. Steps and, which are classified as primary nodes
14. The system of claim 14.
前記欠陥のあるソフトウェアプログラムと第2欠陥の修復としての第2編集操作を含む前記改善されたソフトウェアプログラムとの間の前記1つ以上の相違に基づき、前記欠陥のあるソフトウェアプログラムの前記第2欠陥に関する前記第2編集操作を識別するステップと、
前記複数の欠陥ノードのうちの別の特定ノードを、前記第2編集操作を実施する際の開始点として動作する第2プライマリノードとして分類するステップと、
前記第2プライマリノードから前記第2編集ノードへの第2訪問パスを識別するステップであって、前記第2訪問パスは、前記訪問ASTに含まれ、前記第2プライマリノードと前記第2編集ノードとの間のプログラム上の関係を示し、前記修正パターンは、前記第2訪問パス及び前記第2編集操作に更に基づく、ステップと、
を含む、請求項14に記載のシステム。 The defect of the defective software program is the first defect, the editing operation is the first editing operation, the primary node is the first primary node, the visit path is the first visit path, and the above. The edit node is the first edit node, the plurality of defective nodes further include a second edit node, and the operation further includes.
The second defect of the defective software program based on the one or more differences between the defective software program and the improved software program including the second editing operation as a repair of the second defect. And the step of identifying the second editing operation with respect to
A step of classifying another specific node among the plurality of defective nodes as a second primary node that operates as a starting point when performing the second editing operation.
A step of identifying a second visit path from the second primary node to the second edit node, the second visit path is included in the visit AST, and the second primary node and the second edit node. The modification pattern is further based on the second visit path and the second editing operation.
14. The system of claim 14.
14. The system of claim 14, wherein the modification pattern is generated in a format compatible with the source code of the defective software program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020016769A JP2021124852A (en) | 2020-02-04 | 2020-02-04 | Correction pattern data-driven composition |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020016769A JP2021124852A (en) | 2020-02-04 | 2020-02-04 | Correction pattern data-driven composition |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021124852A true JP2021124852A (en) | 2021-08-30 |
Family
ID=77459768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020016769A Pending JP2021124852A (en) | 2020-02-04 | 2020-02-04 | Correction pattern data-driven composition |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021124852A (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11191063A (en) * | 1997-12-26 | 1999-07-13 | Fujitsu Ltd | Programming support device and program storage medium thereof |
JP2011513824A (en) * | 2008-02-29 | 2011-04-28 | アイティーアイ スコットランド リミテッド | System representation and handling technology |
JP2015069400A (en) * | 2013-09-30 | 2015-04-13 | 日立オートモティブシステムズ株式会社 | Software test system |
JP2017228035A (en) * | 2016-06-21 | 2017-12-28 | 日本電気株式会社 | Change meaning estimation device, change meaning estimation method and change meaning estimation program |
-
2020
- 2020-02-04 JP JP2020016769A patent/JP2021124852A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11191063A (en) * | 1997-12-26 | 1999-07-13 | Fujitsu Ltd | Programming support device and program storage medium thereof |
JP2011513824A (en) * | 2008-02-29 | 2011-04-28 | アイティーアイ スコットランド リミテッド | System representation and handling technology |
JP2015069400A (en) * | 2013-09-30 | 2015-04-13 | 日立オートモティブシステムズ株式会社 | Software test system |
JP2017228035A (en) * | 2016-06-21 | 2017-12-28 | 日本電気株式会社 | Change meaning estimation device, change meaning estimation method and change meaning estimation program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606570B2 (en) | Representing software with an abstract code graph | |
CN109144882B (en) | Software fault positioning method and device based on program invariants | |
US8966449B2 (en) | Test case pattern matching | |
US10296447B2 (en) | Automated software program repair | |
JP7110789B2 (en) | Selection of automated software program repair candidates | |
US10664383B2 (en) | Automated software program repair of similar code snippets | |
US10733075B2 (en) | Data-driven synthesis of fix patterns | |
US10049031B2 (en) | Correlation of violating change sets in regression testing of computer software | |
JP2017151977A (en) | Method and program for repairing software program | |
Santana et al. | RAIDE: a tool for Assertion Roulette and Duplicate Assert identification and refactoring | |
US10268572B2 (en) | Interactive software program repair | |
US7539977B1 (en) | Automatic bug isolation in computer programming languages | |
JP2020102209A (en) | Identification method of defect location on software program | |
JP7384054B2 (en) | automated software program repair | |
JP2020126603A (en) | Automatic candidate correction patch generation | |
US10761962B1 (en) | Automated software program repair | |
US11740895B2 (en) | Generation of software program repair explanations | |
WO2017201853A1 (en) | Method for locating program regression fault using slicing model | |
JP2021124852A (en) | Correction pattern data-driven composition | |
US11119889B1 (en) | Automated software program repair | |
Singhal et al. | A critical review of various testing techniques in aspect-oriented software systems | |
US11099817B1 (en) | Generation of software program repair examples | |
Salman et al. | Test Case Generation Model for UML Diagrams | |
CN113971042A (en) | Automated software program repair | |
Lee et al. | A Study of Applying Fault-based Genetic-Like Programming Approaches to Automatic Software Fault Corrections |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A80 | Written request to apply exceptions to lack of novelty of invention |
Free format text: JAPANESE INTERMEDIATE CODE: A80 Effective date: 20200228 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221006 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230929 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231010 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20240409 |