JP2010198522A - ソースコード解析方法およびソースコード解析支援システム - Google Patents

ソースコード解析方法およびソースコード解析支援システム Download PDF

Info

Publication number
JP2010198522A
JP2010198522A JP2009045052A JP2009045052A JP2010198522A JP 2010198522 A JP2010198522 A JP 2010198522A JP 2009045052 A JP2009045052 A JP 2009045052A JP 2009045052 A JP2009045052 A JP 2009045052A JP 2010198522 A JP2010198522 A JP 2010198522A
Authority
JP
Japan
Prior art keywords
source code
analysis
analysis result
information
output
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
JP2009045052A
Other languages
English (en)
Other versions
JP5188421B2 (ja
Inventor
Masashi Sakai
正志 酒井
Yumi Suzuki
由美 鈴木
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009045052A priority Critical patent/JP5188421B2/ja
Publication of JP2010198522A publication Critical patent/JP2010198522A/ja
Application granted granted Critical
Publication of JP5188421B2 publication Critical patent/JP5188421B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】ソフトウェア開発時のソースコード解析作業において、開発者の作業負荷軽減を図るとともに、精度の高いソースコード解析を行うことができるソースコード解析方法、およびこれを実施するソースコード解析支援システムを提供する。
【解決手段】入力部を介してソースコードを受信する処理と、該受信したソースコードから、関数および変数の参照関係を示すソースコード関連情報を抽出して、記憶部に格納する処理と、前記受信したソースコードとあらかじめ規定されたソースコードのコーディングルールに基づいて、前記ソースコードが前記コーディングルールに準拠しているかどうかを解析する処理と、該解析の結果、前記ソースコードが前記コーディングルールに準拠していない場合、該解析結果、前記ソースコードに記述されたファイル名および該当コーディングルール情報を前記記憶部に格納する処理と、前記解析結果を出力部に出力する処理とを備える。
【選択図】図1

Description

本発明は、ソースコード解析方法、およびこれを実施するソースコード解析支援システムに関する。
従来、複数のソースコードに跨る静的解析において、静的解析時に必要な全てのソースコードの解析を行うのではなく、サーバで管理されているコミット済みのソースコードに対して、サーバ上で事前処理として静的解析を実施し、実際の解析時には、サーバにおいてこの事前処理の結果に基づいて静的解析を実施するソースコード解析システムが知られている(例えば、特許文献1参照)。
また、従来のソースコード解析システムでは、ソースコードの静的解析の結果、エラーが検出されれば、警告が出力される。開発者は、この警告により、エラーが発生したソースコードを修正する。しかし、エラーの中には、必ずしも修正しなくても良い場合がある。これは、あるコーディングが好ましくない書式で記述されていたとしても、プロジェクトの特性からそう記述しなければならないなどの状況が発生するためである。しかし、従来では、検出されたエラーに対して、各開発者のスキルや裁量で修正要否を判断していた。このため、ソースコードの品質が開発者に依存し、開発者によって品質にバラツキが生じていた。この問題を解決する技術として、ソースコード解析システムによって出力された警告に対して、どの警告に関するエラーを修正すべきかという優先度を自動的に付与することにより、判断基準が統一できるとともに開発者による修正要否の判断が容易になり、開発者の作業負荷軽減を図る技術が知られている(例えば、特許文献2参照)。
特開2008−225519号公報 特開2008−21244号公報
しかしながら、上記の従来技術には、以下に示すような問題点がある。
まず、特許文献1に記載の技術では、サーバに登録済みのソースコードに対して、テスト工程にて不良が発生したなどの理由によりソースコードの修正が発生した場合、サーバに蓄積されているソースコードおよび事前処理結果が、修正中のソースコードと整合性が取れない場合がある。この場合、修正中のソースコードをサーバに一度登録した上で、他のソースコードの解析処理を実施する必要があるため、開発者に作業負荷がかかる。また、ソースコードの解析結果が、サーバで実施されている事前処理結果に対して変更(ソースコード単体で解析した場合は指摘対象となる箇所が、関連するプログラムを通して会席した場合、指摘対象外となる場合など)が発生した場合、ソースコード解析の再実行が必要になる。
また、特許文献2に記載の技術では、出力される警告の件数自体は変わらないため、膨大に出力される警告に対する修正要否を判断する開発者の作業負荷は変わらない。また、上述のように警告が出力されても、プロジェクトの特性によっては、コーディングルール上問題が無いため、修正不要なエラーがある。したがって、開発者の負荷軽減の観点から、このようなエラーは解析結果として出力させないよう制御することが望ましいが、特許文献2にはこの点について言及されていない。
本発明は、上記に鑑みてなされたものであり、ソフトウェア開発時のソースコード解析作業において、開発者の作業負荷軽減を図るとともに、精度の高いソースコード解析を行えるソースコード解析方法、およびこれを実施するソースコード解析支援システムを提供することを目的とする。
上述した課題を解決するために、本発明は、例えば、コンピュータにより実施されるソースコード解析方法であって、入力部を介してソースコードを受信する処理と、該受信したソースコードから、関数および変数の参照関係を示すソースコード関連情報を抽出して、記憶部に格納する処理と、前記受信したソースコードとあらかじめ規定されたソースコードのコーディングルールに基づいて、前記ソースコードが前記コーディングルールに準拠しているかどうかを解析する処理と、該解析の結果、前記ソースコードが前記コーディングルールに準拠していない場合、該解析結果、前記ソースコードに記述されたファイル名および該当コーディングルール情報を前記記憶部に格納する処理と、前記記憶部からソースコード関連情報および前記解析結果に基づき、該解析結果の変更要否を判定する処理と、前記解析結果の変更が必要な場合に、前記判定処理の結果に基づき、前記記憶部に記憶されている前記解析結果を変更する処理と、前記記憶部に記憶されている出力制御情報に基づき前記解析結果を出力部に出力する処理と、を実施することを特徴とする。
また、本発明は、前記解析結果を前記出力部に出力する処理を実施した後、前記入力部を介して解析結果の変更要求を受信する処理と、該変更要求に基づき、前記記憶部に記憶されている前記出力制御情報を更新する処理と、をさらに実施することを特徴とする。
本発明によれば、ソフトウェア開発時のソースコード解析作業において、開発者の作業
負荷軽減を図るとともに、精度の高いソースコードの解析を行うことができるソースコー
ド解析方法およびこれを実施するソースコード解析支援システムを提供することができ
る。
ソースコード解析支援システムの全体構成図。 ソースコード解析支援システムの処理手順の一例を示すフローチャート。 図2のステップS202で実施される、ソースコード解析処理の処理手順の一例を示すフローチャート。 図2のステップS203で実施される、解析結果連結処理の処理手順の一例を示すフローチャート。 図2のステップS204で実施される、解析結果出力処理の処理手順の一例を示すフローチャート。 ソースコード解析支援システムの入力となるソースコードの一例を示す図。 同じく、ソースコード解析支援システムの入力となるソースコードの一例を示す図。 同じく、ソースコード解析支援システムの入力となるソースコードの一例を示す図。 ソースコード解析に参照するコーディングルールの一例を示す図。 入力されたソースコードにおける関数間の呼び出し関係および関数内で使用される変数の参照関係を含む情報の一例を示す図。 解析結果情報107の一例を示す図。 更新後の解析結果情報107の一例を示す図。 出力制御情報109の一例を示す図。 結果出力手段104により出力された結果の一例を示す図。
本発明の実施形態について、図面を参照して詳細に説明する。
図1は、ソースコード解析支援システムの全体構成図である。
ソースコード解析支援システム100は、例えば、一般的な計算機で実現され、CPU、CPUが実行するプログラムや各種データを記憶する記憶装置、キーボード・マウス等の入力装置、ディスプレイ等の出力装置を有する。ソースコード解析支援システム100の記憶装置には、ソースコード解析手段101、ソースコード情報抽出手段102、解析情報連結手段103、結果出力手段104からなるプログラムが記憶されている。また、上記記憶装置には、解析対象となるソースコード105について関数や変数の命名規則や使用禁止命令などが規定されたコーディングルール106、前記ソースコード解析手段101により生成される解析結果情報107、前記ソースコード情報抽出手段により生成されるソースコード関連情報108、前記結果出力手段104により生成される出力制御情報109が記憶されている。
ソースコード解析手段101は、ソースコード105の解析処理を実施するに当たり、ソースコード情報抽出手段102を呼び出して実行し、ソースコード105における関数間の呼出関係および関数内で使用される変数の参照関係を示すソースコード関連情報108を生成する。また、ソースコード解析手段101は、前記ソースコード関連情報108を生成後、ソースコードに対する関数や変数の命名規則や使用禁止命令などを記憶するコーディングルール106と、前記ソースコード関連情報108に基づいて、入力装置を介して入力されたソースコード105がコーディングルール106に準拠しているかを解析する。ここで、ソースコード関連情報108とソースコード105とを関連づけるため、ソースコード関連情報108には、ソースコードにおける関数間の呼出関係および関数内で使用される変数の参照関係を示す情報が含まれる。
例えば、入力装置を介して入力されたソースコード105に、前記コーディングルール106で規定されている使用禁止命令が存在した場合、この部分がコーディングルール106に違反している箇所として検出される。また、ソースコード解析手段101は、ソースコード105で初期化されていない変数を発見した場合、記憶装置に記憶されている前記ソースコード関連情報108を参照し、初期化されていない変数に関する参照情報が存在しないかを確認する。確認した結果、同じ変数に対する更新情報が存在した場合、ソースコード解析手段101は、ソースコード105で発見した初期化されていない変数は、初期化済みであると判断し、違反箇所として検出しない。なお、上記確認の結果、同じ変数に対する更新情報が存在しない場合には、ソースコード解析手段101は、ソースコード105で発見した初期化されていない変数を、初期化漏れ変数として検出する。ソースコード解析手段101は、ソースコード105の解析処理終了後、ソースコード解析結果を示す解析結果情報107を生成し、記憶装置に記憶する。また、ソースコード解析手段101は、前記解析結果情報107から、入力装置を介して入力されたソースコード105について、過去に解析したことがあるかどうかを判定し、その判定の結果、過去に解析したことがあった場合には、入力されたソースコード105の解析処理を実施するかどうかを開発者110に確認させるための画面を出力装置へ出力する手段を有する。
ソースコード情報抽出手段102は、ソースコード105の解析時に、ソースコード解析手段101によって呼び出され実行されるプログラムであり、ソースコード105における関数間の呼出関係および関数内で使用される変数の参照関係を示すソースコード関連情報108を生成し、これを記憶装置に記憶する。
例えば、ソースコード情報抽出手段102は、ソースコード105を参照し、関数呼び出し箇所を検索する。関数呼び出し箇所を発見した場合、ソースコード情報抽出手段102は、呼び出される関数名、関数に引数として使用さている変数、戻り値として使用されている変数に関する情報を抽出する。また、ソースコード情報抽出手段102は、ソースコード105で使用されている変数についても検索を行い、変数名、参照箇所、参照種別(参照/更新など)に関する情報も抽出する。ソースコード情報抽出手段102は、上記抽出した情報をソースコード関連情報108として記憶する。
解析情報連結手段103は、入力装置を介して入力されたソースコード105に対して生成されたソースコード関連情報108から、記憶装置に記憶している解析結果情報107を更新すべきかを判断すると共に、更新する必要がある場合は、記憶装置に記憶している解析結果情報107を更新する。ここで、ソースコード関連情報108と解析結果情報107を関連づけるため、解析結果情報107には、コーディングルール106に準拠していない関数、変数の参照関係、使用箇所を示す情報が含まれる。
例えば、解析情報連結手段103は、記憶装置に記憶されている解析結果情報107に、初期化漏れの変数として記憶されている情報に対して、新たに解析したソースコード105について生成されたソースコード関連情報108を参照し、同じ変数に対する更新情報(初期化されている箇所)が存在するかを検索する。ここで、更新情報を発見した場合、解析情報連結手段103は、解析結果情報107に記憶されている変数の初期化漏れの情報を削除する必要があると判断し、変数の初期化漏れの情報を、記憶装置に記憶している解析結果情報107から削除する。
結果出力手段104は、記憶装置に記憶している解析結果情報107を、出力制御情報に基づき出力装置に出力するかどうかを判断し、出力する場合には、該当解析結果情報107を出力装置に出力する。また、開発者110から、解析結果の出力内容に対する変更要求を入力装置を介して受け付けると、結果出力手段104は、この変更要求に応じて出力制御情報109を更新する。ここで、出力制御情報109と解析結果情報107を関連づけるため、出力制御情報109には、コーディングルール106に準拠していないソースコードの箇所と、該当するコーディングルール106の内容(ルールNOなど)の情報が含まれる。
例えば、記憶装置に記憶している解析結果情報107に、1件以上の情報が記憶されている場合、結果出力手段104は、出力装置に出力する前に出力制御情報109を参照し、例えば、1件のみ出力するよう指定されている場合には、その指定されている解析結果情報107の1件のみを出力装置に出力する。また、1件以上出力するよう変更したい場合には、開発者110は、入力装置を用いて出力内容の変更を行うことができる。この場合、結果出力手段104は、入力装置を介して受け取った変更内容に応じて出力制御情報109を更新する。
次に、本実施形態に係るソースコード解析支援システムの処理の流れを、図2に示す処理手順に沿って説明する。
まず、ソースコード解析手段101は、記憶装置に記憶されている解析結果情報107に基づいて、入力装置を介して入力されたソースコード105について既に解析したことがあるかどうかを判定する(ステップS200)。ソースコード解析手段101は、判定する際、ソースコード105に対する解析処理を実行した日時と、解析結果情報107に含まれる解析日時とを比較し、解析結果情報107に含まれる解析日時が解析処理実行日時より古い場合には、上記入力されたソースコード105は既に解析済みのソースコードと判断し、ステップ201に移る。また、ソースコード105に対する解析処理を実行した日時と、解析結果情報107に含まれる解析日時とを比較し、解析結果情報107に含まれる解析日時と解析処理実行日時が同じ場合には、ソースコード解析手段101は、上記入力されたソースコード105が過去に解析されたことがないソースコードと判断し、ステップS202に移る。
ステップ200の判定の結果、解析結果情報107に含まれる解析日時が解析処理実行日時より古い場合には次に、ソースコード解析手段101は、入力されたソースコード105の解析処理を実行するかどうかを開発者110に確認させるための画面を出力装置に出力する(ステップ201)。開発者110により入力装置を介して解析処理の実行が選択された場合、ソースコード解析手段101は、ステップ202に移り、解析処理の実行が選択されなかった場合、入力されたソースコード105に対する解析処理を終了する。
ステップ202に示すソースコード解析処理では、ソースコード解析手段101およびソースコード情報抽出手段102による、入力されたソースコード105を解析する処理を実施する。処理である。このステップ202に示すソースコード解析処理の詳細な処理内容を、図3を用いて説明する。
まず、ソースコード解析手段101は、ソースコード情報抽出手段102を呼び出す。ソースコード情報抽出手段102は、入力装置を介して入力されたソースコード105から、関数間の呼び出し関係および関数内で使用される変数の参照関係を示すソースコード関連情報108を抽出し、記憶装置に格納する(ステップ300)。
次に、ソースコード解析手段101は、コーディングルール106およびステップ200で記憶装置に格納したソースコード関連情報108に基づいて、上記入力されたソースコード105がコーディングルール106に準拠しているかを確認し、その結果を記憶装置に格納する(ステップ301)。ソースコード解析手段101は、入力されたソースコード105について、コーディングルール106に準拠していない箇所を発見した場合、違反しているコーディングルールの内容およびソースコード内のコーディングルールに違反している行、コーディング内容を検出し、これを解析結果情報107として記憶装置に格納した後、ステップ203(図2)に移る。一方、ソースコード解析手段101は、上記入力されたソースコード105について、コーディングルール106に準拠していない箇所が存在しない場合、ステップ203に移る。
以下に、ソースコード解析手段101が実行するソースコード解析処理の具体例を説明する。ここで、例えば、図9に示すコーディングルールに則って、図6に示すソースコードを解析した場合、ソースコードの6800行目で禁止命令(例では、GO TO命令を指す)が記述されているため、ソースコード解析手段101は、図9に示すコーディングルールで規定されているルールID=A1001に違反していると判断し、ソースコードの6800行目をコーディングルールID=A1001違反箇所として検出し、該当ファイル名、該当コーディングルールIDおよび解析結果を含む解析結果情報107を記憶装置に格納する。また、ソースコードの4800行目と10000行目で変数=OUT-DATAが記述されているが、初期化が実施されておらず、コーディングルールで規定されているルールID=B2011に違反しているため、ソースコード解析手段101は、上記変数=OUT-DATAをコーディングルールID=B2011違反箇所として検出し、該当ファイル名、該当コーディングルールIDおよび解析結果を含む解析結果情報107を記憶装置に格納する。さらに、ソースコードの4800行目のIF命令について、END-IF命令が省略されており、図9のコーディングルールで規定されているルールID=A1101に違反しているため、ソースコード解析手段101は、ソースコードの4800行目のIF命令をコーディングルールID=A1101違反箇所として検出し、該当ファイル名、該当コーディングルールIDおよび解析結果を含む解析結果情報107を記憶装置に格納する。
また、例えば、図7に示すソースコードを解析した場合、図9に示すコーディングルールで規定するルールに違反する箇所は存在しないため、ソースコード解析手段101は、コーディングルールに違反する箇所は存在しない判断し、図7に示すソースコードの解析処理を終了する。
また、図8に示すソースコードを解析した場合、ソースコードの9200行目のEVALUATE命令について、WHEN OTHER句が省略されており、図9に示すコーディングルールで規定されているルールID=A1102に違反しているため、ソースコード解析手段101は、ソースコードの9200行目のEVALUATE命令をコーディングルールID=A1102違反箇所として検出し、該当ファイル名、該当コーディングルールIDおよび解析結果を含む解析結果情報107を記憶装置に格納する。また、ソースコードの9200行目で変数=OUT-DATAが記述されているが、初期化が実施されておらず、図9に示すコーディングルールで規定されているルールID=B2011に違反しているため、ソースコード解析手段101は、上記変数=OUT-DATAをコーディングルールID=B2011違反箇所として検出し、該当ファイル名、該当コーディングルールIDおよび解析結果を含む解析結果情報107を記憶装置に格納する。記憶装置に格納される解析結果情報107の例を図11に示す。
図2に戻り説明を続ける。ステップ203に示す解析情報連結処理では、解析情報連結手段103にて、入力装置を介して新たに入力されたソースコードから、ソースコード情報抽出手段102によって抽出されたソースコード関連情報108に基づいて、記憶装置に記憶されている解析結果情報107の更新処理を実施する。以下、ステップ203に示す解析情報連結処理の詳細な処理内容を、図4を用いて説明する。
まず、解析情報連結手段103は、記憶装置に記憶されているソースコード関連情報108および解析結果情報107に基づき、解析結果情報107を変更する必要があるかを判定する(ステップ400)。すなわち、解析情報連結手段103は、入力装置を介して新たに入力されたソースコード105から、ソースコード情報抽出手段102によって抽出されたソースコード関連情報108を元に、ソースコード解析手段101により記憶装置に格納された解析結果情報107の内容を精査する。解析情報連結手段103は、解析結果情報107の変更が必要と判断した場合、この解析結果情報107を変更する(ステップ401)。な、ステップ400において、解析結果情報107の変更が不要の場合には、解析情報連結手段103はと、ステップ204(図2)に移る。
以下に、解析情報連結手段103が実行するソースコード解析処理の具体例を説明する。なお、ここでは、図10に示すソース関連情報108と図11に示す解析結果情報107を用いて説明する。
まず、解析結果情報連結手段103は、図11に示す解析結果情報107を参照し、例えば、ルールID=B2011(図13)に違反している変数OUT-DATAの初期化漏れに関するファイル名(TESTPG01、TESTPG03)を抽出する。次に、解析結果情報連結手段103は、ソースコード関連情報108(図10)を参照し、変数=OUT-DATAに関連づいている区分(変数の参照種別)および使用行番号(使用箇所に関する情報)を検索する。図10に示す例では、解析結果情報連結手段103は、変数=OUT-DATAについて、プログラム名=TESTPG02の8300行目が更新されていることを確認できる。これにより、解析結果情報連結手段103は、プログラム単体(TESTPG01、TESTPG03)で解析した場合、変数=OUT-DATAは初期化漏れとして検出されているが、関連するプログラム全体を通して解析した場合、変数=OUT-DATAは初期化処理が実施されていると確認できる。すなわち、解析結果情報連結手段103は、変数=OUT-DATAに対する初期化漏れという解析結果情報107は削除してよいと判断してこれを記憶装置から削除し、ステップ204(図2)に移る。削除後の解析結果情報107を図12に示す。
図2に戻り説明を続ける。
ステップ204に示す結果出力処理では、結果出力手段104にて、結果出力手段104にて生成される出力制御情報109に基づいて、ソースコード解析手段101により格納された解析結果情報107を出力装置に出力する処理を実施する。また、開発者110から、出力される解析結果情報107に対して出力内容の変更要求を入力装置を介して受信した場合、結果出力手段104は、その要求内容に応じて記憶装置に記憶されている出力制御情報109を更新する処理を実施する。以下、ステップ204に示す結果出力処理の詳細な処理内容を、図5を用いて説明する。
まず、結果出力手段104は、記憶装置から解析結果情報107を読み出し、記憶装置に記憶されている出力制御情報109に基づいて出力要否を判定し、出力要の場合にその解析結果情報を出力装置に出力する(ステップ500)。具体例を挙げて説明する。図13に出力制御情報109の例を、図12に解析結果情報107の例を、それぞれ示す。
結果出力手段104は、図13に示す出力制御情報109の解析結果の出力要否を示す情報を確認する。図13に示す例では、結果出力手段104は、TRUEが設定されている情報(ルールID=A1101、A1102、B2011が該当)とFALSEが設定されている情報(ルールID=A1001が該当)を確認する。次に、結果出力手段104は、図12に示す解析結果情報107を参照して、上記確認結果のうち、出力要否にTRUEが設定されていたルールID(A1101、A1102、B2011)を検索し、一致する情報を出力装置に出力する。図12に示す解析結果情報107の場合、ルールID=A1101、A1102に該当する情報が出力装置に出力される。その出力画面の例を図14に示す。 図5に戻り説明を続ける。
ステップ500の処理後、開発者110が、プロジェクトの特性を考慮し、例えば、図14に示す該当ファイルについて、「出力する」または「出力しない」の何れかのボタンを入力装置を用いて押下する操作を行うと、結果出力手段10は、入力装置を介して解析結果情報の変更要求を受信し(ステップ501)、ステップ502に移る。なお、変更要求が無い場合には、結果出力手段10は、解析結果の出力処理を終了すると共に、ソースコードの解析処理を終了する。
次に、結果出力手段104は、ステップ501で受信した変更要求に従い、記憶装置に記憶されている該当出力制御情報109を更新する(ステップ502)。
出力制御情報109の更新処理の具体例を説明する。例えば、結果出力手段104は、入力装置を介して、出力要(TRUE)に設定されていた、ルールID=A1101に対する解析結果情報を出力否(FALSE)へ変更する要求を受信した場合、記憶装置に記憶されている出力制御情報109から、ルールID=A1101に該当する情報を検索し、一致した情報の出力有無列の内容について、FALSEを設定する。 以上説明したように、上記実施例によれば、ソースコード解析にかかる処理時間の短縮を図ることが可能となる。これは、複数のプログラムに関連するソースコードを実施する場合など、ソースコード解析手段が記憶する解析結果情報およびソースコード情報抽出手段が記憶するソースコード関連情報に基づいて実施することにより、従来のように関連する全てのソースコードを取得および再度解析する作業が軽減されるためである。
また、上記実施例によれば、精度の高いソースコード解析を実施することが可能となる。すなわち、ソースコード解析による警告が膨大に出力されることを抑えることが可能となる。これは、ソースコード情報抽出手段が記憶するソースコード関連情報および前記ソースコード解析手段が記憶する解析結果情報の内容を更新する解析情報連結手段により、ソースコード解析時に参照している情報が常に更新・精査されているためである。
また、上記実施例によれば、開発者に出力するソースコード解析の結果情報について、プロジェクトの特性に合わせた結果情報のみを出力することが可能となる。すなわち、出力されたソースコード解析の結果に対する開発者の修正要否作業の負荷軽減を図ることが可能となる。これは、開発者に対して前記解析結果情報を出力装置に出力するか出力しないかを入力させるための画面を出力装置に出力するようにしたためである。
100 ソースコード解析支援システム
101 ソースコード解析手段
102 ソースコード情報抽出手段
103 解析情報連結手段
104 解析結果出力手段
105 ソースコード
106 コーディングルール
107 解析結果情報
108 ソースコード関連情報
109 出力制御情報
110 開発者

Claims (4)

  1. コンピュータにより実施されるソースコード解析方法であって、
    入力部を介してソースコードを受信する処理と、
    該受信したソースコードから、関数および変数の参照関係を示すソースコード関連情報を抽出して、記憶部に格納する処理と、
    前記受信したソースコードとあらかじめ規定されたソースコードのコーディングルールに基づいて、前記ソースコードが前記コーディングルールに準拠しているかどうかを解析する処理と、
    該解析の結果、前記ソースコードが前記コーディングルールに準拠していない場合、該解析結果、前記ソースコードに記述されたファイル名および該当コーディングルール情報を前記記憶部に格納する処理と、
    前記記憶部からソースコード関連情報および前記解析結果に基づき、該解析結果の変更要否を判定する処理と、
    前記解析結果の変更が必要な場合に、前記判定処理の結果に基づき、前記記憶部に記憶されている前記解析結果を変更する処理と、
    前記記憶部に記憶されている出力制御情報に基づき前記解析結果を出力部に出力する処理と、
    を実施することを特徴とするソースコード解析方法。
  2. 前記解析結果を前記出力部に出力する処理を実施した後、前記入力部を介して解析結果の変更要求を受信する処理と、該変更要求に基づき、前記記憶部に記憶されている前記出力制御情報を更新する処理と、をさらに実施することを特徴とする請求項1に記載のソースコード解析方法。
  3. 入力部、出力部、制御部および記憶部を有するコンピュータであって、
    前記制御部は、
    前記入力部を介してソースコードを受信する手段と、
    該受信したソースコードから、関数および変数の参照関係を示すソースコード関連情報を抽出して、前記記憶部に格納する手段と、
    前記受信したソースコードとあらかじめ規定されたソースコードのコーディングルールに基づいて、前記ソースコードが前記コーディングルールに準拠しているかどうかを解析する手段と、
    該解析の結果、前記ソースコードが前記コーディングルールに準拠していない場合、該解析結果、前記ソースコードに記述されたファイル名および該当コーディングルール情報を前記記憶部に格納する手段と、
    前記記憶部からソースコード関連情報および前記解析結果に基づき、該解析結果の変更要否を判定する手段と、
    前記解析結果の変更が必要な場合に、前記判定処理の結果に基づき、前記記憶部に記憶されている前記解析結果を変更する手段と、
    前記記憶部に記憶されている出力制御情報に基づき前記解析結果を前記出力部に出力する手段と、
    を有することを特徴とするコンピュータ。
  4. 前記制御部は、前記解析結果を前記出力部に出力した後、前記入力部を介して解析結果の変更要求を受信する手段と、該変更要求に基づき、前記記憶部に記憶されている前記出力制御情報を更新する手段と、をさらに実施することを特徴とする請求項3に記載のコンピュータ。
JP2009045052A 2009-02-27 2009-02-27 ソースコード解析方法およびソースコード解析支援システム Expired - Fee Related JP5188421B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009045052A JP5188421B2 (ja) 2009-02-27 2009-02-27 ソースコード解析方法およびソースコード解析支援システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009045052A JP5188421B2 (ja) 2009-02-27 2009-02-27 ソースコード解析方法およびソースコード解析支援システム

Publications (2)

Publication Number Publication Date
JP2010198522A true JP2010198522A (ja) 2010-09-09
JP5188421B2 JP5188421B2 (ja) 2013-04-24

Family

ID=42823157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009045052A Expired - Fee Related JP5188421B2 (ja) 2009-02-27 2009-02-27 ソースコード解析方法およびソースコード解析支援システム

Country Status (1)

Country Link
JP (1) JP5188421B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013045307A (ja) * 2011-08-24 2013-03-04 Nec Corp 静的解析システム、静的解析結果表示方法及びプログラム
JP2014134962A (ja) * 2013-01-10 2014-07-24 Fujitsu Marketing Ltd ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム
WO2017176086A1 (ko) * 2016-04-08 2017-10-12 ㈜투비소프트 스크립트 기반 어플리케이션 개발방법
US11086604B2 (en) 2017-11-21 2021-08-10 Mitsubishi Electric Corporation Source code splitting device, source code analyzing device, source code splitting method, and computer readable medium

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869380A (ja) * 1994-08-29 1996-03-12 Fujitsu Ltd ソースプログラムチェック装置
JP2000347894A (ja) * 1999-06-09 2000-12-15 Fujitsu Ltd ソースプログラムチェック装置およびそのプログラム記録媒体
JP2006018735A (ja) * 2004-07-05 2006-01-19 Hitachi Software Eng Co Ltd コーディング規準遵守状況監視システム
JP2006092475A (ja) * 2004-09-27 2006-04-06 Hitachi Software Eng Co Ltd ソースコードインスペクションシステム
JP2008225519A (ja) * 2007-03-08 2008-09-25 Nec Corp 静的解析システム、サーバ、静的解析方法及びプログラム
JP4667386B2 (ja) * 2004-09-24 2011-04-13 富士通株式会社 業務モデル図作成支援プログラム、業務モデル図作成支援方法、および業務モデル図作成支援装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869380A (ja) * 1994-08-29 1996-03-12 Fujitsu Ltd ソースプログラムチェック装置
JP2000347894A (ja) * 1999-06-09 2000-12-15 Fujitsu Ltd ソースプログラムチェック装置およびそのプログラム記録媒体
JP2006018735A (ja) * 2004-07-05 2006-01-19 Hitachi Software Eng Co Ltd コーディング規準遵守状況監視システム
JP4667386B2 (ja) * 2004-09-24 2011-04-13 富士通株式会社 業務モデル図作成支援プログラム、業務モデル図作成支援方法、および業務モデル図作成支援装置
JP2006092475A (ja) * 2004-09-27 2006-04-06 Hitachi Software Eng Co Ltd ソースコードインスペクションシステム
JP2008225519A (ja) * 2007-03-08 2008-09-25 Nec Corp 静的解析システム、サーバ、静的解析方法及びプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013045307A (ja) * 2011-08-24 2013-03-04 Nec Corp 静的解析システム、静的解析結果表示方法及びプログラム
JP2014134962A (ja) * 2013-01-10 2014-07-24 Fujitsu Marketing Ltd ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム
WO2017176086A1 (ko) * 2016-04-08 2017-10-12 ㈜투비소프트 스크립트 기반 어플리케이션 개발방법
US11086604B2 (en) 2017-11-21 2021-08-10 Mitsubishi Electric Corporation Source code splitting device, source code analyzing device, source code splitting method, and computer readable medium

Also Published As

Publication number Publication date
JP5188421B2 (ja) 2013-04-24

Similar Documents

Publication Publication Date Title
US8627289B2 (en) Detecting configuration problems in an eclipse-based software application
JP5775829B2 (ja) ソフトウェアの構造可視化プログラムおよびシステム
US9201757B2 (en) Offline type checking in programming languages
US8904352B2 (en) Systems and methods for processing source code during debugging operations
US10437815B2 (en) Identification of code object dependencies
CA2956207C (en) Program code comparison and reporting
JP2008191963A (ja) ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
JP5188421B2 (ja) ソースコード解析方法およびソースコード解析支援システム
US9760470B2 (en) Device, method, and program analysis of new source code to be added to execution program to check for bug
CN106708897B (zh) 一种数据仓库质量保障方法、装置和系统
EP3570173B1 (en) Equivalence verification apparatus and equivalence verification program
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
JP4915362B2 (ja) 静的検証ツールのアノテーション自動挿入方法
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
US20150082278A1 (en) Clone detection method and clone function commonalizing method
JP5741265B2 (ja) プログラム改善支援システム
JP2016057715A (ja) 図形式プログラム解析装置
US20220244938A1 (en) Method and system for code maintenance
CN111666216B (zh) 一种智能合约分析方法及装置
JP2008020972A (ja) ソフトウエア解析システム
US9280521B2 (en) Drawing support apparatus, supporting method and drawing support program
JP2010191580A (ja) ファイル管理方法、システム、及び、プログラム
CN112214263A (zh) 数据库脚本的调度方法和装置以及存储介质
CN114924762A (zh) 一种组件升级适配检测方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121009

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121205

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130122

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

Free format text: PAYMENT UNTIL: 20160201

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20160201

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees