JP2009525522A - コンテクストベースのコード分析 - Google Patents

コンテクストベースのコード分析 Download PDF

Info

Publication number
JP2009525522A
JP2009525522A JP2008552301A JP2008552301A JP2009525522A JP 2009525522 A JP2009525522 A JP 2009525522A JP 2008552301 A JP2008552301 A JP 2008552301A JP 2008552301 A JP2008552301 A JP 2008552301A JP 2009525522 A JP2009525522 A JP 2009525522A
Authority
JP
Japan
Prior art keywords
code
context
analysis
rule
rules
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
JP2008552301A
Other languages
English (en)
Other versions
JP5165591B2 (ja
Inventor
ヴァン ゴッホ ジェフリー
シー.ファニング マイケル
ディー.サンズ ショーン
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009525522A publication Critical patent/JP2009525522A/ja
Application granted granted Critical
Publication of JP5165591B2 publication Critical patent/JP5165591B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms

Abstract

ターゲットコードの分析チェックに関連する、形式化した一連の中間分析コンテクストの実施形態を提供する。上記の中間分析コンテクストには、ターゲットコードの開発フェーズ、ターゲットコードの種類もしくは状態、ターゲットコードを操作するソース、ターゲットコードの目的、または他の開発要件もしくは実行時要件を含むことができるがこれらに限らない。従って実施形態は、ターゲットコードがカレント分析コンテクストの下で開発されている該カレント分析コンテクストを動的に特定し、次いで、ルールを適用可能なコンテクストの知識に基づいてルールを実行することができる。より詳細には、分析ルールは(例えば、メタデータを通して)ルールを実行可能とするこれらコンテクスト条件を記述することができる。上記の記述とカレントコンテクストとに基づいて、上記コンテクスト条件に適用するよう構成したルールを実行することができる。

Description

コード分析方法及びツールに関する。
大多数のソフトウェアは多数の再利用可能なソフトウェアオブジェクトとして開発され、それぞれは1つまたは複数のタスクを実行するよう設計されている。ソフトウェア、およびそのソフトウェアを実行するコンピューティングシステムの有用性および機能性はソースコードの正確なコーディングに依存する。そのソースコードは、コンパイルまたは解釈されてプロセッサにより実行される。コーディングエラーは通常、ソフトウェアの期待される機能からの逸脱の原因となり、コンピュータシステムの他の部分(例えば、他のアプリケーション、データベース、オペレーティングシステム、等)に影響を及ぼす恐れがある。上記コーディングエラーはソフトウェアとのユーザのコンピューティングエクスペリエンスの妨げとなるだけでなく、コンピュータシステムに渡る望ましくない影響の原因ともなりうる。従って、高品質ソフトウェアの生産者は大量のテストおよび分析工数を費やしてソフトウェア内のエラーを排除する。
しかしながら、市場の要求ならびにプログラマおよび設計者の創造性により、ソフトウェアは強力とはいえ益々複雑になった。ソフトウェアの複雑性が増すと、そのソフトウェアの実装に必要なソースコードの行数も増す。直接的な結果として、ソースコード内のエラーの可能性が増え続ける。従って、ソフトウェアを多数回および様々な方法で(リリース前後に)テストまたは分析して、そのソフトウェアが意図したように動作することの保証支援をしなければならないことがよくある。
幾つかの分析環境では、テスタは、ソフトウェアの1つまたは複数の部分の動作を検証する自動化されたルールまたはテスト(本明細書では同じ意味で使用する)を開発する。例えば、ルールはグラフィカルユーザインタフェース内部の入力フィールド値の入力、様々な入力パラメータおよび広範囲の条件下でのソフトウェアオブジェクトの呼び出し、結果の出力の収集、ならびにテストが合格または失敗したかどうかの決定を自動化することができる。テスタ(テスト開発者であるかもしれずテスト開発者でないかもしれない)は、次いでテストケースを実行する。そのテストケースは、テストされるオブジェクトまたはターゲットコードが合格または失敗したかどうか(および従ってオブジェクトが意図したように動作しているかどうか)を示すものを提供する。
今日では、テスト開発者は異なるレベルのソフトウェア検証に対して異なるルールを書いている。異なるレベルとは例えば、オブジェクトまたはコード片が合格または失敗したかどうかを決定するときに、それぞれのルールが実施する分析の量などである。ソフトウェアをテストするルールに対する検証レベルは、無数の要因に依存して大きく異なる。従って、ルールまたはテストケースの実行に費やす時間とソフトウェアが徹底的にテストされる度合いとの間には一般にトレードオフが存在する。特に、生成および分析される出力が少なければ少ないほど、テストに費やされる時間は少なくなる。例えば、テスト開発者はソフトウェアのストレスまたは負荷を単純にテストするためのルールを書くことができる。上記の場合、テストケースの結果の出力は無視される恐れがあり、オブジェクトまたはターゲットコードはソフトウェアまたはシステムがクラッシュしない限り合格したと見なされる。この分析の形態によりソフトウェアの迅速なテストが可能であるが、ソフトウェアに起因する全ての効果は完全には決定されない。従って、通常、それぞれのルールが適切にソフトウェアを分析するために必要な検証レベルの決定において、多数の議論および検討事項が必要である。
広範囲のテスト検証レベルを可能とするため、コード分析ツール(例えば、静的コード分析ツール)が開発されてきた。そのコード分析ツールは、ソフトウェア開発者が自身のコードをチェックして問題および矛盾を探すための準自動的なメカニズムを提供する。より詳細には、テスト開発者は上記のツールに、ソフトウェアソース、オブジェクト、またはバイナリコードを分析してその正確性、完全性、および/または品質を特定するための様々な検証レベルを有する一連のルールを投入する。これらのツールは一般にソフトウェアの分析を、様々な形態の構成を通して制御する一体的な動作として、実施または実行する。換言すると、コードに適用した特定のチェックまたはルールを、(#pragmaのような)ソース制御表現により、ツールのコマンドラインオプションを通して、または別の制御ファイル内で表現した設定により、有効または無効のいずれかにする。これによりテスタは、開発プロセスにおける様々な段階で実行されるルールの種類を幾らか制御することができるが、上記アプローチにはなお幾つかの欠点および制限がある。
例えば、適切にコードをテストするため、テスタ(すなわち、静的コード分析ツールのユーザ)は様々なルールの豊富な知識を有する必要がある。その知識にはルールを適用すべき段階および条件が含まれるがこれらに限らない。しかしながら、上記の全てのテストケースの知識は、一般に大部分のコード開発者のスキルセットを越えている(なぜならば、コード開発者は一般にテスト開発者ほど専門的でないからである)。従って、テスタは適切な時点および適切な条件下でルールを適用することができない。さらに、上記のテストは一般に本質的に静的である(すなわち、上記のテストは通常、テスタからの明示的なジェスチャにより実行される)ので、上記のテストを実行するとき様々な時間的な非効率性がある。例えば、同じチェックが何度も何度も実行される恐れがあり、問題がプロセス内の不適切な時点(例えば、それらが繰り返し無視または保留される場所)で発生する可能性があり、および/またはエラーもしくは不良が開発プロセスにおいて十分に早期に特定されない恐れがある(すなわち、問題が特定または発見されるのがチェックインより後であればあるほど、それを解決するコストがよりかかることは自明である)。従って、一般的なコード分析ツールのこれらおよび他の関連する欠点は、過度の作業、ユーザおよび開発者の不満、性能問題、特定されないエラーまたは不良、時間的コスト、等のような多数の問題の原因となりうることがよくある。
上記のカレントコード分析ツールの欠陥および欠点を、本発明の例示的な実施形態を通して克服する。例えば、本明細書で説明する実施形態は、コードが開発される分析コンテクストを動的に追跡し、カレントコンテクスト条件に対応するルール(またはその一部)を適用することで、一連の所定ルールの実行を自動的に管理して性能の検討事項のバランスを取るコード分析ツールを提供する。本要約は、選択した概念を簡潔な形で導入するために与えることに留意されたい。これらの概念は以下の“発明を実施するための最良の形態”でさらに説明する。本要約はクレーム主題の主要な特徴または本質的な特徴を特定するようには意図しておらず、クレーム主題の範囲を決定する支援として使用するようにも意図していない。
1つの例示的な実施形態は、ターゲットコードを受信するコード分析ツールで構成したコンピューティングシステムを提供する。そのターゲットコードを、一連の所定ルールに基づいて正確性、完全性、および/または品質に関して分析する。コード分析コンテクスト情報も開発装置(複数)から受信して、ターゲットコードがカレントコード分析コンテクストのために開発されているところの該カレントコード分析コンテクストを動的に追跡する。さらに、その一連の所定ルールから選択したルールに対応するコンテクストパラメータを受信する。コンテクストパラメータは、ルールの少なくとも一部に対する実行条件をコード分析コンテクスト情報の観点で記述することに留意されたい。その後、カレントコード分析コンテクストを考慮してルールコンテクストパラメータを評価し、分析中のターゲットコードに対してルールの少なくとも一部を実行できるかどうかを動的に決定し、従ってそのルールの少なくとも一部を開発プロセスにおける適切なフェーズで適用する。
他の例示的な実施形態は、動的コンテクスト追跡モジュールを含むコード分析ツールを提供する。動的コンテクスト追跡ツールはコード分析コンテクスト情報を開発装置(複数)から受信する。そのコード分析コンテクスト情報をターゲットコードの開発対象であるカレントコード分析コンテクストの決定において使用する。コード分析ツールはルール管理モジュールも備える。そのルール管理モジュールはカレントコード分析コンテクストおよびコンテクストパラメータを評価する。そのコンテクストパラメータは、ルールの少なくとも一部に対する実行条件をコード分析コンテクスト情報の観点で示す。その評価に基づいて、ルール管理モジュールは、正確性、完全性、および/または品質に関して分析されるターゲットコードに対してルールの少なくとも一部を実行できることを動的に決定する。加えて、コード分析ツールは実行モジュールを含む。その実行モジュールは、ルールの少なくとも一部が開発プロセスにおける適切なフェーズで適用されるように、そのルールの少なくとも一部を分析中のターゲットコードに対して実行する。
本発明の追加の特徴および利点は以下の記述において説明され、その記述から部分的に明らかとなり、または本発明の実践により習得することができる。本発明の特徴および利点を、添付請求項で特に指摘した手段および組合せを用いて実現および取得することができる。本発明のこれらおよび他の特徴は、以下の記述および添付請求項からより十分に明らかとなり、または以降説明する本発明の実践により習得することができる。
本発明の上述および他の利点および特徴を取得できる方法を説明するため、簡潔に上述した本発明のより詳細な説明を、付属図面で示したその特定の実施形態を参照して与える。これらの図面は本発明の一般的な実施形態を示すに過ぎず従ってその範囲の限定として考えるべきでないことを理解し、付属図面の使用を通して本発明をさらなる特定性および詳細をもって記述および説明する。
本発明は、コードがカレントコンテクストの下で開発されているところの該カレントコンテクストに基づいて、コード分析ツールにおけるルールの実行を動的に管理する方法、システム、およびコンピュータプログラム製品に及ぶ。本発明の実施形態は、以下でさらに詳細に議論するように、様々なコンピュータハードウェアまたはモジュールを含む特殊目的または汎用目的コンピュータを備えることができる。
本明細書で提供する実施形態は、ターゲットコードの分析チェックに関連する中間数(intermediate number)の分析コンテクストを形式化する。従って実施形態は、ターゲットコードが開発されている該カレント分析コンテクストを動的に特定し、次いでルール(単数または複数)を適用可能なコンテクストの知識に基づいてルール(単数または複数)(またはその一部)を実行することができる。上記の中間分析コンテクストはターゲットコードの開発フェーズ、ターゲットコードの種類または状態、ターゲットコードを操作するソース、ターゲットコードの目的、または他の開発もしくは実行時の要件を含むことができるがこれらに限らない。上記の中間分析コンテクストは、コードのリテラル開発(literal development of code)以外にソフトウェア開発プロセスの他のフェーズに関することに留意されたい。上記の他のフェーズは例えば、ジェスチャの構築およびパッケージ化、デプロイメントテスト、およびリテラル(literal)に実行するときの実行時コード分析、例えば、様々なマシンおよびネットワーク構成で実行するときの実行時コード分析を含むことができる。勿論、コード分析コンテクストの定義または形式化に関して多数の重複および他の関係がある。従って、本明細書で定義した用語“コード分析コンテクスト”は、上述および後の実施形態でより詳細に定義する任意数の分析コンテクスト、分析コンテクストの任意の組合せ、および/または分析コンテクストの任意の階層的関係を含むように広く解釈されるべきである。
カレントコンテクスト条件の知識をシステムにより様々な方法で獲得できることに留意されたい。例えば、上記のコンテクスト情報を統合開発環境(IDE)と結びつけて取得することができる。IDEは一般にプロジェクトタイプおよびソース言語を通信し、コンパイラ設定および/またはビルドフレーバー、等の知識を有することができる。代替として、または関連して、上記のコンテクスト情報をソースベースのインスペクションおよびコンパイラ提供のメタデータにより、および/またはそのコードに対するバイナリをホストしているマシンのインスペクションにより、取得することができる。加えて、コード分析情報を提供する他のコンテクストソースは、マシンをホストする大規模ネットワークシステムのインスペクションのようなものを含むことができる。
カレントコード分析コンテクストの条件がどのように決定されるかに関わらず、上記条件に関連するルールセットを決定するために、分析ルール(または他のデータオブジェクト)は、ルール(またはその一部)を実行可能なこれらのコンテクスト条件(および好適なルールまたはデフォルトコンテクストのような他の情報)を(例えば、メタデータを通して)記述することができる。ルールの実行または提供した(例えば、メタデータ内の)他の情報に対する上記のコンテクストに関する決定をルール開発者により行うことができるが、他の実施形態は上記のコンテクスト条件を修正、ノイズフィルタリング、および/または無効化(override)することができる。例えば、幾つかの実施形態では、ルールを適用可能なコンテクストを、IDE内部の明示的なジェスチャにより、および/または分析実行に関連付けた制御ファイルの修正により、修正または無効化することができる。従って、開発者がコード分析オプションを構成するとき、開発者はそれぞれのルールに関連付けた一連のコンテクストを無効化するオプションを有することができる。本情報を次いで、ユーザが設定した他のコード分析オプションを含むプロジェクトファイルに記憶することができる。
それにも関わらず、無効化されていないルールに対して、様々な開発段階の最中に、カレントコンテクストを動的に決定し、提供される情報またはメタデータに基づいて上記のコンテクスト条件に適用するよう構成したルールを実行する。分かるように、これにより様々な開発段階の最中の動的なコード分析が可能となり、その結果、潜在的な問題をコード開発者に対して開発プロセスにおいてできるだけ早期に通知することができる。加えて、一般にルールに関してより具体的な知識を有するテスト開発者は、ルールを適用すべきコンテクストを検討および設定することができる。さらに条件が変化または発展すると(例えば、ターゲットコードが開発される形式化コンテクスト条件における変化)、様々なメタデータも修正および現状維持することができ、従ってルールを拡張可能とすることができる。
有利な特徴に対するより具体的な参照を図面に関連して以下でさらに詳細に説明するが、本発明の範囲内の実施形態は、自身に記憶したコンピュータ実行可能命令またはデータ構造を保持または有するコンピュータ読取可能媒体も含む。上記のコンピュータ読取可能媒体は、汎用目的または特殊目的のコンピュータによりアクセス可能な任意の利用可能な媒体であり得る。限定ではなく例として、上記のコンピュータ読取可能媒体はRAM、ROM、EEPROM、CD−ROMもしくは他の光ディスク記憶、磁気ディスク記憶もしくは他の磁気記憶装置、または所望のプログラムコード手段をコンピュータ実行可能命令もしくはデータ構造の形で保持もしくは記憶するために使用可能で、かつ汎用目的もしくは特殊目的のコンピュータによりアクセス可能な任意の他の媒体を備えることができる。情報をネットワークまたはコンピュータに対する別の通信接続(ハードワイヤード、ワイヤレス、またはハードワイヤードもしくはワイヤレスの組合せのいずれか)上で転送または提供するとき、コンピュータはその接続を正しくコンピュータ読取可能媒体と見なす。従って、任意の上記接続を正しくはコンピュータ読取可能媒体と称する。上記の組合せもコンピュータ読取可能媒体の範囲内に含めるべきである。
コンピュータ実行可能命令は例えば、汎用目的コンピュータ、特殊目的コンピュータ、または特殊目的処理装置に或る特定の機能または機能群を実施させる命令およびデータを備える。主題を構造的特徴および/または方法論的動作に固有な言語で説明したが、添付請求項で定義した主題は必ずしも上述の特定の特徴または動作に限定されないことは理解されるべきである。寧ろ、上述の特定の特徴および動作は請求項を実装する例示的な形態として開示してある。
本明細書で使用するとき、用語“モジュール”または“コンポーネント”は、コンピューティングシステム上で実行されるソフトウェアオブジェクトまたはルーチンを指すことができる。本明細書で説明する異なるコンポーネント、モジュール、エンジン、およびサービスを、そのコンピューティングシステム上で実行されるオブジェクトまたはプロセスとして(例えば、別のスレッドとして)実装することができる。本明細書で説明するシステムおよび方法をソフトウェアで好適に実装するが、ハードウェアまたはソフトウェアおよびハードウェアの組合せでの実装も可能であり考慮されている。本説明では、“コンピュータエンティティ”は本明細書で前に定義した任意のコンピューティングシステム、またはコンピューティングシステム上で実行されている任意のモジュールもしくはモジュールの組合せであってよい。
本明細書で説明した実施形態は、無数の要因を考慮してルールの実行を動的に管理し、性能の検討事項のバランスを取るコード分析ツールを提供する。例えば、本明細書の実施形態では、幾つかのルールにより生成したメッセージを、コードのビルドの最中または後に検出したときに直すのはコストがよりかかると考える。従って、開発者はこれらの警告ができるだけ早期に、一般にはコードの編集中に通知されることを望むかもしれない。さらに、チェックインのような様々な開発段階に対してコードの準備ができているとき、または開発のマイルストーンが完了したとき、幾つかのルールにより生成したメッセージを処理することが最も興味深い。例として、未使用のコードを検出する分析をマイルストーンが未完了の間に実施することはあまり意味がない。なぜならば、そのコードを後の開発プロセスで使用する可能性があるからである。さらに、前述のように、幾つかのルールの実行は極度にコストがかかる。従って、開発者は全てのインクリメンタルビルドまたは完了リビルドに対する上記の分析コストの負担を望まない可能性がある。
考慮すべき他の要因は、その機能性に依存して、分析を完了するために多少のバイナリメタデータを要求するルールから成る。幾つかのルールは、ソースコード内でのみ利用可能である情報を要求することができ、従ってファイルを実際に生成したときにそのルールをコンパイルすることができる。しかしながら、他のルールはディスクに書き込まれる、または書き込まれるであろうリテラルオブジェクトコードを要求する。さらに他の実施形態は、幾つかのルールはバイナリが真のリリース状態にあることを要求するという考察から成る。そのバイナリは、クライアントボックス上の開発者が生成したビルドとは異なる。例えば、開発者は一般に、特定の企業の実際のセキュリティキーにより署名した完全署名のバイナリを生成しない。
考慮可能なさらに他の要因では、幾つかのルールはクライアント開発システムから大幅に異なるマシン構成(複数)に依存することを考慮する。例えば、幾つかのウェブアプリケーション分析は、実際にウェブサーバに展開したコードに対して実行する場合にのみ関連することができる。加えて、幾つかのルールではバイナリの実行コンテクストに関する特別な知識が要求される。例えば、決してローカライズされず、または英語以外のシステム上で実行されないコードを、一般にグローバリゼーション/ローカライゼーション問題に対して検査する必要はない。さらに、幾つかのルールは特別なコンテクストで実行されて、大規模ネットワークシステムに関連する問題を検証しなければならないことを考える。例として、インターネットに展開したウェブアプリケーション(複数)に対するセキュリティチェックをファイアウォールのイントラネット外部で実行する必要があるかもしれない。
さらに本明細書で検討することは、幾つかのルールの振る舞いは、コードの寿命に関連する状況に従って変化するという事実である。例として、外部の顧客に以前にリリースしたバイナリは、高レベルの後方互換性を維持する必要があるかもしれない。従って、解決にブレイキングチェンジ(breaking change)を要求する違反を引き起こすルールを引き起こすべきでない。さらに、幾つかのルールの振る舞いを、実行の振る舞いに関する実行時の予想に従って変更する。例として、幾つかの性能チェックは、頻繁に呼ばれる性能に敏感なコードに関連するのみであるかもしれない。極稀に呼ばれるコード、または特定した問題の解決という利点を打ち消す実行コストを必然的に伴うコードに対して、これらのルールを実行することは望ましくない可能性がある。上に関連して、分析は、修正が分析ターゲットコード内で可能であるか可能でないかに従って、他の状況では変化すべきである。例として、分析をコンパイラが発行したコードパターンに対して行うことができ、ユーザコードの変更によりそれに影響を及ぼすことはできない。しかしながら、コンパイラチームはこれらの問題を特定し、分析ターゲットを生成したコンパイラ内で変更を加えたいかもしれない。
さらに幾つかの実施形態においては、幾つかのルールの振る舞いは、ターゲットバイナリコードの意図した再利用(または非再利用)に従って変化することを考慮している。例えば、任意のサードパーティの開発者により消費されうるコードは、一貫性および有用性を出すために或る特定の標準に従う必要があるかもしれない。これらの標準は、異なるコーディング標準を強制するチームの全く内部的なプロジェクトに対しては無視される恐れがある。加えて、ルールの振る舞いはプロジェクトのリソースを考慮して変化するかもしれない。例えば、制約されたリソースまたは厳しい納期を有するプロジェクトに対して分析は、深刻な訂正の影響を有する高い確度の結果に制限する必要があるかもしれない。
勿論、開発プロセスにおける様々なコンテクストに基づいてルール(複数)の実行を管理するための、本明細書で説明した例示的な実施形態に従って考慮可能な無数の要因および検討事項がある。実際、以下でさらに詳細に説明するように、コードが開発される分析コンテクストは連続的に変換するので、本明細書で説明した実施形態は、様々なルールの管理および実行方法の拡張性を可能とする。従ってルール(またはその一部)を実行すべきコンテクストを決定するための本明細書で説明した検討事項は例示の目的にのみ使用し、明示的に主張しない限り本発明の範囲を限定または制限するようには意図されない。
いずれにせよ、上の検討事項の一部を考慮して、図1に上記のコードが開発されているカレントコード分析コンテクストに基づいてルールの実行を管理するコード分析ツール100を示す。図1に示すように、ターゲットコード120を、1つまたは複数の無数の開発装置105の間で開発用に配布することができる。それらの開発装置は、IDE110および、他のコンテクストソース115として列挙したもののようなコンテクストを提供可能な他の装置を含む。例えば、ターゲットコードはIDE110内のソースコードの形態であることができ、またはマシンもしくはシステム内部で実行されるバイナリコードであることができる。勿論、他の形態のターゲットコード120も本明細書では考慮している。例えば、以下でさらに詳細に説明するように、ターゲットコード120は設計フェーズにあることができ、ソースコードの抽象概念である。従って、本明細書で説明した任意の特定種類のターゲットコード120は適切な開発状態または実行時状態に依存するであろう。
開発状態または実行時状態に関わらず、本明細書の実施形態は動的コンテクスト追跡モジュール130を提供する。動的コンテクスト追跡モジュール130は、本明細書で説明するようにコード分析情報125を様々な開発装置105から取得することができる。以下でさらに詳細に説明するように、コード分析情報125は、ターゲットコード120が現在分析および/または開発されているコンテクストに関する情報を含む。コード分析情報125、および従って分析コンテクスト情報を、コード分析ツール100または動的コンテクスト追跡モジュール130により様々な方法で獲得できることに留意されたい。例えば、動的コンテクスト追跡モジュール130をIDE110に接続することができる。IDE110はプロジェクトタイプおよびソース言語を通信し、コンパイラ設定およびビルドフレーバー、等の知識を有することができる。
コード分析125内のコンテクスト情報を、ソースベースおよびコンパイラ提供のメタデータのような他のコンテクストソース115のインスペクションにより、バイナリもしくはターゲットコード120をホストしているマシンのインスペクションにより、および/またはマシンをホストする大規模ネットワークシステムのインスペクションにより、取得することもできる。勿論、理解できるように、動的コンテクスト追跡モジュール130により取得可能な多数のコンテクストソース115がある。実際、コード分析ツール100(例えば、ルール実行モジュール140)内部のモジュールおよび/またはルール自身はコード分析情報125を提供することができる。従って、本明細書で説明するようにコード分析情報125を提供する任意の特定の装置、コンポーネント、モジュール、データオブジェクト、等は例示の目的に過ぎず、明示的に主張しない限り本明細書の実施形態を限定または制限するようには意図されない。
コード分析情報125を、要求−応答、プッシュ−プル、パブリッシュ−サブスクライブシステム、等のような任意の多数の公知なメカニズムを通して動的に取得できることにも留意されたい。例えば、1つの実施形態によりコード分析情報125を、イベント通知システムを使用して取得することができる。例えば、ターゲットコード120の開発に影響を及ぼすコンテクストの変化または他のイベントが発生すると、(一般にコード分析情報125の形である)通知を、動的コンテクスト追跡モジュール130により送信または受信することができる。勿論、コード分析情報125を取得する多数の方法がある。従って、コード分析情報125の取得方法に対する任意の特定の参照は本明細書では例示の目的にのみ使用し、明示的に主張しない限り本明細書の実施形態を限定または制限するようには意図されない。
いずれにせよ、前述のように、動的コンテクスト追跡モジュール130はチェックに関連する多数の分析コンテクストを形式化する。従って、コード分析情報125の取得場所または取得方法に関わらず、本情報135を次いで使用して、動的コンテクスト追跡モジュール130内部で定義(または動的コンテクスト追跡モジュール130により取得した)これらのコンテクストに基づいてカレントコード分析コンテクスト135を決定することができる。カレントコード分析コンテクスト135を、前述のような多数の検討事項の観点から定義できることに留意されたい。例えば、上記の分析コンテクストをターゲットコード120の開発フェーズ、ターゲットコード120の状態、ターゲットコード120を操作するソースの種類、ターゲットコード120の目的、ならびに/または他の開発もしくは実行時の要件および検討事項の観点から定義することができる。
上で定義した分析コンテクストは、様々な階層的項目で表現可能または表現不可能な多数の特性または条件(例えば、分析をコードの書込みからどのように除外したか)を含むことができることに留意されたい。例えば、開発のフェーズの観点で定義したコード分析コンテクストは設計、ビルド、デプロイメント、または他のフェーズもしくはプロパティから成る段階を含むことができる。さらに、分析コンテクストを以前のフェーズ、および分析を行っているカレントフェーズの観点から定義することができる。さらに、開発のそれぞれのフェーズをさらに他のサブフェーズを通して定義することができる。例えば、ビルド段階は編集フェーズ、インクリメンタルビルドに対するコンパイルフェーズのサブ段階、チェックイン前のサブフェーズを含むことができる。別の例として、分析コンテクストを、ソースコード、オブジェクトコード、バイナリコード、または抽象コード状態、のような自身の状態または型の観点で定義することができる。その分析コンテクストは一般に、コード自体を完全には記述しない。
分析コンテクスト(複数)(例えば、場合によりカレントコード分析コンテクスト135)を互いの間の階層的関係の観点からさらに定義できることにも留意されたい。例えば、或るコード分析コンテクストを、別の分析コンテクストが無事に(または失敗して)完了したことの観点から定義することができる。さらに、顧客にリリースされるものに正確に対応するかまたは対応しない可能性があるバイナリに対するビルド環境の観点から定義したコンテクストの場合のように、分析コンテクスト間の重複プロパティが存在する可能性がある。勿論、コード分析コンテクストの定義または形式化に対して多数の関係がある。従って、前述のように、用語“コード分析コンテクスト”(例えば、カレントコード分析コンテクスト135)は、本明細書で定義したように任意数の分析コンテクスト、分析コンテクストの任意の組合せ、および/または分析コンテクストの任意の階層的関係を含むように広く解釈すべきである。
定義した形式化コード分析コンテクスト(複数)に関係なく、このコンテクストリストをコード分析情報125ともに使用してカレントコード分析コンテクスト135を決定する。従って、ルール管理モジュール155はカレントコード分析コンテクスト135を使用して、分析ルール記憶170内のルール175の実行を動的に管理することができる。より詳細には、カレントコード分析コンテクスト135に関する実行に対して設定したルール175をルール管理モジュール155が動的に決定するために、それぞれの分析ルール175(または他のデータオブジェクト)は(例えば、メタデータを通して)、ルールを実行可能なコンテクストパラメータ180を記述する。一般に、上記のコンテクストパラメータ180をルール開発者により定義するが、実施形態ではルール構成モジュール165を使用してコンテクストパラメータ180の修正および/または追加を可能とすることも考慮している。より詳細に説明するように、ルールを他の様々なメカニズムを通して無効化することもできる。
いずれにせよ、コンテクストパラメータ180は、ルール175を適用可能または適用不可能なコンテクストのような情報を含むことができ、および/または、例えばサポートされるもの、好適なもの、任意なもの、必要なもの、または任意の他の公知な優先順位付けとして優先される、コンテクストのリストを有することができる。より具体的な例として、名前付けおよび場合分けルールを、全ての分析フェーズをサポートするとして印付けすることができる(すなわち、名前付けルールは任意の開発フェーズでの実行に適切である可能性がある)。しかしながら、実行に好適なフェーズはバックグラウンド期間である可能性がある。従って、これらのチェックを開発者がソースを編集している間に実行すべきであるが、他のフェーズで実行することもできる。
さらに、コンテクストパラメータ180は、分析の完了に対する実行時の期間、入力に必要な情報、または結果の出力、等のような振る舞いの観点からルールを定義するメタデータを含むことができる。従って、上記の追加の情報をルール管理モジュール155(および/またはカレントコード分析コンテクスト135を決定するための動的コンテクスト追跡モジュール130)により使用して、実行に必要な適切なルール150を決定することができる。勿論、コード分析コンテクスト(複数)に関して上述したものと同様に、コンテクストパラメータ180を重複プロパティ、階層的関係、等の観点から定義することができる。例えば、1つの実施形態では、ルールの分析を、カレント指定フェーズと等価またはカレント指定フェーズからさらに除外した任意のフェーズで行うことができる。例えば、バックグラウンドコンパイル中に実行するよう構成したルールを、ビルド、チェックイン、またはマイルストーンフェーズの最中に実行することもできる。
一般にルールに関してより具体的な知識を有するテスト開発者は一般に、ルールを適用すべきコンテクストパラメータ180を考慮および設定することができる。上記の検討事項は以下のもの(必ずしも特定の順序ではない)を含むことができるがこれらに限らない。第1に、本ルールにより生成したメッセージが意味を成す開発フェーズは何か?第2に、どのくらい迅速に制御をユーザに戻すべきか?例えば、コードの編集中に行う分析は一般に編集者が認識する性能に影響を及ぼすべきではない。第3に、チェックを完了するのに必要なメタデータの量はどれくらいか?例えば、オブジェクト設計図に対して行う分析は、型がサードパーティの開発者に公的に可視であるか否かに関する情報を提供できないかもしれない。第4に、問題に対する適当な修正はブレイキングチェンジを構成するか?すなわち、問題の修正は消費者に以前の版の修正API(application program interface)を破棄させるか?そうならば、本情報を開発プロセスにおいてできるだけ早く開発者に与える必要があるかもしれない。または、以前に出荷したコードに対するブレイキングチェンジが特定される場合、(高レベルの後方互換性を維持するよう分析を構成したことを仮定して)一般的な解決方法はその問題を開発者に全く明らかにしないことであろう。換言すれば、問題が出荷されており従って修正することが(以前の版の消費者に対して障害の原因となりうるので)もはや安全でない場合、その結果をフィルタすることが必要または望ましいかもしれない。第5に、問題を解決するためのコストはどれくらいか?どの程度コードが変更されるか?分析にかかる時間はどれくらいか?変更がレグレッションを導入する可能性はどれくらいか?問題に関連するソースコードが修正に対して利用可能か?第6に、どの特別なバイナリ、オペレーティングシステム(OS)、マシン、および/またはネットワークの検討事項がルールの振る舞いに影響するか?および/またはチェックを実行すべきかどうか?第7に、どの特別なプロジェクトの検討事項が、行う分析および/またはユーザに戻すべき結果に影響するか?
加えて、前述のように、本明細書の実施形態は、コンテクストパラメータ180が修正可能または構成可能であることを規定する。従って、ルール構成モジュール165を(ルールおよび/またはコード開発者のいずれかにより)使用して、ルールが実行可能な分析コンテクスト(複数)を拡張または制限することができる。代替として、または追加として、ルールを実行可能なコンテクストを構成設定/制御ファイル160を通して無効化することができる。例えば、ルールを、IDE110内部の明示的なジェスチャのようなものを通して、または分析の実行に関連付けた制御ファイルを修正することで、無効化することができる。従って1つの実施形態により開発者は構成コード分析オプションにアクセスすることができる。構成コード分析オプションにより開発者はそれぞれのルールに関連付けた一連のコンテクストを無効化することができる。本情報および他の情報を、ユーザが設定した他のコード分析オプションを含むプロジェクトファイルに記憶することができる。
ルール/コンテクストの構成に関連して、本明細書の実施形態は幾つかの構成ジェスチャがチェックに固有でありうることも考慮し、従って本明細書で提供するものは大規模な分析コンテクストに連結可能な構成オプションである。例えば、本明細書の実施形態により、ルールを何らかの方法(例えば、0−100%の範囲であり、ユーザに提供したノブまたは他の絞り制御メカニズムにより調整可能なノイズフィルタ設定)で絞ることができ、レビュー向けの出力を制限し、高い確度のオプションに対する出力を制限し、および/または分析にかかる時間を制限する。本ルール構成オプションはシステム内にシームレスに存在すべきであり、ルール固有の構成と大規模システムにより定義したコンテクストとの間に密接な関係がありうることに留意されたい(例えば、バックグラウンド分析を実行するときは、ノイズレベルを50%の確度またはそれ以上に制限する)。
他の実施形態は、分析コンテクスト構成可能性をプロジェクト内の人員の役割にマップすることも提供する。より詳細には、ソフトウェア開発プロジェクトに従事する個人は一般に(1)分析コンテクストを示唆する特定の時点でコードに寄与する、自身にとって多少堅実な結果を生成する様々な専門知識を有する、(3)リソースの割り当て場所(および恐らく割り当てるリソース量)に関して決定する権限を多少有する。例えば、開発者は自身が担当するコードに対して、ここでの変更に固有な結果を理解するべきである。他方、プロジェクトマネージャは、特定の分析専用の開発者/テストサイクルを制限するために結果を元に戻すことができる。これを、バイナリ/製品の完全性(例えば、全てのバイナリが存在するか?ウイルスはないか?破損していないか?等)に関する問題の特定および修正を担当するが、技術的な能力がなく正確性の問題を修正する能力もないビルドマネージャと対比されたい。従って、本明細書の実施形態により、本明細書で説明した分析コンテクスト構成をチーム、およびコード開発および実行時プロセスに関与する他の者の様々な役割に自動的にマップすることができる。
ルールおよび/または分析コンテクストの構成方法に関わらず、カレントコード分析コンテクスト135とそれぞれのルール175内部で定義したコンテクストパラメータとの間の分析に基づいて、および/または構成設定/制御ファイル160に基づいて、ルール管理モジュール155は次いで一連のルール150を選択して実行することができる。従って、ルール実行モジュール140は一連のルール150をターゲットコード120に対して適用して、結果145を生成することができる。理解できるように、上記の結果145は、分析コンテクスト、適用しているルール、および他の要因のようなものに依存して大幅に変化するであろう。例えば、ソースコードを編集しているユーザに結果145を名称変換分析(naming conversion analysis)のようなものに対するインテリセンスの走り書き(IntelliSense squigglies)として即座に報告することができ、一方で何らかのストレステストのように、他のルール150はユーザに対してフィードバックを全く生成しなくともよい。他の結果140をさらなる分析のためファイルに記録することができ、および/または何らかの他のデータフォーマットで生成することができる。勿論、本明細書で説明した実施形態に適用可能な多数の結果145が存在し、説明した任意のコンテクスト下で生成した任意の特定の結果は例示の目的のために過ぎず、本明細書の実施形態の範囲を限定または制限するようには意図していない。
以下で、ターゲットコードの開発フェーズ、ターゲットコードの種類または状態、ターゲットコードを操作するソース、ターゲットコードの目的、または他の開発要件もしくは実行時要件の観点から定義した中間分析コンテクストの幾つかの例を提供する。上述のように、および以下の説明にあるように、これらの中間分析コンテクストを任意の組み合わせ、重複プロパティ、および/または階層的関係の観点からさらに定義することができる。さらに、前述のように、コンテクストパラメータ180、定義した分析コンテクスト(例えば、カレントコード分析コンテクスト135、構成設定/制御ファイル160、およびルール自身、は拡張可能であり、従って分析コンテクストおよび/または説明したルールの以下のリスト(および本明細書で説明した他のコンテクストまたは分析)は包括的であるとは意図していない。
例えば、ルール175を、IDE110内の編集段階の最中に行うバックグラウンド分析の観点から記述して、例えば開発者にソースコードの変更を通知することができる。他の分析を、コンテクストパラメータ180により定義したそれぞれのインクリメンタルビルドまたは完全なビルドのコンテクストで行うことができる。例えば、コンパイル中に、バックグラウンドおよびコンパイルフェーズに対して定義したルールを実行することができる。上記のチェックは名前付けおよび場合分けに関連することができ、一般に極度に性能が良く、ならびに/または通常は即座に対処すべき重大な問題を警告する高付加価値な正確性チェックを表す。
コンテクストパラメータ180および/またはカレントコード分析コンテクスト135を、チェックインフェーズ前に行う分析の観点から定義することができる。例えば、チェックイン前に、バックグラウンド、コンパイル、およびチェックインフェーズのルールを纏める分析を行うことができる。従って、チェックインフェーズを特に対象としたルール175は一般に、公式なソースベースに対して一般にチェックすべきでない問題をフラグし、実行および/または警告する上で時間がかかる高付加価値のルール175である。
他の分析コンテクストをマイルストーンフェーズの観点から実行中として定義または警告することができる。その分析コンテクストは一般に明示的なユーザジェスチャにより実行する。従って、マイルストーンフェーズを特に対象としたルールは実行のコストが極度にかかるものである恐れがあり、高レベルのレビューを必要とし(すなわち、他のチェックよりも誤検出の確率が高い)、および/またはスケジュールへの配慮のため、もしくはその作業がバッチとして容易に達成できるので遅延作業項目となる。
勿論、前述のように、コード分析100に対する環境が変化すると、ルール175が実行される分析コンテクストも変化する可能性がある。例えば、処理速度が増すと、マイルストーンフェーズでのみ以前に実行したルールを以前のフェーズの一部で実行できると決定することができる。しかしながら、分析コンテクストを変更または分析コンテクストに影響しうるものは多数あり、そのためルール構成モジュール165を使用してコンテクストパラメータ180(およびカレントコード分析コンテクスト135を生成するために使用する分析コンテクストの形式化)を修正して、必要に応じてシステムを更新および調整できることに留意されたい。
他の分析コンテクストは、顧客にリリースされるものに正確に対応可能または対応不可能なバイナリに対して、ビルド環境内で行う分析を含むことができる。顧客の実行環境に必ずしも対応しない構成に展開したバイナリに対して行う分析も存在することができる。さらに、前述のように、一般には結果のコードを完全に記述しない(設計時分析のような)抽象概念に対して行う分析が存在してよい。他の分析コンテクストを、ディスクに格納したソースまたはオブジェクトコードにより定義することができる。他の分析コンテクスト(複数)はカレントビルドを最適化でビルドしたかどうかといったコンパイル設定を考慮し、またはそのコンパイル設定から成る。バイナリに対して行う他の分析は、英語以外のシステム上で実行されるもの、またはウェブアプリケーションの一部として展開されるもののような、特定のコード目的または実行時目的を考慮することができる。従って、例えばローカライズされないコードまたは英語以外のシステム上で実行されるコードはグローバリゼーション/ローカライゼーション仕様の問題に対して実行するルールを分析または有する必要はないかもしれない。別の分析コンテクストまたはコンテクストパラメータ185を、イントラネットサーバまたはファイアウォールの反対側のような特化した環境に展開されるかまたはされないバイナリに対して行う分析の観点で、定義することができる。上記ルールを一般に特別なコンテクストで実行して、大規模なネットワークシステムに関連する問題を検証する。
さらに、他のコンテクスト分析を、以前に出荷したかまたはしていない可能性があるコード、またはサードパーティにより提供されたかまたはされない可能性があるコードに対して行うことができる。例えば、コンテクストがサードパーティから来たと考えられる場合、コンテクストパラメータ180により定義されるようにウイルスチェックまたはルールを実行する必要があるかもしれない。さらに他の分析を、外部または内部の顧客により消費されるかもしくは消費されない可能性があるコード、またはプライベートチームもしくは他の実行環境に使用が制限されるコードに対して行うことができる。分析コンテクストを、性能またはセキュリティのような実行時特性に対する厳格な要件を有するかまたは有さない可能性があるターゲットの分析によりさらに定義することができる。コンポーネントは、部分的に信頼される環境を実行するものをセキュリティ関連度が低い分析者がコーディングするまで、(任意のディスク位置に書き込む能力のような)高度なセキュリティ権限を要求することができる。さらに、他の分析コンテクストは、政府承認の暗号化サービスのみが有効であるという要件のような、特定のオペレーティングシステム構成を有するシステム上に展開されるターゲットに対する分析を含む。他の分析コンテクストを、メンテナンスモードであるかもしくはそうでないターゲット、または厳しい要員配置もしくは納期への配慮の制約があるチームで開発されるターゲットに対して定義することができる。
分析は様々なコンストラクト(すなわち、ターゲットコード120)に対して行う可能性があることに留意されたい。そのコンストラクトは、ソースコード、バイナリコード、またはどちらにも関連付けられない(クラス図の分析、データベーステーブルの使用、データベーススキーマの妥当性検証、ストアドプロシージャの検証、名前付け/場合分け変換をデータベース固有の識別子へ適用すること、および/またはカレントプロジェクト設定に基づいて違反を引き起こすことのような)抽象概念から発生した情報に関する。さらに、カレントコンテクストの集計セットに関連するルールセットの構成は一般に動的に行う。従って、結果は一般にソフトウェア開発ライフサイクルにおける精確かつ適切な時点でユーザに返される。本明細書で述べたように、ソフトウェア開発ライフサイクルにおける正確な結果または精確かつ適切な時点は、コード/抽象概念の現在の状態、その現在のマシンまたは想定されるマシン、オペレーティングシステム、ネットワークおよび/または実行環境、セキュリティ、信頼性、後方互換性、および文字通りの性能を含む品質の態様に対する所与のプロジェクト要件、所与のプロジェクトライフサイクル、スケジュールおよび/またはリソース制約、所与の分析時間の制約、結果を受信して結果を理解し、結果に影響を及ぼす者の所与の能力、特定のチェックが与えた所与の任意の特別な構成、またはデフォルトの構成が、単なるユーザの意固地さを含む上述しなかった完全に任意の理由のため無効化されることによる所与の任意の特別な構成、といったものに依存して変化するであろう。加えて、分析コンテクスト(例えば、ルール175、コンテクストパラメータ180、等)は構成可能、拡張可能、プラグ可能、等であるので、本明細書で説明した実施形態は、分析に関連する中間数のコンテクストを記述するオープンエンドなシステムを定義する。
本発明を、機能的なステップおよび/または非機能的な動作を備える方法の観点から説明することもできる。以下は、本発明の実践において実施可能なステップおよび/または動作の説明である。通常、機能的なステップは本発明を実現結果の観点から説明し、一方で非機能的な動作は特定の結果を実現するためのより詳細な動作を説明する。機能的なステップおよび/または非機能的な動作を特定の順序で説明または主張するが、本発明は必ずしもステップおよび/または動作のどの特定の順序または組合せにも限定されない。さらに、ステップおよび/または動作の使用はクレームを記載したものであり、以下の図2のフロー図の説明において、上記項目の望ましい具体的な使用を示すように一般的に使用する。
前述のように、図2は本発明の様々な例示的な実施形態に対するフロー図を示す。以下の図2の説明はしばしば図1の対応する要素を参照する。本図の特定の要素を参照するかもしれないが、上記の参照は例示の目的に使用するに過ぎず、明示的に主張しない限り本明細書の実施形態を限定または制限するようには意図されない。
図2は、コードが開発される分析コンテクストを動的に追跡し、カレントコンテクスト条件に対応するこれらのルールの少なくとも一部を動的に適用することで、一連の所定ルールの実行を管理して性能の検討事項のバランスを取る方法200のフロー図を示す。方法200は、ルールをターゲットコード225に対して実行可能かどうかを動的に決定するステップを含む。より詳細には、225に対するステップは分析すべきターゲットコードの受信動作205を含む。例えば、コード分析ツール100、ルール管理モジュール155、ルール実行モジュール140、開発装置105、またはコンピューティングシステム内部の他のモジュールおよびコンポーネントは、正確性、完全性、および/または品質を所定ルール175に基づいて分析すべきターゲットコード120を受信することができる。
225に対するステップは、コード分析情報の受信動作210も含む。例えば、動的コンテクスト追跡モジュール130はコード分析情報125を様々な開発装置105から受信して、ターゲットコード120が開発されているカレントコード分析コンテクスト135を動的に追跡することができる。カレントコード分析コンテクスト135を、ターゲットコードの開発フェーズ、ターゲットコードの種類もしくは状態、ターゲットコード120を操作するソース、ターゲットコード120の目的、または1つもしくは複数の開発要件しくは実行時要件の観点から定義できることに留意されたい。
ターゲットコードの開発フェーズを定義する場合、上記のフェーズは設計、ビルド、デプロイメント、またはその他から成る段階を含むことができる。また、ビルド段階は編集フェーズ、インクリメンタルビルドに対するコンパイルフェーズ、またはチェックインフェーズの前のようなものを含むことができることに留意されたい。従って、上記段階に対して定義されるルールは、ディスクにまだコンパイルしていないターゲットコード120に対して行うバックグラウンド分析であることができる。さらに、ビルド段階はマイルストーンフェーズを含むことができることに留意されたい。分析期間、要求された入力、要求された出力、誤検出の多発もしくは頻発、スケジュールへの配慮のうち1つもしくは複数の観点から実行に必要なコストのため、または実行を他のルールを伴うバッチの一部として最も容易に実現できるため、マイルストーンフェーズはルールの少なくとも一部を実行するための特定のユーザ入力を要求する。
また、カレントコード分析コンテクストをターゲットコードの種類または状態の観点から定義するとき、上記の種類または状態は、ソースコード、オブジェクトコード、バイナリコード、または抽象コード状態のようなものを含むことに留意されたい。抽象コード状態に対して、上記の状態は、ソースコードを完全には記述しないターゲットコードの設計時の分析であることができる。
225に対するステップはさらに、一連の所定ルールから選択したルールに対応するコンテクストパラメータの受信動作215を含む。例えば、ルール管理モジュール155は、カレントコード分析コンテクスト135と、ルールセット175から選択した1つまたは複数のルールに対応するコンテクストパラメータ180との両方を受信することができる。コンテクストパラメータは、少なくともコード分析コンテクスト情報の観点から、ルールの少なくとも一部に対する実行条件を(例えば、メタデータを通して)定義することに留意されたい。さらに、コンテクストパラメータ180は、分析の完了に対する実行時の期間、入力に対して必要な情報、および/または結果の出力のうち1つまたは複数の観点から、ルールの振る舞いに関するメタデータを含むことができる。適用すべきルールの部分(例えば、それに対する結果の量または種類)は、ルールの振る舞いに影響を及ぼすかまたはルールの振る舞いを変更する構成のような他の要因に基づくことができることに留意されたい。前述のように、上記の構成は、逐語的なルール実行、ノイズフィルタリング、または他の制御メカニズムに対して有意義である設定/制御情報に基づくことができる。
さらに、コンテクストパラメータ180はサポートされるコード分析コンテクストの実行条件を定義することに留意されたい。その実行条件は、好適なもの、任意なもの、必要なもの、等のうち1つまたは複数により優先順位付けする。それにも関わらず、実行条件を、構成設定および様々な開発装置105、コード分析ツール100に関連付けた制御ファイルのうち1つもしくは複数により、および/またはコンテクストパラメータ180を構成可能とすることにより、無効化することができる。加えて、コンテクストパラメータは、既存のコンテクスト条件を拡張可能であるように構成可能であることに留意されたい。
225に対するステップはさらに、カレントコード分析コンテクストを考慮したルールコンテクストパラメータの評価動作220を含む。例えば、ルール管理モジュール155はルールコンテクストパラメータ180とカレントコード分析コンテクスト135を評価して、ターゲット120に対する実行用の一部または完全なルール150を動的に決定することができる。上記の評価を行って、ルール150を開発プロセスにおける適切なフェーズで適用できることに留意されたい。また、カレントコード分析コンテクスト135を考慮したルール175のコンテクストパラメータ180の評価では、コードおよび分析コンテクスト間の階層的関係、一連の所定ルール175、または両方を考慮できることに留意されたい。
本発明を、その精神または本質的な特徴から逸脱せずに他の特定の形態で具現化することができる。説明した実施形態は、全ての点で例示的なものに過ぎず限定的ではないと考えるべきである。本発明の範囲は従って、前述の説明によってではなく添付請求項により示される。請求項と等価な意味および範囲にある全ての変更は、請求項の範囲内に含まれるべきである。
例示的な実施形態に従い、ターゲットコードが開発されるコンテクストに基づいてソフトウェアを動的にチェックするよう構成したコード分析ツールの図である。 例示的な実施形態に従い、コードが開発される分析コンテクストを動的に追跡することによりルール(単数または複数)の実行を管理する方法のフロー図である。

Claims (20)

  1. 一連の所定ルールを使用してソフトウェアをチェックするコード分析ツールを伴うコンピューティングシステムにおいて、前記の一連の所定ルールは典型的には構成設定を通して制御される一体的な動作で実行されるものであり、性能の検討事項のバランスを取るために、前記コードが分析コンテクストの下で開発される該分析コンテクストを動的に追跡しカレントコンテクスト条件に対応する前記ルールの少なくとも一部を動的に適用することによって、前記一連の所定ルールの実行を管理する方法であって、
    一連の所定ルールに基づいて正確性、完全性、または品質の1つまたは複数に関して分析されるべきターゲットコードを受信するステップと、
    コード分析コンテクスト情報を1つまたは複数の開発装置から受信し、前記ターゲットコードがカレントコード分析コンテクストのために開発されている該カレントコード分析コンテクストを動的に追跡するステップと、
    前記一連の所定ルールから選択されたルールに対応するコンテクストパラメータを受信するステップであって、前記コンテクストパラメータは前記選択されたルールの少なくとも一部に対する実行条件を前記コード分析コンテクスト情報の観点から記述するステップと、および
    前記選択されたルールの少なくとも一部を分析中の前記ターゲットコードに対して実行して前記選択されたルールの少なくとも一部を開発プロセスにおける適切なフェーズで適用できるかどうかを動的に決定するために、前記ルールコンテクストパラメータを前記カレントコード分析コンテクストの観点から評価するステップ
    を備える方法。
  2. 前記カレントコード分析コンテクストを、前記ターゲットコードの開発フェーズと、前記ターゲットコードの種類もしくは状態と、前記ターゲットコードを操作するソースと、前記ターゲットコードの目的と、または1つもしくは複数の開発要件もしくは実行時要件とのうち、1つもしくは複数の観点から定義したことを特徴とする請求項1に記載の方法。
  3. 前記ターゲットコードの開発フェーズは、設計、ビルド、またはデプロイメントのうち1つまたは複数の段階を含み、前記コードの種類または状態はソースコード、オブジェクトコード、バイナリコード、または抽象コード状態のうち1つまたは複数を含むことを特徴とする請求項2に記載の方法。
  4. 前記抽象状態とは、前記ターゲットコードを完全には記述しない前記ターゲットコードの設計時の分析であることを特徴とする請求項3に記載の方法。
  5. 前記ビルドフェーズは、ディスクにまだコンパイルされていない前記ターゲットコードに対して行ったバックグラウンド分析を含み、編集フェーズと、インクリメンタルビルドに対するコンパイルフェーズと、またはチェックインフェーズの前とのうち1つもしくは複数を含むことを特徴とする請求項3に記載の方法。
  6. 前記ビルドフェーズは、前記選択されたルールの少なくとも一部を実行するための特定のユーザ入力を要求するマイルストーンフェーズを含み、これは、分析期間、要求された入力、要求された出力、誤検出の多発、スケジュールへの配慮のうち1つまたは複数という点における実行に必要なコストのため、または実行が他のルールと一緒のバッチの一部として行うことにより最も容易に実現できるためであることを特徴とする請求項3に記載の方法。
  7. 前記コンテクストパラメータに対する前記実行条件はメタデータによって定義され、前記メタデータは、分析の完了に対する実行時の期間と、入力に対して必要な情報と、または結果の出力のうち1つまたは複数の観点から前記選択されたルールの振る舞いを定義することを特徴とする請求項1に記載の方法。
  8. 前記コンテクストパラメータはサポートされるコード分析コンテクストの実行条件を定義し、前記の実行条件は好適なもの、任意のもの、または必要なもののうち1つまたは複数によって優先順位付けされることを特徴とする請求項1に記載の方法。
  9. 前記1つまたは複数の開発装置における一つまたは複数の構成設定、前記コード分析ツールに関連付けられた制御ファイルをさらに評価すること、または前記コンテクストパラメータを構成可能とすることにより、前記評価が前記実行条件の無効化を可能とすることを特徴とする請求項8に記載の方法。
  10. 前記ルールコンテクストパラメータは、既存のコンテクスト条件を拡張可能なように構成可能であることを特徴とする請求項1に記載の方法。
  11. 前記カレントコード分析の観点からの前記ルールコンテクストパラメータの前記評価は、前記コード分析コンテクスト間の階層関係、前記一連の所定ルール、またはその両方を考慮することを特徴とする請求項1に記載の方法。
  12. 一連の所定ルールを使用してソフトウェアをチェックするコード分析ツールであって、前記の一連の所定ルールは典型的には構成設定を通して制御される一体的な動作で実行されるものであり、性能の検討事項のバランスを取るために、前記コードが分析コンテクストの下で開発される該分析コンテクストを動的に追跡しカレントコンテクスト条件に対応するこれらのルールの少なくとも一部を動的に適用することによって、前記一連の所定ルールの実行を管理するよう構成され、
    1つまたは複数の開発装置から、ターゲットコードがカレントコード分析コンテクストのために開発されている該カレントコード分析コンテクストの決定に使用するコード分析コンテクスト情報を受信する動的コンテクスト追跡モジュールと、
    前記カレントコード分析コンテクストと、ルールの少なくとも一部に対する実行条件を前記コード分析コンテクスト情報の観点から示すコンテクストパラメータとを評価するルール管理モジュールであって、前記評価に基づいて前記ルール管理モジュールは、正確性、完全性、または品質のうち1つまたは複数に関して分析されるべきターゲットコードに対して前記ルールの少なくとも一部を実行可能であることを動的に決定することを特徴とするルール管理モジュールと、および
    前記ルールの少なくとも一部が開発プロセスにおける適切な時点で適用されるように、前記ルールの少なくとも一部を分析中の前記ターゲットコードに対して実行する実行モジュール
    を備えることを特徴とするコード分析ツール。
  13. 一連の所定ルールを使用してソフトウェアをチェックするコード分析ツールを伴うコンピューティングシステムにおいて、前記の一連の所定ルールは典型的には構成設定を通して制御される一体的な動作で実行されるものであり、性能の検討事項のバランスを取るために、前記コードが開発されるところの分析コンテクストを動的に追跡しカレントコンテクスト条件に対応するこれらのルールの少なくとも一部を動的に適用することにより、前記一連の所定ルールの実行を管理する方法を実装するコンピュータプログラム製品であって、前記コンピュータプログラム製品は、前記コンピューティングシステムの1つまたは複数のプロセッサによる実行時に前記コンピューティングシステムに対し、
    一連の所定ルールに基づいて正確性、完全性、または品質の1つまたは複数に関して分析されるべきターゲットコードを受信するステップと、
    コード分析コンテクスト情報を1つまたは複数の開発装置から受信し、前記ターゲットコードがカレントコード分析コンテクストのために開発されている該カレントコード分析コンテクストを動的に追跡するステップと、
    前記一連の所定ルールから選択されたルールに対応するコンテクストパラメータを受信するステップであって、前記コンテクストパラメータは前記選択されたルールの少なくとも一部に対する実行条件を前記コード分析コンテクスト情報の観点から記述するステップと、および
    前記選択されたルールの少なくとも一部を分析中の前記ターゲットコードに対して実行して前記選択されたルールの少なくとも一部を開発プロセスにおける適切なフェーズで適用できるかどうかを動的に決定するために、前記ルールコンテクストパラメータを前記カレントコード分析コンテクストの観点から評価するステップと
    を実施させるコンピュータ実行可能命令を自身の上に記憶した1つまたは複数のコンピュータ読取可能媒体を備えたことを特徴とするコンピュータプログラム製品。
  14. 前記カレントコード分析コンテクストを、前記ターゲットコードの開発フェーズと、前記ターゲットコードの種類もしくは状態と、前記ターゲットコードを操作するソースと、前記ターゲットコードの目的と、または1つもしくは複数の開発要件もしくは実行時要件とのうち、1つもしくは複数の観点から定義したことを特徴とする請求項13に記載の方法。
  15. 前記ターゲットコードの開発フェーズは、設計、ビルド、またはデプロイメントのうち1つまたは複数の段階を含み、前記コードの種類または状態はソースコード、オブジェクトコード、バイナリコード、または抽象コード状態のうち1つまたは複数を含むことを特徴とする請求項14に記載の方法。
  16. 前記抽象状態とは、前記ターゲットコードを完全には記述しない前記ターゲットコードの設計時の分析であることを特徴とする請求項15に記載の方法。
  17. 前記ビルドフェーズは、ディスクにまだコンパイルされていない前記ターゲットコードに対して行ったバックグラウンド分析を含み、編集フェーズと、インクリメンタルビルドに対するコンパイルフェーズと、またはチェックインフェーズの前とのうち1つもしくは複数を含むことを特徴とする請求項15に記載の方法。
  18. 前記コンテクストパラメータはメタデータを使用して前記実行条件を記述し、前記メタデータは分析の完了に対する実行時の期間と、入力に対して必要な情報と、または結果の出力とのうち1つまたは複数の観点から前記選択されたルールの振る舞いも記述することを特徴とする請求項13に記載の方法。
  19. 前記コンテクストパラメータは、既存のコンテクスト条件を拡張可能なように構成可能であることを特徴とする請求項13に記載の方法。
  20. 前記カレントコード分析を考慮した前記ルールコンテクストパラメータの前記評価は、前記コード分析コンテクスト間の階層関係、前記一連の所定ルール、またはその両方を考慮することを特徴とする請求項13に記載の方法。
JP2008552301A 2006-01-30 2006-12-28 コンテクストベースのコード分析 Expired - Fee Related JP5165591B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/343,691 US8595703B2 (en) 2006-01-30 2006-01-30 Context based code analysis
US11/343,691 2006-01-30
PCT/US2006/049555 WO2007089349A1 (en) 2006-01-30 2006-12-28 Context based code analysis

Publications (2)

Publication Number Publication Date
JP2009525522A true JP2009525522A (ja) 2009-07-09
JP5165591B2 JP5165591B2 (ja) 2013-03-21

Family

ID=38323645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008552301A Expired - Fee Related JP5165591B2 (ja) 2006-01-30 2006-12-28 コンテクストベースのコード分析

Country Status (6)

Country Link
US (2) US8595703B2 (ja)
EP (1) EP1982270B1 (ja)
JP (1) JP5165591B2 (ja)
KR (1) KR20080091351A (ja)
CN (1) CN101589380B (ja)
WO (1) WO2007089349A1 (ja)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8997246B2 (en) * 2005-10-04 2015-03-31 Disney Enterprises, Inc. System and/or method for authentication and/or authorization via a network
US7945905B2 (en) * 2006-06-02 2011-05-17 Accenture Global Services Limited Quality inspector tool
US9645915B2 (en) 2006-12-27 2017-05-09 The Mathworks, Inc. Continuous evaluation of program code and saving state information associated with program code
US8584094B2 (en) * 2007-06-29 2013-11-12 Microsoft Corporation Dynamically computing reputation scores for objects
US8627287B2 (en) * 2007-11-29 2014-01-07 Microsoft Corporation Prioritizing quality improvements to source code
US20100235730A1 (en) * 2009-03-13 2010-09-16 Microsoft Corporation Consume-first mode text insertion
US20100269032A1 (en) * 2009-04-15 2010-10-21 Microsoft Corporation Advanced text completion, such as for markup languages
US8561021B2 (en) * 2010-02-08 2013-10-15 Microsoft Corporation Test code qualitative evaluation
CN101819536B (zh) * 2010-05-14 2012-11-28 西安交通大学 一种面向粒的程序构造方法
US20110307802A1 (en) * 2010-06-10 2011-12-15 Shreyank Gupta Review of requests to modify contextual data of a programming interface
US8966446B1 (en) * 2010-09-29 2015-02-24 A9.Com, Inc. Systems and methods of live experimentation on content provided by a web site
CN102012991A (zh) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 基于静态分析的c语言安全规则检查方法
US20120133579A1 (en) * 2010-11-30 2012-05-31 Microsoft Corporation Gesture recognition management
KR101276308B1 (ko) * 2011-02-22 2013-06-18 서울대학교산학협력단 다중 출력 명령어를 지원하는 그래프 기반의 코드 생성 장치 및 그 코드 생성 방법
GB2490702A (en) * 2011-05-10 2012-11-14 Bhaskar Peri Managing the evaluation of computer program code by selecting computer code items and rules to evaluate the items.
US20130019225A1 (en) * 2011-07-11 2013-01-17 Microsoft Corporation Incremental Inferences for Developing Data Models
US20120330878A1 (en) * 2011-06-23 2012-12-27 Microsoft Corporation Conventions for inferring data models
US8914515B2 (en) * 2011-10-28 2014-12-16 International Business Machines Corporation Cloud optimization using workload analysis
US8869106B2 (en) * 2011-12-16 2014-10-21 Microsoft Corporation Language service provider management using application context
US9047413B2 (en) * 2012-10-05 2015-06-02 Software Ag White-box testing systems and/or methods for use in connection with graphical user interfaces
US9092211B2 (en) * 2012-12-13 2015-07-28 Microsoft Technology Licensing, Llc Social-based information recommendation system
US9715440B2 (en) 2012-12-19 2017-07-25 Microsoft Technology Licensing, Llc Test scope determination based on code change(s)
JP6048957B2 (ja) * 2012-12-21 2016-12-21 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、プログラム、及び情報処理方法
US9880842B2 (en) * 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US9158922B2 (en) 2013-05-29 2015-10-13 Lucent Sky Corporation Method, system, and computer-readable medium for automatically mitigating vulnerabilities in source code
US9449060B2 (en) * 2013-08-06 2016-09-20 International Business Machines Corporation Post-migration validation of ETL jobs and exception management
US9053235B1 (en) * 2013-10-22 2015-06-09 The Mathworks, Inc. Program code interface for providing program code and corresponding results of evaluating the program code
US9064052B1 (en) * 2013-10-22 2015-06-23 The Mathworks, Inc. Providing intermediate results of evaluating program code that includes a compound statement
US9053228B1 (en) * 2013-10-22 2015-06-09 The Mathworks, Inc. Determining when to evaluate program code and provide results in a live evaluation programming environment
US9792203B2 (en) * 2013-11-14 2017-10-17 Sap Se Isolated testing of distributed development projects
KR101530132B1 (ko) * 2013-12-10 2015-06-18 한양대학교 산학협력단 기호 실행을 이용하는 바이너리 코드 실행 경로 확장 방법 및 장치
US10275333B2 (en) * 2014-06-16 2019-04-30 Toyota Jidosha Kabushiki Kaisha Risk analysis of codebase using static analysis and performance data
CN105446711B (zh) * 2014-08-08 2018-10-02 国际商业机器公司 获取用于软件开发任务的上下文信息的方法及装置
US9703536B2 (en) 2014-08-11 2017-07-11 International Business Machines Corporation Debugging code using a question and answer system based on documentation and code change records
US9825984B1 (en) 2014-08-27 2017-11-21 Shape Security, Inc. Background analysis of web content
US20160077831A1 (en) * 2014-09-11 2016-03-17 Microsoft Corporation Accurate and performant code design using memoization
US9378013B2 (en) * 2014-11-14 2016-06-28 Semmle Limited Incremental source code analysis
US9262132B1 (en) * 2015-04-13 2016-02-16 Semmle Limited Incremental local source code analysis
US10929008B2 (en) 2015-06-05 2021-02-23 Apple Inc. Touch-based interactive learning environment
US9710364B2 (en) * 2015-09-04 2017-07-18 Micron Technology Licensing, Llc Method of detecting false test alarms using test step failure analysis
US10025765B2 (en) 2015-10-15 2018-07-17 International Business Machines Corporation Context sensitive verification point driven inspection
US9740601B2 (en) 2015-12-01 2017-08-22 International Business Machines Corporation Globalization testing management service configuration
US9767011B2 (en) 2015-12-01 2017-09-19 International Business Machines Corporation Globalization testing management using a set of globalization testing operations
US9959097B2 (en) * 2016-03-09 2018-05-01 Bank Of America Corporation SVN interface system for heterogeneous development environments
US10339032B2 (en) 2016-03-29 2019-07-02 Microsoft Technology Licensing, LLD System for monitoring and reporting performance and correctness issues across design, compile and runtime
US10346556B2 (en) * 2016-05-25 2019-07-09 Hexagon Technolgy Center GmbH Validation of multi-component design constraints for capital project design system
US10169210B2 (en) 2016-08-09 2019-01-01 International Business Machines Corporation Association between a test case and source code
US9740543B1 (en) 2016-10-27 2017-08-22 Red Hat, Inc. Multi-endpoint method implementation
US10606729B2 (en) 2017-11-28 2020-03-31 International Business Machines Corporation Estimating the number of coding styles by analyzing source code
JP6890557B2 (ja) * 2018-01-17 2021-06-18 株式会社日立製作所 分析モデル作成システム、プログラミング装置および分析モデル作成方法
US10521335B2 (en) * 2018-01-29 2019-12-31 T-Mobile Usa, Inc. Context-based device testing
CN109062784B (zh) * 2018-07-06 2021-04-27 北京大学 接口参数约束代码入口定位方法与系统
US11106448B2 (en) 2018-08-14 2021-08-31 Red Hal Israel, Ltd. Management of updates to externally managed libraries
US11119901B2 (en) * 2019-02-01 2021-09-14 Micro Focus Llc Time-limited dynamic testing pipelines
US11562136B2 (en) * 2019-06-11 2023-01-24 International Business Machines Corporation Detecting programming language deficiencies cognitively
CN111045608B (zh) * 2019-12-29 2023-12-08 北京浪潮数据技术有限公司 一种有效性代码的查找方法、装置、设备及可读存储介质
US11100009B2 (en) 2020-01-03 2021-08-24 Bank Of America Corporation Intelligent detection and ejection of unused application components
CN111475703B (zh) * 2020-04-28 2023-06-13 深圳市智佳家电子科技有限公司 一种抓取网络特定数据的分析方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04367934A (ja) * 1991-06-14 1992-12-21 Nec Corp システム設計・開発支援ツール
JPH11134187A (ja) * 1997-10-27 1999-05-21 Fujitsu Ltd ソースプログラム解析装置およびそのプログラム記憶媒体
JP2001034461A (ja) * 1999-07-23 2001-02-09 Toshiba Corp ソフトウェア構成管理支援装置、その方法およびソフトウェア構成管理支援プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004220269A (ja) * 2003-01-14 2004-08-05 Cyx Inc 統合テスト管理システム
JP2006018735A (ja) * 2004-07-05 2006-01-19 Hitachi Software Eng Co Ltd コーディング規準遵守状況監視システム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0567137A1 (en) 1992-04-23 1993-10-27 Nec Corporation Protocol data unit encoding/decoding device
US5485618A (en) 1993-12-15 1996-01-16 Borland International, Inc. Methods and interface for building command expressions in a computer system
US5963739A (en) 1996-04-26 1999-10-05 Peter V. Homeier Method for verifying the total correctness of a program with mutually recursive procedures
US5896537A (en) 1996-05-13 1999-04-20 Siemens Corporate Research, Inc. Partition based alias analyzer for pointers
US6149318A (en) 1997-04-15 2000-11-21 Samuel C. Kendall Link-time and run-time error detection, and program instrumentation
WO1998049613A2 (en) 1997-04-30 1998-11-05 Geodesic Systems L.L.C. Automatically-maintained customizable user interfaces
JP3230467B2 (ja) 1997-09-25 2001-11-19 日本電気株式会社 Gdmoトランスレータ及びgdmoトランスレーション方法並びにgdmoトランスレータプログラムを記録した記録媒体
US6047390A (en) 1997-12-22 2000-04-04 Motorola, Inc. Multiple context software analysis
US6594783B1 (en) 1999-08-27 2003-07-15 Hewlett-Packard Development Company, L.P. Code verification by tree reconstruction
US6353925B1 (en) 1999-09-22 2002-03-05 Compaq Computer Corporation System and method for lexing and parsing program annotations
US7111280B2 (en) 2000-02-25 2006-09-19 Wind River Systems, Inc. System and method for implementing a project facility
US7110936B2 (en) * 2001-02-23 2006-09-19 Complementsoft Llc System and method for generating and maintaining software code
KR100433549B1 (ko) 2002-05-11 2004-05-31 삼성전자주식회사 소프트웨어 분석 방법 및 장치
JP4363868B2 (ja) * 2002-08-23 2009-11-11 株式会社東芝 検索キーワード分析プログラム及びシステム並びに方法
JP2004326337A (ja) 2003-04-23 2004-11-18 Mitsubishi Electric Corp コード解析プログラム、コード解析自動化プログラム及び自動コード解析システム
US20050114838A1 (en) * 2003-11-26 2005-05-26 Stobie Keith B. Dynamically tunable software test verification
US7376935B2 (en) * 2004-10-25 2008-05-20 Microsoft Corporation Design-time system and method to enable programming assistance across languages and compilation boundaries

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04367934A (ja) * 1991-06-14 1992-12-21 Nec Corp システム設計・開発支援ツール
JPH11134187A (ja) * 1997-10-27 1999-05-21 Fujitsu Ltd ソースプログラム解析装置およびそのプログラム記憶媒体
JP2001034461A (ja) * 1999-07-23 2001-02-09 Toshiba Corp ソフトウェア構成管理支援装置、その方法およびソフトウェア構成管理支援プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2004220269A (ja) * 2003-01-14 2004-08-05 Cyx Inc 統合テスト管理システム
JP2006018735A (ja) * 2004-07-05 2006-01-19 Hitachi Software Eng Co Ltd コーディング規準遵守状況監視システム

Also Published As

Publication number Publication date
CN101589380A (zh) 2009-11-25
WO2007089349A1 (en) 2007-08-09
EP1982270A4 (en) 2010-04-07
US20140082595A1 (en) 2014-03-20
US20070180429A1 (en) 2007-08-02
JP5165591B2 (ja) 2013-03-21
EP1982270B1 (en) 2020-06-03
EP1982270A1 (en) 2008-10-22
CN101589380B (zh) 2012-07-04
US8997055B2 (en) 2015-03-31
US8595703B2 (en) 2013-11-26
KR20080091351A (ko) 2008-10-10

Similar Documents

Publication Publication Date Title
JP5165591B2 (ja) コンテクストベースのコード分析
Decan et al. What do package dependencies tell us about semantic versioning?
Reussner et al. Modeling and simulating software architectures: The Palladio approach
Gallaba et al. Use and misuse of continuous integration features: An empirical study of projects that (mis) use Travis CI
US9208057B2 (en) Efficient model checking technique for finding software defects
US9778930B2 (en) Evaluating software compliance
US8671222B2 (en) Systems and methods for dynamically deploying an application transformation tool over a network
US8898627B2 (en) Systems and methods for applying rules to transform objects of an application
US8572566B2 (en) Systems and methods for analyzing changes in application code from a previous instance of the application code
US8954930B2 (en) System and method for reducing test effort by object risk analysis
US8739150B2 (en) Systems and methods for dynamically replacing code objects via conditional pattern templates
TWI453666B (zh) 用於在團隊環境中使用協同開發資訊的方法及電腦可讀取儲存媒體
US10284634B2 (en) Closed-loop infrastructure orchestration templates
US9256509B1 (en) Computing environment analyzer
CN108701057B (zh) 用于供应部署管道的计算机可读存储介质、系统和方法
EP2199905A1 (en) Lifecycle management and consistency checking of object models using application platform tools
US20160013989A1 (en) Service discovery and/or effort estimation in networked computing environments
Kaestner et al. Model-driven code generation and analysis
Lenhard Improving process portability through metrics and continuous inspection
WO2011041246A1 (en) Systems and methods for analyzing and transforming an application from a source installation to a target installation
US20220207438A1 (en) Automatic creation and execution of a test harness for workflows
Kayed Improving Quality Assurance by Providing Robust Tools
Esquembri Moreno Automated characterization of build and test failures on a continuous integration system
Kowalczewski et al. IFTT: Software Application Interfaces Regression Testing
Bogoda Applicability of agent technology for software release management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121112

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: 20121207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121219

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5165591

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees