JP2016071895A - クラスタ化されたコード解析警告のレビューのための方法およびシステム - Google Patents

クラスタ化されたコード解析警告のレビューのための方法およびシステム Download PDF

Info

Publication number
JP2016071895A
JP2016071895A JP2015191891A JP2015191891A JP2016071895A JP 2016071895 A JP2016071895 A JP 2016071895A JP 2015191891 A JP2015191891 A JP 2015191891A JP 2015191891 A JP2015191891 A JP 2015191891A JP 2016071895 A JP2016071895 A JP 2016071895A
Authority
JP
Japan
Prior art keywords
warnings
common point
function
review
groups
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015191891A
Other languages
English (en)
Other versions
JP6116639B2 (ja
Inventor
ビー ムスク トゥカラム
B Muske Tukaram
ビー ムスク トゥカラム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tata Consultancy Services Ltd
Original Assignee
Tata Consultancy Services Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tata Consultancy Services Ltd filed Critical Tata Consultancy Services Ltd
Publication of JP2016071895A publication Critical patent/JP2016071895A/ja
Application granted granted Critical
Publication of JP6116639B2 publication Critical patent/JP6116639B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】複数の警告の報告およびレビューにおける冗長性を除去し、手作業によるレビュー労力を削減する。【解決手段】ソフトウェアコードに関連付けられた複数の警告から、複数の共通ポイント警告と、複数のユニーク警告とを特定する工程と、複数の共通ポイント警告のそれぞれの必須重複関数のトップをさらに特定する工程と、必須重複関数のトップに基づいて、複数の共通ポイント警告の1つ以上のグループを生成する工程と、必須重複関数のトップを、複数の共通ポイント警告の対応するグループ用の制約として割り当てる工程と、レビュー出力を用いて、複数の警告を、1つ以上のグループから除去する工程を含む。レビュー出力は、制約下における共通ポイント警告のレビューが、グループの残存する全ての共通ポイント警告のレビューに対応するように、制約下において1つ以上のグループからの共通ポイント警告をレビューすることにより特定される。【選択図】図4

Description

関連出願への相互参照および優先権
本出願は、2014年9月29日に出願されたインド国仮特許出願番号第3103/MUM/2014号に基づく優先権を主張する。該インド国仮特許出願の開示内容の全ては、参照により、本明細書に組み込まれる。
本発明は、一般に、プログラムコードの静的解析に基づいて生成される複数の警告のレビューに関する。特に、本発明は、クラスタ化されたコードの静的解析の間に生成される複数の警告をレビューするための方法およびシステムを提供する。
静的解析は、安全を最重視すべき(セーフティクリティカルな)アプリケーションの認証(validation)および検証(verification)において最も重要である。しかしながら、大規模アプリケーションの場合、多くのリソースを必要するため(high demand of resources)、コードの数千もの行の解析には不向きである。そのため、静的コード解析ツールにおいて、拡張性(スケーラビリティ)がボトルネックとして存在している。米国特許出願2012/0291004A1(Shrawan Kumar et. al.)は、静的解析ツールを非常に大きな規模のシステムに拡張するための技術として、クラスタ化(clustering)を開示している。
ある特定の機能を実現するソフトウェアコードは、「クラスタ」と称され、クラスタは、ソフトウェアコードの機能にエントリーする関数によって示される。クラスタは、オリジナルのソフトウェアよりも、コードサイズが小さく、よりシンプルである。静的解析ツールは、複数のクラスタを個別かつ独立して解析することによって、クラスタ固有解析結果(cluster-specific analysis results)を生成することができる。
しかしながら、クラスターコードの静的解析を実行している間、静的解析の不正確な特性およびクラスタ間通信(データ共有)のために用いられる従来のアプローチによって、膨大な数の解析警告が生成されてしまう。このような場合、警告が実際の欠陥を表すものかどうか判断するために、全ての警告を手作業でレビューする必要がある。この作業は、多大な労力と時間を要するものである。さらに、複数のクラスタに属するプログラムポイントの警告は、複数回報告される。すなわち、プログラムポイントの関連付けられた複数のクラスタのそれぞれに警告が生成される。そのため、クラスタ化されたソフトウェアコードの警告の数が増加するという問題がある。
近年、静的解析における主な研究は、静的解析をより正確にすることを目的としている。しかしながら、複数の警告のレビューの間に費やされる手作業の労力を削減することを目的とする研究が、数は少ないが行われている。本分野の現状では、静的解析ツールは、クラスタ化されたコード解析(clustered-code analysis)において、クラスタワイズ(cluster-wise:クラスタ指向、クラスタベース)に生成された複数の警告を報告するだけである。さらに、複数の共通ポイント警告(common point warnings)は、クラスタワイズにレビューされる。なぜならば、複数のクラスタのコンテキスト(context:内容)における複数の共通ポイント警告を同時にレビューするためには、複数のクラスタ間の切り替え(スイッチング)を実行することが必要であり、複数のクラスタ間の切り替えは、冗長で退屈だからである。さらに、関連付けられたクラスタのコンテキストにおける全ての共通ポイント警告を同時にレビューする間に必要とされる情報は、手作業で解析するには量が多すぎるであろうし、任意のレビュー支援ツールが使用されるとしても、そのレビュー支援ツールは、複数のクラスタに拡張できないであろう。
既存の解決法の大多数は、静的バグ報告(static bug report)において利用可能な構文的(syntactic)かつ構造的(structural)な情報を活用することにより、クラスタリングマシーン生成欠陥報告(clustering machine-generated defect reports)に基づいて、静的解析の間に生成された複数のエラー報告をグループ化することに依拠している。
しかしながら、従来技術文献は、構文的かつ構造的な情報に基づき、静的解析の間に生成された複数のエラー報告をクラスタ化(クラスタリング)することを基礎としており、そうして形成されるグループ/クラスタは、複数の異なるプログラムポイントに属する複数の警告/欠陥を含むことができるが、一般的に、複数のクラスタに属する複数の警告をグループ化することはできない。
さらに、現実のシステム(real world system)は、非常に大規模で複雑なので(通常、数百万行のコードからなる)、静的解析ツールの大部分は、現実のシステムを解析できない。クラスタ化(システムを複数のクラスタに分割すること)は、この問題を克服するために一般に用いられる技術である。
本技術では、システムコードを、複数のより小さなコードクラスタに分割することによって、解析ツールの拡張性が実現される。このような、オリジナルのシステムより小さく、よりシンプルなクラスタは、静的解析ツールによって解析され、クラスタ固有の結果(cluster-specific results)を生成する。システムのクラスタワイズ解析は、さらに、共有変数用の従来の解析による警告数の増加に繋がる。さらに、複数のクラスタに属するプログラムポイントの警告は、複数回報告される。すなわち、関連付けられた複数のクラスタのそれぞれ毎に、複数のクラスタに属するプログラムポイントの警告が報告される。そのため、クラスタ化されたコードの警告の数が増加し、膨大な数になるという問題がある。
近年の静的解析分野における主な研究は、静的解析をより正確にすることを目的とするものであり、生成された複数の警告のレビューの間に費やされる手作業による労力を削減するための研究は多くは行われていなかった。現状、複数のクラスタ化されたコード警告をレビューしている間に費やされる労力を削減することを目的とする技術/方法/システムが存在していない。
従来技術文献は、明らかに、クラスタコードソフトウェアの静的解析の間に生成された複数の警告用の効果的なレビュー技術を開示しておらず、そのため、そのような技術が本技術領域における最も大きな課題の1つとして未だ認識されている。
本発明の方法、システムおよびハードウェアの実施可能性を説明する前に、本発明は、以下説明される特定のシステムおよび方法に限定されず、本開示において明示的に説明されない本発明の複数の実施形態が存在し得ることを理解されたし。また、本開示において用いられる専門用語は、特定のバージョンまたは実施形態を説明するためにのみ用いられるものであって、本発明の範囲を限定する意図で用いられることはなく、本発明の範囲は、添付の特許請求の範囲によってのみ限定されることを理解されたし。
本出願は、複数の警告の報告およびレビューにおける冗長性(redundancy)を除去し、手作業によるレビュー労力を削減するための、クラスタ化されたソフトウェアコードに関連付けられた複数の警告の改良されたレビュー用のシステムおよび方法を提供する。
本出願は、ソフトウェアコードに関連付けられた複数の警告をレビューするためのコンピューター実施方法(computer implemented method)を提供する。実施形態の1つにおいて、該方法は、プロセッサーによって、ソフトウェアコードに関連付けられた複数の警告から、複数の共通ポイント警告および1つ以上のユニーク警告を特定する工程を含む。ソフトウェアコードは、複数のクラスタに区分け(セグメント化)され、ソフトウェアコードのクラスタワイズ解析において複数の警告が生成される。共通ポイント警告は、複数のクラスタの2つ以上のクラスタに共通している。共通ポイント警告は、コード中の単一のユニークプログラムポイントに対応していてもよく、2つ以上のクラスタ内のプログラムポイントの包含(inclusion of the program point)に起因して、複数回報告される。さらに、該方法は、プロセッサーによって、複数の共通ポイント警告のそれぞれの必須重複関数のトップ(a top of must overlapped function)を特定する工程を含む。共通ポイント警告の必須重複関数のトップは、警告プログラムポイントから、共通ポイント警告の2つ以上のクラスタに関連付けられたクラスタエントリー関数まで到達する間に必ず通過される(always traversed)トップ必須関数(top most function)である。さらに、該方法は、必須重複関数のトップに基づいて、複数の共通ポイント警告の1つ以上のグループを生成する工程を含む。さらに、該方法は、必須重複関数のトップを、複数の共通ポイント警告の対応するグループ用の制約(constraint)として割り当てる工程を含む。制約に基づくレビューは、同じグループの複数の共通ポイント警告のそれぞれのレビューに対して適用可能である。さらに、該方法は、プロセッサーによって、共通ポイント警告のレビュー出力を用いて、1つ以上のグループのそれぞれから、該共通ポイント警告以外の警告を除去する工程を含む。ここで、レビュー出力は、制約下での共通ポイント警告のレビューが、対応するグループの全ての残存共通ポイント警告のレビューに適合(satisfy)するように、1つ以上のグループのそれぞれからの共通ポイント警告をレビューすることによって特定される。
異なる実施形態によれば、本出願は、ソフトウェアコードに関連付けられた複数の警告をレビューするためのシステム(102)を提供する。システム(102)は、ソフトウェアコードに関連付けられた複数の警告から、複数の共通ポイント警告および1つ以上のユニーク警告を特定する警告解析モジュール(214)を備える。ソフトウェアコードは、複数のクラスタを有しており、複数の警告は、共通ポイント警告が複数のクラスタの2つ以上のクラスタに共通するように、ソフトウェアコードのクラスタワイズ解析において生成される。システム(102)は、複数の共通ポイント警告の必須重複関数のトップを特定するグループ特定モジュール(216)を備える。共通ポイント警告の必須重複関数のトップは、警告プログラムポイントから、複数の共通ポイント警告の2つ以上のクラスタに関連付けられたクラスタエントリー関数まで到達する間に必ず通過されるトップ必須関数である。さらに、グループ特定モジュール(216)は、必須重複関数のトップに基づいて、複数の共通ポイント警告の1つ以上のグループを生成する。さらに、システム(102)は、プロセッサーによって、必須重複関数のトップを、複数の共通ポイント警告の対応するグループ用の制約として割り当てる制約特定モジュール(218)を備える。制約に基づくレビューは、同じグループの複数の共通ポイント警告のそれぞれのレビューに対して適用可能である。また、システムは、共通ポイント警告のレビュー出力を用いて、1つ以上のグループのそれぞれから、該共通ポイント警告以外の警告を除去する警告レビューモジュール(226)を備える。ここで、レビュー出力は、制約下での共通ポイントのレビューが、対応するグループの全ての残存共通ポイント警告のレビューに適合するように、1つ以上のグループのそれぞれからの共通ポイント警告をレビューすることによって特定される。
さらに別の実施形態によれば、システム(102)のプロセッサーにより実行される命令を保存している非一時的コンピューター可読媒体(non-transitory computer readable medium)が提供される。該命令は、システム(102)のプロセッサーによって実行されたとき、プロセッサーによって、ソフトウェアコードに関連付けられた複数の警告から複数の共通ポイント警告および1つ以上のユニーク警告を特定するための方法をプロセッサーに実行させる。ソフトウェアコードは、複数のクラスタに区分け(セグメント化)され、複数の警告は、ソフトウェアコードのクラスタワイズ解析において生成される。共通ポイント警告は、複数のクラスタの2つ以上のクラスタに共通している。共通ポイント警告は、コード中の単一のユニークプログラムポイントに対応していてもよく、2つ以上のクラスタ内のプログラムポイントの包含に起因して、複数回報告される。さらに、該方法は、プロセッサーによって、複数の共通ポイント警告のそれぞれの必須重複関数のトップを特定する工程を含む。共通ポイント警告の必須重複関数のトップは、警告プログラムポイントから、共通ポイント警告の2つ以上のクラスタに関連付けられたクラスタエントリー関数まで到達する間に必ず通過されるトップ必須関数である。さらに、該方法は、必須重複関数のトップに基づいて、複数の共通ポイント警告の1つ以上のグループを生成する工程を含む。さらに、該方法は、必須重複関数のトップを、複数の共通ポイント警告の対応するグループ用の制約として割り当てる工程を含む。制約に基づくレビューは、同じグループの複数の共通ポイント警告のそれぞれのレビューに対して適用可能である。さらに、該方法は、プロセッサーによって、共通ポイント警告のレビュー出力を用いて、1つ以上のグループのそれぞれから、該共通ポイント警告以外の警告を除去する工程を含む。ここで、レビュー出力は、制約下での共通ポイント警告のレビューが、対応するグループの全ての残存共通ポイント警告のレビューに適合するように、1つ以上のグループのそれぞれからの共通ポイント警告をレビューすることによって特定される。
以下の好適な実施形態についての詳細な説明と同様、上述の概要は、添付の図面と共に参照されることによって、よりよく理解される。本発明の説明の目的のため、本発明の例示的な構成が図面中に示されるが、本発明は開示される特定の方法およびシステムに限定されるものではない。
図1は、本発明の実施形態に係るソフトウェアコードに関連付けられた複数の警告の改良されたレビューのためのシステムのネットワーク実施を示す図である。
図2は、本発明の実施形態に係るソフトウェアコードに関連付けられた複数の警告をレビューするためのシステムを示す図である。
図3は、本発明の例示的な実施形態に係る重複範囲チェーン(OSC: Overlapped Scope Chain)の例を示す図である。
図4は、本発明の例示的な実施形態に係るソフトウェアコードに関連付けられた複数の警告をレビューするための方法を示すフローチャートである。
本発明の全ての特徴を示す本発明のいくつかの実施形態が、詳細に説明される。
以下、「構成される」、「有する」、「含む」、「備える」およびそれらの他の形式は、同等な意味であり、これら文言は、これらの文言のいずれか1つに続く事項または複数の事項のオープンなリストを意味するが、そのような事項に限定されるような排他的でクローズドなリストを意味するものではなく、また、列挙された事項のみに限定されることを意味するものではない。
また、本明細書及び添付の特許請求の範囲において用いられる、単数形“a”、“an”、“the”は、文脈が明確に示していなければ、複数形も含むことを留意されたし。ここで説明されるシステムおよび方法と同等または対応する任意のシステムおよび方法は、本発明の実施形態の実施またはテストに使用することができ、好適例、システムおよび方法が以下に説明される。
開示される実施形態は、本発明の例示にすぎず、様々な形態で実施可能である。
以下、各実施形態において、図中に示される各要素が、より詳細に説明される。また、詳細な説明を提供する前に、以下の議論は全て、説明される特定の実施形態に関わらず、限定を示すものではなく、特徴の例示であることを留意されたし。例えば、実施形態の選択された様態、特徴またはコンポーネントがメモリー内に保存されているものとして図示されているが、用いられる警告システムおよび方法に一致するシステムおよび方法の全てまたは一部が、分散されて保存されていてもよいし、他の機械可読媒体(machine-readable media)から読み込まれてもよい。
上述の技術は、1つ以上のコンピュータープログラムにおいて実施することができる。1つ以上のコンピュータープログラムは、プログラム可能(programmable)コンピューター上で実行され(または、プログラム可能コンピューターによって実行可能であり)、プログラム可能コンピューターは、任意の数の以下の要素の組み合わせ、すなわち、プロセッサー、プロセッサーによって読み込み可能および/または書き込み可能な記憶(ストレージ)媒体(例えば、揮発性および非揮発性メモリー並びに/または記憶要素)、複数の入力ユニット、および複数の出力デバイスの任意の数の組み合わせ備えている。プログラムコードは、任意の複数の入力ユニットを用いて入力され、説明される機能を実行し、さらに、任意の複数の出力デバイス上に表示される出力を生成することができる。
以下の本発明の範囲内の各コンピュータープログラムは、任意のプログラミング言語(例えば、アセンブリ言語、機械言語、高レベル手続き型プログラミング言語、オブジェクト指向プログラミング言語)によって実施することができる。プログラミング言語は、例えば、コンパイル型またはインタプリタ型プログラミング言語であってもよい。このようなコンピュータープログラムのそれぞれは、コンピュータープロセッサーによる実行のために、機械可読記憶デバイス内に実体的に具体化された(tangibly embodied)コンピュータープログラム製品において実施される。
本発明の方法の工程は、コンピューター可読媒体上に実体的に具体化されたプログラムを実行する1つ以上のコンピュータープロセッサーによって実行され、入力を操作し、出力を生成することにより、本発明の機能を実行する。適切なプロセッサーは、例として、一般的マイクロプロセッサーおよび特殊用途のマイクロプロセッサーの双方を含む概念である。一般的に、プロセッサーは、メモリー(例えば、ROMおよび/またはRAM)から命令およびデータを受信し(読み込み)、メモリーに命令およびデータを書き込む(保存する)。記憶デバイスは、コンピュータープログラム命令およびデータを実体的に具体化するために適したものであり、例えば、EPROM,EEPROM、フラッシュメモリー等の非揮発性メモリー(半導体メモリーデバイス等)、内部ハードディスクおよびリムーバブルディスク等の磁気ディスク、光磁気ディスクおよびCD−ROMsの全ての形態を含む。上述のうちの任意のものは、特殊設計されたASICs(Application-Specific Integrated Circuits)やFPGAs(Field-Programmable Gate Arrays)によって補完またはこれらに組み込まれていてもよい。また、コンピューターは、一般的に、非揮発性コンピューター可読記憶媒体(例えば、図示しない内部ディスク、リムーバブルディスク)から、プログラムおよびデータを受信し(読み込み)、非揮発性コンピューター可読記憶媒体に、プログラムおよびデータを書き込む(保存する)。
ここに開示される任意のデータは、例えば、非揮発性コンピューター可読媒体上に実体的に保存されている1つ以上のデータ構造体内で実施されている。本発明の実施形態は、このような1つまたは複数のデータ構造体内にこのようなデータを保存し、このような1つまたは複数のデータ構造体からこのようなデータを読み出す。
本出願は、ソフトウェアコードに関連付けられた複数の警告のレビューのためのコンピューター実施方法およびシステムを提供する。ソフトウェアコードは、複数のクラスタを有する。より具体的には、システムおよび方法は、複数の共通ポイント警告(common point warnings)の報告およびレビューにおける冗長性(redundancy)を除去することによって、クラスタ化されたコード解析(clustered code analysis)において生成された複数の共通ポイント警告の改良された報告およびレビューを容易にする。
図1には、本発明の実施形態に係るクラスタ化されたコード解析において生成された複数の警告の改良されたレビューのためのシステム102のネットワーク実施100が示されている。本発明は、システム102がサーバー上に実施されているものとして説明されるが、システム102は、様々な演算システム(例えば、ラップトップコンピューター、デスクトップコンピューター、ノートコンピューター、ワークステーション、メインフレームコンピューター、サーバー、ネットワークサーバー)において実施されていてもよいことは理解されるであろう。実施形態の1つにおいて、システム(102)は、クラウドベース環境(cloud-based environment)において実施されていてもよい。システム(102)は、1つ以上のユーザーデバイス104−1、104−2・・・104−N(以下、集合的にユーザーデバイス(104)と称される)、またはユーザーデバイス(104)上に駐在するアプリケーションを介して、複数のユーザーからアクセス可能であることは理解されるであろう。ユーザーデバイス(104)の例としては、これに限られるものではないが、携帯型コンピューター、PDA(Personal Digital Assistant)、ハンドヘルドデバイス、ワークステーション等が挙げられる。ユーザーデバイス(104)は、ネットワーク(106)を介して、システム(102)に通信可能に接続される。
実施形態の1つにおいて、ネットワーク(106)は、無線ネットワーク、有線ネットワーク、またはこれらの組み合わせであってもよい。ネットワーク(106)は、異なる種類のネットワーク(例えば、イントラネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット等)のいずれか1つとして実施することができる。ネットワーク(106)は、専用ネットワークであってもよいし、共有ネットワークであってもよい。共有ネットワークは、異なる種類のネットワークの接続を意味し、様々なプロトコル(例えば、ハイパーテキストトランスファープロトコル(HTTP)、トランスミッションコントロールプロトコル/インターネットプロトコル(TCP/IP)、ワイヤレスアプリケーションプロトコル(WAP)等)を用いて、互いに通信する。さらに、ネットワーク106は、様々なネットワークデバイス(例えば、ルーター、ブリッジ、サーバー、演算デバイス、ストレージ装置等)を含んでいてもよい。
図2を参照して、本発明の実施形態の1つにおける、システム(102)の様々なコンポーネントの詳細な動作を説明する。実施例の1つにおいて、静的解析ツールは、クラスタ化されたソフトウェアコードを解析し、1つ以上の警告を生成する。複数の警告は、図示しない静的解析報告ビューワー(static analysis report viewer)を用いて報告される。静的解析報告ビューワーは、解析の間に生成された複数の警告を含む解析の出力を表示するために用いられる。
本発明の実施形態の1つにおいて、ソフトウェアコードの解析の間に生成される複数の警告は、警告解析モジュール(214)を用いてさらに解析される。警告解析モジュール(214)は、静的解析ツールによって生成された複数の警告から、複数の共通ポイント警告および複数のユニーク警告を個別に特定する。このような特定を実行するため、警告解析モジュール(214)は、複数の共通ポイント警告を、コード内における単一のユニークプログラムポイントに対応する複数の警告のセットとして特定するが、ソフトウェアコードの複数のクラスタ内のプログラムポイントの包含(inclusion of the program point)に起因して、該複数の共通ポイント警告を複数回報告する。複数のユニーク警告は、単一のクラスタ用に報告されるが、その他のクラスタ用には報告されない警告である。複数のクラスタにおける単一のユニークプログラムポイントの包含は、複数のクラスタ内において関数が再利用される(呼び出される)ことに起因するものである。
例えば、表1を参照すると、w1警告(ゼロ除算エラーに対応する)は、w1警告が再利用される関数f2における同じプログラムポイントに対応するため、タスク1およびタスク2の双方用に報告される。同様に、w2警告(境界外の配列インデックスのチェック(array index out bound check)に対応)も、共通ポイント警告として2回報告される。
例えば、表1を参照すると、警告w1およびw2がそれぞれ生成される。なぜならば、静的解析機(static analyzer)は、「p2」の正確な値および「*」によって示される式を算出することができないためである。複数の共通ポイント警告における安全性またはエラーは、複数の共通ポイントに関連付けられた複数のクラスタのコンテキストに応じて変化するため、複数の共通ポイント警告のクラスタワイズ報告は、必要不可欠である。例えば、警告w2は、タスク1における欠陥(配列の境界外アクセス)を表す一方、同じ警告w2は、タスク2用には安全なアレイアクセスであり、その逆もまた同様である。

表1:クラスタ化されたコード解析において生成される複数の警告の例
Figure 2016071895
複数のクラスタを有するソフトウェアに対するクラスタ化されたコード解析の複数の結果は、クラスタ固有(cluster-specific)である。複数の警告は、クラスタワイズに生成される。よって、クラスタ化されたコード解析によって生成された警告は、クラスタワイズにレビューされる。そのため、複数の共通ポイント警告も、クラスタワイズにレビューされる。このような複数のレビューによって、複数の共通ポイント警告のレビューにおいて冗長性が生じる。
さらに、複数の共通ポイント警告の個々の報告の後、グループ特定モジュール(216)は、複数の共通ポイント警告のグループ化およびグループ化された複数の共通ポイント警告の報告を容易にする。複数の共通ポイント警告および複数のユニーク警告を区別して識別し、複数の共通ポイント警告をグループ化するために、システム(102)のその他のコンポーネントの動作と併せて、範囲チェーン特定モジュール(scope chain identifier module)(220)の詳細な動作が、本発明の実施形態に従って説明される。複数の警告を生成した後、範囲チェーン特定モジュール(220)は、最初に、複数の関数、すなわち、複数の関数のリストを特定する。該複数の関数のリストでは、警告がレビューされている。実施形態の1つにおいて、警告の認証(validation)は、最低限のコード範囲(lowest code scope)において開始されてもよく、その後の範囲は、警告に関する決定がなされるまで、増分(increment)されてもよい。例えば、表1を参照すると、タスク1における警告w2の認証は、f2の範囲において開始され、意思決定(decision-making)におけるf2の観察の不十分さ(observing insufficiency)がある場合、範囲はf1まで増加され、その後、タスク1まで増加される。関数の範囲内の複数の警告をレビューするために関数にアクセス(visit)する関数は、範囲関数(scope function)と称される。
さらに、範囲チェーン特定モジュール(220)は、警告の手作業のレビューの間に通過される(traversed)複数の範囲関数の順序付きリスト(ordered list)を生成してもよい。例えば、(a)タスク2における警告2の認証は、意思決定においてタスク2の範囲を必要とするため、f2→f1→タスク2によって示される範囲チェーンを有しており、(b)任意のクラスタの警告w1の検査(inspecting)は、警告がf2の範囲において、それ自身が無効化(invalidate)されるので(偽の警告と特定されるので)、f2→f1の範囲チェーンを有する。範囲チェーンの最後における関数は、範囲関数の「トップ(top)」として参照される。例えば、f1は、f2→f1の範囲チェーンのトップである。
1つの共通ポイント警告の複数の関連付けられたクラスタに対する共通ポイント警告の認証の間に通過された複数の範囲チェーンは、重複する(overlapped)初期部分(initial portion)を有していることが見て取れる。共通ポイント警告に関連している複数のクラスタの逆および結合コールグラフ(reversed and joint call-graph)は、複数の重複範囲チェーン(OSCs: Overlapped Scope chains)を算出するのに適している。例えば、図3は、複数の重複範囲チェーン(OSCs)を示すコールグラフのいくつかの例を示している。さらに、必須重複範囲チェーン特定モジュール(must overlapped scope chain identifier module)(222)は、共通ポイント警告に関連しているソフトウェアコードの複数のクラスタの逆および結合コールグラフから、複数の重複範囲チェーン(OSCs)を特定することができる。図3(a)は、表1内のコードサンプルに対応し、f2→f1が、双方のクラスタに対する警告w1(または警告w2)の検査の間のOSCであることを示している。さらに、共通ポイント警告は、複数のOSCsを有することができ、図3(b)に示す例では、f3→f1の範囲チェーンおよびf3→f2の範囲チェーンの双方がOSCsである。
さらに、必須重複範囲チェーン特定モジュール(222)は、複数の共通ポイント警告に対応する複数の必須重複範囲チェーン(必須OCSs:must-OSCs)を特定してもよい。もし、(a)複数の共通ポイント警告に関連付けられた複数のクラスタの複数のエントリー関数の全てが厳密にOSCのトップから到達可能であり、さらに、(b)これらエントリー関数がトップを通過しない警告関数から到達可能ではない場合、最大長のOSCは、必須OSCとして参照される。例えば、図3(a)中のf2→f1と、図3(b)中のOSCsの双方(f3→f1およびf3→f2)は、必須OSCsである。図3(c)は、図3(c)のクラスタの単一の必須OSCとしてf2を有している。
実際、全てのクラスタは、コードの数千もの行に及ぶ(span)ものであり、複数のクラスタ間で再利用される数百もの関数への複数の呼び出し(コール)を含んでいる。複数の共通ポイント警告を検査している間、レビュワー(reviewer)は、通常、必須OSCsを認識していない。そのため、複数のOSCsの手作業のチェックを繰り返すことになり、冗長な労力をかけることに繋がってしまう。複数のOSCsの反復される手作業のチェックの冗長性は、複数の共通ポイント警告のシステマティック(系統的)なグループ化を通じて除去される。
複数の共通ポイント警告のグループ化は、1)複数の警告がユニークであるか、複数のクラスタに対して共通であるかを区別して識別する工程と、2)複数のユニークな警告をクラスタワイズに報告し、さらに、共通ポイント警告を共にクラスタワイズにグループ化し、報告する工程と、3)各グループ毎に、複数のグループ化された共通ポイント警告に関連付けられた各必須OSCのトップと長さ(範囲関数の数)を報告する工程と、を含んでいてもよい。
複数の共通ポイント警告の必須重複範囲チェーン(必須OSCs)を特定した後、グループ特定モジュール(216)は、複数の共通ポイント警告を1つのグループにグループ化する。グループ特定モジュール(216)は、必須重複範囲チェーンのトップに基づいて、複数の共通ポイント警告をグループ化する。必須OSCのトップは、複数の共通ポイント警告のプログラムポイントから、複数の共通ポイント警告の2つ以上のクラスタに関連付けられた複数のクラスタエントリー関数に到達するまでの間に、必ず通過されるトップ必須関数(top most function)である。さらに、制約特定モジュール(218)は、そうして形成されたグループのそれぞれ用の制約を特定する。特定された制約は、警告プログラムポイントから、関連付けられたクラスタのそれぞれのエントリーポイント/関数まで到達する間に必ずアクセス(visit)される必須OSCのトップ必須関数であってもよい。制約特定モジュール(218)は、警告レビューモジュール(warning reviewer module)(226)によって生成されたレビュー出力が、共通ポイント警告用のレビュー出力を用いて、1つ以上のグループのそれぞれから、該共通ポイント警告以外の複数の警告を除去できるように、そうして形成されたグループのそれぞれ用の制約を報告する。ここで、レビュー出力は、該制約下での共通ポイント警告のレビューが、対応するグループの残存する全ての共通ポイント警告のレビューに対して適用可能となるように、該制約下で1つ以上のグループのそれぞれからの共通ポイント警告をレビューすることにより特定される。所与の制約下において、警告を判別(judge)できないとき、グループ特定モジュール(216)は、同じグループのその他の警告をレビューしている間に、レビュー情報のいくつかの部分を記録(log)し、再利用することを容易にする。
さらに、システム(102)は、1つ以上のグループの1つの共通ポイント警告用に生成されたレビュー出力が安全であると判断される場合、その後、警告レビューモジュール(226)が同じグループのその他の全ての共通ポイント警告、すなわち、グループの全ての警告を除去し、同じグループの全ての警告を自動的に安全な警告であると判断する。

表2:複数の共通ポイント警告の複数のグループの報告
Figure 2016071895
さらに、サブグループ特定モジュール(224)は、複数の共通ポイント警告の複数のグループを、複数のサブグループに区分けしてもよい。複数のサブグループは、複数のサブグループの必須重複範囲チェーンのトップに個々に関連付けられている。複数のサブグループは、各サブグループに関連付けられた個別の制約を有しており、サブグループ化は、グループ化技術から最大の利益(maximum benefits)を受け取るようになされる。グループ化アプローチから最大の利益を得るために、複数の共通ポイント警告は、複数のサブグループの複数の必須OSCsの長さに基づいて、複数のサブグループに、さらに区分けされる。表2は、図3(d)内の4つの共通ポイント警告(w5)に対応する2つのサブグループの例をも示している。クラスタであるタスク1、タスク2、タスク3およびタスク4内の複数の警告は、それぞれの必須OSCsの長さが異なるため、複数のそれぞれ異なるサブグループ内に配置される。各サブグループに対応するトップも報告される。
さらに、システム(102)は、複数の共通ポイント警告の複数のグループおよび複数のサブグループの改良されたレビューを可能とする。共通ポイント警告の検査の間、(a)もし、警告が、該警告のグループ用に報告された任意のトップ間を横断せず(without crossing any of tops)、誤判定(false positive)と判断される場合、グループ化されたその他の全ての警告もまた誤判定であり、それらは一度に除去される。(b)もし、(a)でなく、さらに、警告が、該警告のサブグループのトップ間を横断せず、無効化される場合、該警告のサブグループの全ての警告は、共に除去される。(c)もし、(a)および(b)の双方に該当しない場合、ユーザーは、複数のトップ関数において利用可能なレビュー情報を記録(log)し、さらに、後に、残りの複数の共通ポイント警告(rest common point warnings)が、それらの関連する複数のクラスタのコンテキストにおいてレビューされるとき、レビュー情報を再利用することができる。例えば、タスク1の警告2(表1のグループ1)のレビューの間、レビュワーは、警告判断が「p」に依存することを記録することができる。記録された情報は、タスク2の警告2をレビューする間に再利用することが可能であり、それにより、ユーザーが、呼び出し(コール)から、f1関数までの検査を開始することを支援することができる。このように、レビュー情報の記録によっても、レビューの冗長性のいくつかを回避することができる。
表3には、システム(102)の実施の実験結果が提供されている。提案のグループ化技術が適用され、レビュー労力の削減におけるグループ化技術の影響がチェックされる。App(アプリケーション)1は、14MLOCのコードサイズを有し、平行して実行される98個のクラスタから構成されるインフォテインメント(infotainment:情報と娯楽の双方を提供するプログラムの形態)システムである。これらのクラスタは、4KLOCから700KLOCのサイズを有しており、これら複数のクラスタは、合計31288個の関数から構成されている。31288個の関数のうち、9327個は、複数のクラスタ間で再利用される。App2は、29個のクラスタ内に分配された(10KLOCのサイズの)組み込みシステム(embedded system)である。組み込みシステムは、83個の関数に及ぶものであり、これらのうち14個の関数が再利用される。アプリケーションApp1およびApp2は、ゼロ除算(ZD:Zero Division)、境界外の配列インデックス(AIOB:Array Index Out of Bound)、ポインタの不正な逆参照(IDP:Illegal Dereference of a Pointer)およびオーバーフロー―アンダーフロー(OFUF:OverFlow-UnderFlow)に関して検証(verified)される。これらチェック項目は、ソフトウェア検証に共通するチェック特性である。実験結果が表3に示されている。表3中のグループALMおよびサブグループALのような列は、形成された複数のグループに関連付けられた複数の必須OSCsの平均長を意味する。

表3:実験結果
Figure 2016071895
表3において提供された結果から得られたいくつかの観察が、以下にリストされる。(1)全警告の約45%は、共通ポイント警告としてグループ化され、それらのうち、18%のみがユニークである。(2)形成されたグループの高い割合(25%)が、5個以上の警告を含んでいる。(3)グループの約6%は、複数のトップを有しており、これは、複数のトップを有する複数のグループのこれら警告のレビューには、単一のトップを有するグループ化された複数の警告をレビューするための労力よりも、より多くの労力が必要であることを示している。(4)複数のサブグループのALMは、複数のグループのALMよりも常に大きい。なぜならば、グループの必須OSCsは、グループのサブグループの複数の必須OSCsに含まれるからである。

表4:手作業によるレビュー結果
Figure 2016071895

グループ化技術の影響をチェックするため、それぞれ異なるグループに属する180個の警告がランダムに選択され、手作業でレビューされる。表4は、複数の警告の複数のグループのレビュー結果を示している。この結果は、以下を示している。(1)131個の警告のレビューが、合計で517個の警告の除去に繋がった。(2)約66%のグループ(180個のうち、119個)が、各グループからの単一の警告を検査するだけで除去された。(3)トップレベルのグループ化(top level grouping)がいくつかの警告を除去していない場合、サブグループ化がその除去されない警告の除去に有用であった。(4)33個の警告を検査している間に収集されたレビュー情報が、その他の42個の警告をレビューする間に再利用された。労力削減についてのグループ化技術の影響をチェックするため、上記180個のグループに属する640個の警告が以下の2つの異なる設定でレビューされた。(1)個別のレビュー(グループ化なし)、(2)グループベースのレビュー(groups-based reviewing)。
この実験は、レビュー労力の約50%〜70%が、グループベースの警告除去、レビュー情報の記録および再利用によって削減されたことを示している。この削減は、レビュワーの能力、用いる支援ツール、コードの事前知識等によって変化することがわかっている。なお、クラスタにユニークな警告は、グループ化の対象ではないため、達成された削減は、共通ポイント警告のみに対するものであることに留意されたし。
本開示は、警告の高い割合(約45%)が共通ポイント警告として観察されることを開示しているが、これは、ソフトウェアアプリケーションが多くのコードを再利用するためである。多くのコードの再利用に起因して、多くの警告が複数回報告される。解析結果がクラスタ固有(cluster-specific)であっても、全ての警告を個別にレビューする必要がないことが実証された。複数の警告の関連付けられた複数のタスクのコンテキスト内の複数の警告を個別にレビューする間に発生した冗長性は、複数の警告のグループ化によって除去される。本開示の主な寄与は、必須OSCsベースのグループ化基準を特定すること、各グループの特定された必須OSCsのトップを報告すること、および、必須OSCsを警告レビュープロセスの一部とすることにある。実験は、形成されたグループの合計の約66%が、各グループからの単一の警告をレビューするだけで除去されることを明らかにしている。グループベースの除去、および、トップ関数における警告に対する決定を成すことができない場合のレビュー情報の記録は、合計で60%の手作業労力の削減に繋がる。
グループ化アプローチを用いない場合、削減される不必要な労力が、同じコードを複数回検査するために費やされるであろう。さらに、実験結果は、第1のレベルのグループ化がいくつかの警告を除去しない場合、サブグループ化がその除去されない警告の除去に有用であることも実証している。AIOB、ZD、OFUFおよびIDP特性が実験の中で検討されたが、提案のグループ化技術は、初期化されていない変数(un-initialized variables)のようなその他の特性用に生成された警告にも適用することが可能である。「C」言語で記載された組み込みドメインアプリケーション(embedded domain application)を実験に用いられたか、一般的に用いられているコーディング慣習(common coding practices)によって、その他のドメイン/言語のアプリケーションと同様の同じような利益が得られることが予見される。
実施形態の1つにおいて、本開示のシステム102は、必須重複範囲チェーンを算出する技術を提供する。必須重複範囲チェーンを算出するため、システム102は、アプリケーションコールグラフを構築する。レビュー(グループ化)制約の算出は、必須重複範囲チェーンのトップの関数の適合性(suitability)(すなわち、制約)のために、共通ポイント警告関数が呼び出される全ての関数のチェックを行う必要がある。そのため、本開示において開示される技術は、非常に短い時間でレビュー(グループ化)制約を算出する軽量技術(light weight technique)である。本システム102によるGUI/インターフェースは、ユーザーフレンドリーであり、重要情報をターゲティング提供(targeting presentation)し、ユーザーがレビュー情報を記録し、再利用することを可能とする。本開示のシステムおよび方法を用いることにより、複数の共通ポイント警告のレビューにおいて必要とされる手作業のレビュー労力の約60%が削減される。
上述の例示的な実施形態は、複数の利点を提供することができる。本開示の様態で実施されることは必須ではなく、これら利点は、以下の特徴によって提供される利点を含んでいてもよい。
いくつかの実施形態は、システムおよび方法が、複数の共通ポイント警告と複数のユニーク警告とを区別して識別し、さらに、複数のユニーク警告および複数の共通ポイント警告の報告を分離することを可能とする。
いくつかの実施形態は、システムおよび方法が、複数の共通ポイント警告の報告およびレビューにおける冗長性を除去することにより、クラスタ化されたコード解析において発生した複数の共通ポイント警告の改良された報告およびレビューを容易とすることを可能とする。
いくつかの実施形態は、システムおよび方法が、複数の共通ポイント警告をレビューしている間に、ユーザーに有用なレビュー支援情報を記録し、後に提供することを容易にすることを可能とする。
いくつかの実施形態は、システムおよび方法が、必須重複範囲チェーンのトップ、並びに、複数の共通ポイント警告の複数のグループおよび複数のサブグループの制約ベースのレビューに基づいて、複数の共通ポイント警告をグループ化およびサブグループ化することにより、複数の共通ポイント警告のレビューにおける冗長性を排除し、レビュー労力を削減することを容易とすることを可能とする。
図4には、クラスタ化されたコード解析において生成された複数の警告の改良されたレビューのための工程を含む方法を説明するフローチャートが、本発明の実施形態にしたがって、示されている。
該方法は、一般に、コンピューター実行可能命令の観点から、記述することができる。一般的に、コンピューター実行可能命令は、特定の機能を実行または特定の抽象データ型(abstract data types)を実施するルーティーン(routines)、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャー(procedures)、モジュール、関数等を含む。また、図4の方法は、通信ネットワークを介してリンクされた複数の遠隔処理デバイスによって機能が実行される分散型演算環境(distributed computing environment)内において実施されてもよい。分散型演算環境内では、コンピューター実行可能命令は、ローカルコンピューター記憶媒体およびメモリー保存デバイス等の遠隔コンピューター記憶媒体の双方内に位置していてもよい。
該方法が説明される順番は、限定を構築する意図はなく、任意の数の説明される方法のブロックが任意の順番で組み合され、図4に示す方法または任意の代替的方法を実施することができる。さらに、個々のブロックが、ここに説明される本発明の原理および範囲から逸脱することなく、図4に示す方法から削除されてもよい。さらに、該方法は、任意の適切なハードウェア、ソフトウェア、ファームフェア、およびこれらの組み合わせにおいて実施することができる。しかしながら、説明の簡略化のため、以下に説明される実施形態では、図4の方法は、上述のシステム(102)において実施されているものとして考える。
工程(402)において、処理が開始する。ここで、複数の警告が解析され、該複数の警告がそれぞれユニーク警告もしくは共通ポイント警告として特定される。特定された共通ポイント警告は、2つ以上のクラスタに共通する複数の警告のセット(共通ポイント警告)であり、特定されたユニーク警告は、単一のクラスタ用にのみ報告された警告である。
工程(404)において、複数の警告のそれぞれがユニーク警告であるか、各クラスタの共通ポイント警告であるかの判別が行われる。このように警告が特定されると、特定された警告がユニーク警告の場合は、工程(406)において報告され、特定された警告が共通ポイント警告の場合は、工程(408)においてそれぞれ報告される。
工程(410)において、工程(408)において報告された複数の共通ポイント警告がグループ化される。実施形態の1つにおいて、複数の共通ポイント警告のグループ化は、工程(404)に示されているように、(1)複数の警告がユニークであるか、複数のクラスタに共通であるかを区別して識別する工程と、(2)複数のユニーク警告をクラスタワイズに報告し、さらに、複数の共通ポイント警告を共にグループ化し、報告する工程と、(3)各グループ毎に、グループ化された複数の共通ポイント警告に関連付けられた各必須重複範囲チェーンのトップおよび長さ(範囲関数の数)を報告する工程と、を含む。
工程(412)において、工程(410)において形成された複数の共通ポイント警告の各グループにおける複数の警告のレビューのために、制約が特定される。特定された制約は、警告プログラムポイントから、関連付けられた複数のクラスタのそれぞれのエントリーポイント/関数まで到達するまでの間に必ずアクセス(visit)されるトップ必須関数であってもよい。
工程(414)において、レビュー判断を示すレビュー出力が、所与の制約下におけるグループ化された1つの警告のレビュー判断が、同じグループの他の全ての警告のレビューに対して適用可能となるように、生成される。この方法は、グループ内の1つの警告のみのレビューを必要とするものである。さらに、所与の制限下において、警告を判断することができない場合、関連付けられたトップ関数において利用可能なレビュー情報が記録されてもよく、さらに、同じグループにおけるその他の複数の警告をレビューする間にレビュー情報の全部またはいくつかの部分が用いられてもよい。
工程(416)において、処理は終了する。工程(414)において生成されたレビュー判断は、同じグループのその他の複数の警告が安全な警告(safe warnings)であるか、偽警告(false warnings)であるかを判断するために用いられる。
グループ化アプローチから最大の利益を得るために、複数の共通ポイント警告は、さらに、必須OSCsの長さに基づいて、複数のサブグループに区分けされてもよい。さらに、図4に示す方法は、複数の共通ポイント警告の複数のグループ(1つのグループ内の複数の警告)を、複数のサブグループに区分けする工程を含む。図4の方法は、複数の共通ポイント警告の複数のグループを、各サブグループに対応する必須重複範囲チェーンのトップに個別に関連付けられた複数のサブグループに区分けする工程を含む。
共通ポイント警告の検査の間、(a)もし、警告が、該警告のグループ用に報告された任意のトップ間を横断せず、誤判定と判断される場合、グループ化されたその他の全ての警告もまた誤判定であり、それらは一度に除去される。(b)もし、(a)でなく、さらに、警告が、該警告のサブグループのトップ間を横断せず、無効化される場合、該警告のサブグループの全ての警告は、共に除去される。(c)もし、(a)および(b)の双方に該当しない場合、ユーザーは、複数のトップ関数において利用可能なレビュー情報を記録し、さらに、後に、残りの複数の共通ポイント警告が、それらの関連する複数のクラスタのコンテキストにおいてレビューされるとき、レビュー情報を再利用することができる。
図4の方法は、1つ以上のグループの1つの共通ポイント警告用のレビュー出力が安全と判断された場合、その後、プロセッサーを用いて、同じグループのその他の全ての共通ポイント警告を除去することができる。すなわち、グループの全ての警告を、自動的に安全な警告と判断することができる。
さらに、図4の方法は、関連付けられた複数の制約と共に、複数の共通ポイント警告、複数の共通ポイント警告のグループ、および複数の共通ポイント警告の複数のグループの複数のサブグループの全てを有する報告を生成する工程を含んでいてもよい。
クラスタ化されたコード解析において生成された複数の警告の改良されたレビューのための方法およびシステムの実施形態が、特定の構造的特徴および/または方法の文脈において説明されたが、添付の特許請求の範囲は、説明された特定の特徴または方法に必ずしも限定されないことに留意されたい。むしろ、特定の特徴および方法は、クラスタ化されたコード解析において生成された複数の警告の改良されたレビューのための実施形態の例示として開示されたにすぎない。

Claims (14)

  1. ソフトウェアコードに関連付けられた複数の警告をレビューするための方法であって、
    プロセッサーによって、
    複数のクラスタを有する前記ソフトウェアコードに関連付けられ、前記ソフトウェアコードのクラスタワイズな静的解析において生成された前記複数の警告から、前記複数のクラスタの2つ以上のクラスタに共通する複数の共通ポイント警告と、1つ以上のユニーク警告と、を特定し、さらに、
    警告プログラムポイントから、前記複数の共通ポイント警告の前記2つ以上のクラスタに関連付けられたクラスタエントリー関数まで到達するまでの間に必ず通過されるトップ必須関数である前記複数の共通ポイント警告のそれぞれの必須重複関数のトップを特定する工程と、
    前記プロセッサーによって、前記必須重複関数の前記トップに基づいて、前記複数の共通ポイント警告の1つ以上のグループを生成する工程と、
    前記プロセッサーによって、前記必須重複関数の前記トップを、前記複数の共通ポイント警告の対応するグループ用の制約として割り当てる工程であって、
    前記制約に基づくレビューは、同じグループの前記複数の共通ポイント警告のそれぞれのレビューに適用可能である、割り当てる工程と、
    前記プロセッサーによって、共通ポイント警告用のレビュー出力を用いて、該共通ポイント警告以外の複数の警告を、前記1つ以上のグループのそれぞれから除去する工程であって、
    前記レビュー出力は、前記制約下における前記共通ポイント警告のレビューが、対応する前記グループの残存する全ての共通ポイント警告のレビューに対して適用可能となるように、前記制約下において前記1つ以上のグループのそれぞれからの前記共通ポイント警告をレビューすることによって特定される、除去する工程と、を含むことを特徴とする方法。
  2. 前記複数の警告は、静的解析ツールを用いた前記ソフトウェアコードのクラスタワイズな静的解析において生成される請求項1に記載の方法。
  3. 前記共通ポイント警告は、前記2つ以上のクラスタにおける前記プログラムポイントンの包含に起因して、複数回報告される前記ソフトウェアコード内の単一のユニークプログラムポイントに対応する請求項1に記載の方法。
  4. 前記複数の共通ポイント警告のそれぞれの前記必須重複関数のトップを特定する工程は、さらに、
    前記プロセッサーによって、1つ以上の範囲関数チェーンを特定する工程であって、
    前記1つ以上の範囲関数チェーンは、複数の関数間のチェーンであり、前記関数は、前記複数の関数間の前記チェーンのクラスタエントリー関数から呼び出され、前記複数の関数は、警告のレビューの間に通過される、前記1つ以上の範囲関数チェーンを特定する工程と、
    前記プロセッサーによって、前記1つ以上のグループのそれぞれの1つ以上の必須重複範囲チェーンを特定する工程であって、
    前記1つ以上の必須重複範囲チェーンは、前記1つ以上のグループのそれぞれの共通ポイント警告をレビューする間に必ず通過される前記1つ以上の範囲関数チェーンの一部である、前記1つ以上の必須重複範囲チェーンを特定する工程と、を含む請求項1に記載の方法。
  5. 前記複数の共通ポイント警告の前記1つ以上のグループを分割することによって、1つ以上のサブグループを生成する工程をさらに含み、
    前記複数の共通ポイント警告の前記サブグループを生成する工程は、前記必須重複関数の第2のトップが、警告プログラムポイントから、前記サブグループ内の前記複数の警告に関連付けられた前記複数のクラスタの複数のクラスタエントリー関数まで到達するまでの間に必ず通過されるトップ必須関数となるように、前記必須重複関数の前記第2のトップに基づいて行われる請求項1に記載の方法。
  6. 前記プロセッサーによって、前記制約が、前記1つ以上のサブグループのそれぞれの警告の全てのレビューに適用可能となるように、前記1つ以上のサブグループのそれぞれ用の第2の制約を示す第2の出力を生成する工程を含む請求項5に記載の方法。
  7. ソフトウェアコードに関連付けられた複数の警告をレビューするためのシステムであって、
    プロセッサーと、
    複数のクラスタを有する前記ソフトウェアコードに関連付けられ、前記ソフトウェアコードのクラスタワイズな解析において生成された前記複数の警告から、前記複数のクラスタの2つ以上のクラスタにおいて共通する複数の共通ポイント警告と、1つ以上のユニーク警告と、を特定する警告解析モジュールと、
    警告プログラムポイントから、前記複数の共通ポイント警告の前記2つ以上のクラスタに関連付けられた複数のクラスタエントリー関数まで到達するまでの間に必ず通過されるトップ必須関数である前記複数の共通ポイント警告のそれぞれの必須重複関数のトップを特定し、さらに、
    前記必須重複関数の前記トップに基づいて、前記複数の共通ポイント警告の1つ以上のグループを生成するグループ特定モジュールと、
    前記必須重複関数の前記トップを、前記複数の共通ポイント警告の対応するグループ用の制約として割り当てる制約特定モジュールであって、
    前記制約に基づくレビューは、同じグループの前記複数の共通ポイント警告のそれぞれのレビューに適用可能である、制約特定モジュールと、
    共通ポイント警告用のレビュー出力を用いて、該共通ポイント警告以外の複数の警告を、前記1つ以上のグループのそれぞれから除去する警告レビューモジュールであって、
    前記レビュー出力は、前記制約下における前記共通ポイント警告のレビューが、対応する前記グループの残存する全ての共通ポイント警告のレビューに対して適用可能となるように、前記制約下において前記1つ以上のグループのそれぞれからの前記共通ポイント警告をレビューすることによって特定される、警告レビューモジュールと、を含むことを特徴とするシステム。
  8. 1つ以上の範囲関数チェーンを特定する範囲チェーン特定モジュールであって、
    前記1つ以上の範囲関数チェーンは、複数の関数間のチェーンであり、前記関数は、前記複数の関数間の前記チェーンのクラスタエントリー関数から呼び出され、前記複数の関数は、警告のレビューの間に通過される、範囲チェーン特定モジュールと、
    前記1つ以上のグループのそれぞれの1つ以上の必須重複範囲チェーンを特定する必須重複範囲チェーン特定モジュールであって、
    前記1つ以上の必須重複範囲チェーンは、前記1つ以上のグループのそれぞれの共通ポイント警告をレビューする間に必ず通過される前記1つ以上の範囲関数チェーンの一部である、必須重複範囲チェーン特定モジュールと、をさらに含む請求項7に記載のシステム。
  9. 前記複数の共通ポイント警告の前記1つ以上のグループを分割することによって、1つ以上のサブグループを生成するサブグループ特定モジュールをさらに含み、
    前記複数の共通ポイント警告のグループ化は、前記必須重複関数のトップが、前記複数の警告プログラムポイントから、それぞれの前記クラスタエントリー関数まで到達するまでの間に必ず通過されるトップ必須関数となるように、前記必須重複関数の前記トップに基づいて行われる請求項8に記載のシステム。
  10. 前記制約特定モジュールは、さらに、前記制約が、前記1つ以上のサブグループのそれぞれの警告の全てのレビューに適用可能となるように、前記1つ以上のサブグループのそれぞれ用の第2の制約を示す第2の出力を生成するよう構成されている請求項9に記載のシステム。
  11. システム上のプロセッサーによって実行されたとき、前記プロセッサーに以下の方法を実行させる命令を保存している非一時的コンピューター可読媒体であって、該方法は、
    プロセッサーによって、
    複数のクラスタを有する前記ソフトウェアコードに関連付けられ、前記ソフトウェアコードのクラスタワイズな静的解析において生成された前記複数の警告から、前記複数のクラスタの2つ以上のクラスタに共通する複数の共通ポイント警告と、1つ以上のユニーク警告と、を特定し、さらに、
    警告プログラムポイントから、前記複数の共通ポイント警告の前記2つ以上のクラスタに関連付けられたクラスタエントリー関数まで到達するまでの間に必ず通過されるトップ必須関数である前記複数の共通ポイント警告のそれぞれの必須重複関数のトップを特定する工程と、
    前記プロセッサーによって、前記必須重複関数の前記トップに基づいて、前記複数の共通ポイント警告の1つ以上のグループを生成する工程と、
    前記プロセッサーによって、前記必須重複関数の前記トップを、前記複数の共通ポイント警告の対応するグループ用の制約として割り当てる工程であって、
    前記制約に基づくレビューは、同じグループの前記複数の共通ポイント警告のそれぞれのレビューに適用可能である、割り当てる工程と、
    共通ポイント警告用のレビュー出力を用いて、該共通ポイント警告以外の複数の警告を、前記1つ以上のグループのそれぞれから除去する工程であって、
    前記レビュー出力は、前記制約下における前記共通ポイント警告のレビューが、対応する前記グループの残存する全ての共通ポイント警告のレビューに対して適用可能となるように、前記制約下において前記1つ以上のグループのそれぞれからの前記共通ポイント警告をレビューすることによって特定される、除去する工程と、を含むことを特徴とする非一時的コンピューター可読媒体。
  12. 前記方法は、前記プロセッサーによって、1つ以上の範囲関数チェーンを特定する工程であって、
    前記1つ以上の範囲関数チェーンは、複数の関数間のチェーンであり、前記関数は、前記複数の関数間の前記チェーンのクラスタエントリー関数から呼び出され、前記複数の関数は、警告のレビューの間に通過される、前記1つ以上の範囲関数チェーンを特定する工程と、
    前記プロセッサーによって、前記1つ以上のグループのそれぞれの1つ以上の必須重複範囲チェーンを特定する工程であって、
    前記1つ以上の必須重複範囲チェーンは、前記1つ以上のグループのそれぞれの共通ポイント警告をレビューする間に必ず通過される前記1つ以上の範囲関数チェーンの一部である、前記1つ以上の必須重複範囲チェーンを特定する工程と、をさらに含む請求項11に記載の非一時的コンピューター可読媒体。
  13. 前記方法は、前記プロセッサーによって、前記複数の共通ポイント警告の前記1つ以上のグループを分割することによって、1つ以上のサブグループを生成する工程をさらに含む請求項11に記載の非一時的コンピューター可読媒体。
  14. 前記方法は、前記プロセッサーによって、前記制約が、前記1つ以上のサブグループのそれぞれの警告の全てのレビューに適用可能となるように、前記1つ以上のサブグループのそれぞれ用の第2の制約を示す第2の出力を生成する工程を含む請求項13に記載の非一時的コンピューター可読媒体。
JP2015191891A 2014-09-29 2015-09-29 クラスタ化されたコード解析警告のレビューのための方法およびシステム Active JP6116639B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN3103/MUM/2014 2014-09-29
IN3103MU2014 2014-09-29

Publications (2)

Publication Number Publication Date
JP2016071895A true JP2016071895A (ja) 2016-05-09
JP6116639B2 JP6116639B2 (ja) 2017-04-19

Family

ID=55584554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015191891A Active JP6116639B2 (ja) 2014-09-29 2015-09-29 クラスタ化されたコード解析警告のレビューのための方法およびシステム

Country Status (2)

Country Link
US (1) US10025699B2 (ja)
JP (1) JP6116639B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018026135A (ja) * 2016-08-11 2018-02-15 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析警告の効率的な運用のための原因ポイント解析のためのシステム及び方法
JP2020004363A (ja) * 2018-06-25 2020-01-09 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 複数の静的解析アラームを再配置するための方法およびシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977017B2 (en) 2016-04-23 2021-04-13 International Business Machines Corporation Warning data management for distributed application development
US10831637B2 (en) * 2016-04-23 2020-11-10 International Business Machines Corporation Warning data management with respect to an execution phase
US10031821B2 (en) * 2016-09-26 2018-07-24 James Nelson Distributed network electronic interference abatement system and method
CN111897673B (zh) * 2020-07-31 2022-10-21 平安科技(深圳)有限公司 运维故障根因识别方法、装置、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014170530A (ja) * 2013-02-28 2014-09-18 Tata Consultancy Services Ltd 静的解析中に発生した警告をグループ化するシステムおよび方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0837662A (ja) * 1994-07-22 1996-02-06 Hitachi Ltd 画像符号化復号化装置
US7261983B2 (en) * 2000-12-08 2007-08-28 Litel Instruments Reference wafer and process for manufacturing same
US20030212878A1 (en) * 2002-05-07 2003-11-13 Chen-Hanson Ting Scaleable microprocessor architecture
US7386845B1 (en) * 2005-03-24 2008-06-10 Network Appliance, Inc. Automated compatibility and upgrade/downgrade knowledge base
US7992134B2 (en) * 2005-04-29 2011-08-02 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Systems, methods and apparatus for modeling, specifying and deploying policies in autonomous and autonomic systems using agent-oriented software engineering
US7644056B2 (en) * 2006-01-05 2010-01-05 Sundri Kaur Khalsa System and method for providing terrorism intelligence indications and warnings
JP2008052410A (ja) * 2006-08-23 2008-03-06 Hitachi Ltd 計算機開発装置
US9030657B2 (en) * 2010-07-14 2015-05-12 William P. Kuhn, Ph.D., Llc Device and method for subaperture stray light detection and diagnosis
US8856764B2 (en) 2011-01-25 2014-10-07 International Business Machines Corporation Distributed static analysis of computer software applications
US8612941B2 (en) 2011-05-10 2013-12-17 Tata Consultancy Services Limited System and method for analysis of a large code base using partitioning
JP5665128B2 (ja) 2011-05-30 2015-02-04 日本電気通信システム株式会社 静的解析支援装置、静的解析支援方法、及びプログラム
US8745578B2 (en) 2011-12-04 2014-06-03 International Business Machines Corporation Eliminating false-positive reports resulting from static analysis of computer software
US8793664B2 (en) * 2011-12-12 2014-07-29 Microsoft Corporation Reducing false alarms for static analysis of concurrent programs

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014170530A (ja) * 2013-02-28 2014-09-18 Tata Consultancy Services Ltd 静的解析中に発生した警告をグループ化するシステムおよび方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018026135A (ja) * 2016-08-11 2018-02-15 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析警告の効率的な運用のための原因ポイント解析のためのシステム及び方法
JP2020004363A (ja) * 2018-06-25 2020-01-09 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 複数の静的解析アラームを再配置するための方法およびシステム

Also Published As

Publication number Publication date
US10025699B2 (en) 2018-07-17
JP6116639B2 (ja) 2017-04-19
US20160092340A1 (en) 2016-03-31

Similar Documents

Publication Publication Date Title
JP6116639B2 (ja) クラスタ化されたコード解析警告のレビューのための方法およびシステム
US11321085B2 (en) Meta-indexing, search, compliance, and test framework for software development
US9176729B2 (en) System and method for prioritizing and remediating defect risk in source code
US10120783B2 (en) Determining test case efficiency
US9459980B1 (en) Varying cluster sizes in a predictive test load while testing a productive system
US20200272741A1 (en) Advanced Rule Analyzer to Identify Similarities in Security Rules, Deduplicate Rules, and Generate New Rules
US9317414B2 (en) Regression testing of SQL execution plans for SQL statements
US10387236B2 (en) Processing data errors for a data processing system
KR102301946B1 (ko) 분산 시스템에서 결함을 분석하기 위한 비주얼 툴
US9971677B2 (en) Generation of test scenarios based on risk analysis
JP5008006B2 (ja) シンプトンの検証を可能にするためのコンピュータ・システム、方法及びコンピュータ・プログラム
US11531539B2 (en) Automated compliance and testing framework for software development
US11586433B2 (en) Pipeline release validation
US20160315961A1 (en) Reporting security vulnerability warnings
US11531538B2 (en) Meta-indexing, search, compliance, and test framework for software development using smart contracts
US20230208882A1 (en) Policy - aware vulnerability mapping and attack planning
JP6419667B2 (ja) テストdbデータ生成方法及び装置
Tornhill Assessing technical debt in automated tests with codescene
Thompson et al. How software developers use work breakdown relationships in issue repositories
Gupta Nirikshan: process mining software repositories to identify inefficiencies, imperfections, and enhance existing process capabilities
JP2009245154A (ja) シンプトンを評価するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
Punn et al. Testing big data application
Pathania et al. Role of test case prioritization based on regression testing using clustering
Masur et al. Preliminary performance analysis of Hadoop 3.0. 0-alpha3
Schulte et al. Active files as a measure of software maintainability

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170111

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170321

R150 Certificate of patent or registration of utility model

Ref document number: 6116639

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250