JP2009230420A - ソースコード品質管理装置 - Google Patents
ソースコード品質管理装置 Download PDFInfo
- Publication number
- JP2009230420A JP2009230420A JP2008074372A JP2008074372A JP2009230420A JP 2009230420 A JP2009230420 A JP 2009230420A JP 2008074372 A JP2008074372 A JP 2008074372A JP 2008074372 A JP2008074372 A JP 2008074372A JP 2009230420 A JP2009230420 A JP 2009230420A
- Authority
- JP
- Japan
- Prior art keywords
- analysis
- data
- source code
- analysis result
- static
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】ソースコードを複数の静的解析ツールで静的解析を行い、解析結果をわかりやすくまとめる。
【解決手段】夫々1つ以上の解析項目についてソースコードの静的解析を行って解析項目毎の解析結果値を含む解析結果データを夫々出力する複数の静的解析部と、複数の静的解析部に1つのソースコードの静的解析を実行させる制御部と、複数の静的解析部が出力した夫々の解析結果データから解析結果データ毎に予め定められた解析項目の解析結果値を抽出して1つのファイルにまとめて集約データとして出力する解析データ集約部と、を備える。
【選択図】 図1
【解決手段】夫々1つ以上の解析項目についてソースコードの静的解析を行って解析項目毎の解析結果値を含む解析結果データを夫々出力する複数の静的解析部と、複数の静的解析部に1つのソースコードの静的解析を実行させる制御部と、複数の静的解析部が出力した夫々の解析結果データから解析結果データ毎に予め定められた解析項目の解析結果値を抽出して1つのファイルにまとめて集約データとして出力する解析データ集約部と、を備える。
【選択図】 図1
Description
本発明は、プログラムのソースコードを静的解析するソースコード品質管理装置に関するものである。
ソフトウェアの開発において、ソースコードの品質を向上させるための手段として、静的解析が実施される場合がある。静的解析とは、ソースコードの内容を解析し、ソフトウェアのバグとなりえる要素を発見したり、プログラムの設計品質を計測したりするものである。静的解析は、実際にプログラムを動かす必要のある通常のテスト(動的解析)と異なり、ソフトウェアの品質に影響を及ぼす要因の早期発見が可能であるため、近年その重要性が注目されてきている。
実際に静的解析を行う手段として、人手によるもののほかに、静的解析を自動実行するためのツール(静的解析ツール)を利用する方法がある。静的解析ツールとしては、例えば、構文解釈によって高頻度で出現する箇所を予測し、静的解析の精度を向上させるソースコード問題予測プログラムが特許文献1に開示されている。また、動的解析を実行しなければ解析できない処理についても静的に解析できる静的解析装置が特許文献2に開示されている。
上記特許文献1および2に示すような静的解析ツールを含め、静的解析ツールには、静的解析の目的(バグ要因の早期発見、コーディング規約のチェック、設計品質の計測など)にあわせ、さまざまな種類のものが存在している。ソフトウェアの開発者は、静的解析の目的に合わせ、これらのツールを使い分けたり、複数使用したりする必要がある。
しかしながら、これらの静的解析ツールが出力する解析結果は、一般的に、熟練者でないと必要な情報を取り出すことが難しいほど情報量が多い。このような静的解析ツールを複数使用する場合、大量の情報を含む解析レポートが複数出力されることになってしまう。結果として、ソースコードのどの部分に問題があるのか、統合的に判断するのは難しくなるという問題点があった。
本発明は、上記に鑑みてなされたものであって、ソースコードを複数の静的解析ツールで静的解析を行い、解析結果をわかりやすくまとめるソースコード品質管理装置を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、夫々1つ以上の解析項目についてソースコードの静的解析を行って前記解析項目毎の解析結果値を含む解析結果データを夫々出力する複数の静的解析部と、前記複数の静的解析部に1つのソースコードの静的解析を実行させる制御部と、前記複数の静的解析部が出力した夫々の解析結果データから解析結果データ毎に予め定められた解析項目の解析結果値を抽出して1つのファイルにまとめて集約データとして出力する解析データ集約部と、を備えることを特徴とする。
この発明によれば、ソースコードを複数の静的解析部に静的解析させ、得られた複数の解析結果データから予め定められた解析項目の解析結果値を抽出して1つのファイルにまとめて出力するので、ソースコードを複数の静的解析ツールで静的解析を行い、解析結果をわかりやすくまとめるソースコード品質管理装置を得ることができる。
以下に、本発明にかかるソースコード品質管理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態.
図1は、本実施の形態のソースコード品質管理装置の構成を説明する図である。
図1は、本実施の形態のソースコード品質管理装置の構成を説明する図である。
図1において、ソースコード品質管理装置1は、静的解析の設定パラメータなど動作に必要なパラメータを設定する設定ファイル11とテキストエディタや統合開発環境などで作成された静的解析の対象であるソースコード12とを入力として受け付けて、受け付けたソースコード12の静的解析を、ソースコード品質管理装置1の全体の動作を制御して実行させる制御部2と、実際に夫々静的解析を実行する複数の(ここでは3つの)静的解析ツールである、第一の静的解析部3a、第二の静的解析部3b、および第三の静的解析部3cと、第一〜第三の静的解析部3a〜3cが出力する解析結果データから必要な情報を集約する解析データ集約部5と、解析データ集約部5が過去に集約した集約データを一覧表にまとめる一覧表作成部6と、解析結果データ、集約データ、および一覧表を蓄積するデータ蓄積部4と、を備える。
ここで、静的解析ツールである第一〜第三の静的解析部3a〜3cは、ソースコード12の開発者が特別に開発するものである必要はなく、既成の静的解析ツールであってよい。現在一般的に使用されている静的解析ツールの多くは、ディスプレイ上ではテキスト形式やグラフィカルユーザインターフェース(GUI)形式で表示し、解析結果データの出力ファイルをテキストデータのほか、XMLデータ、HTMLデータ、およびCSVデータなどで出力することができる。本実施の形態においては、設定ファイル11の記述内容によって、これらの形式のうちから第一〜第三の静的解析部3a〜3cが出力する解析結果データの出力形式が規定されるようにしている。
設定ファイル11は、各静的解析部3a〜3cの解析結果データの出力形式、出力先のファイルパス、ファイル名、静的解析ルール、後述する集約データの出力形式、出力先のファイルパス、およびファイル名などが記述されており、これらは制御部2によって読み込まれることにより規定される。静的解析ルールとは、各静的解析部3a〜3cの動作に必要な初期パラメータ、各種設定項目、および各静的解析部3a〜3cに解析を実行させる解析項目の設定などを含む。設定ファイル11の記述形式は特定の形式に限定されるものではなく、例えばXML形式など一般的に流通している記述形式などであってよい。
次に、以上のように構成される本発明の実施の形態のソースコード品質管理装置1の動作を説明する。図2は、ソースコード品質管理装置1の全体の動作を説明するフローチャートである。
図2において、設定ファイル11および静的解析対象のソースコード12が入力され、制御部2は設定ファイル11に記述される設定内容を反映させる(ステップS1)。そして、制御部2は、入力されたソースコード12を対象とした静的解析を設定ファイル11に記述される静的解析ルールに沿って第一〜第三の静的解析部3a〜3cに逐次実行させ、静的解析を実行した第一〜第三の静的解析部3a〜3cは夫々解析結果データを設定ファイル11において記述されている出力形式、ファイル名、およびファイルパスに従って出力してデータ蓄積部4に格納する(ステップS2)。
図3は、第一〜第三の静的解析部3a〜3cが静的解析を行う様子を説明する図である。第一の静的解析部3a、第二の静的解析部3b、および第三の静的解析部3cは、夫々ソースコード12の静的解析を行い、解析結果データとして、夫々第一の解析結果13a、第二の解析結果13b、および第三の解析結果13cを出力する。第一の解析結果13aは、解析項目A1、解析項目A2、および解析項目A3に関する解析結果値を含んでいる。同様に、第二の解析結果13bは、解析項目B1、解析項目B2、および解析項目B3の解析結果値を、第三の解析結果13cは、解析項目C1、解析項目C2、および解析項目C3の解析結果値を含んでいるとする。
次に、図2において、解析データ集約部5は、制御部2を通じて設定ファイル11に記述されている第一〜第三の解析結果13a〜13cのデータ蓄積部4におけるファイルパス及びファイル名を参照して、データ蓄積部4に格納されている解析結果13a〜13cを読み込み、各解析結果データ13a〜13cからソースコード12全体の品質把握に必要な解析項目の解析結果値を抽出する(ステップS3)。ここで、どの解析項目の解析結果値を抽出するかは予め設定されているものとする。その設定方法は特に限定しないが、解析データ集約部5が設定された項目として保持するようにしてもよいし、設定ファイル11に記述され、該設定ファイル11がステップS2にて制御部2に読み込まれることにより設定されるようにしてもよい。
そして、解析データ集約部5は、この抽出した解析結果値をひとつのファイルに集約して記述し、集約データとして、設定ファイル11に記述されている出力形式、ファイル名、および出力先のファイルパスに従って出力する(ステップS4)。ここで、解析データ集約部5は、集約データを作成するとき、作成した時間がわかるように該集約データに時間情報を付与する。設定ファイル11にて指定可能な集約データの形式は特定の形式に限定するものではなく、一般的に使用されている形式であってよい。例えば、XLS形式やXML形式のファイルのような形式を設定ファイル11にて指定するようにし、解析データ集約部5は、抽出した解析結果値を記述する際は順次上位の行から書き込んでいくようにするとよい。
ここで、図4を用いて、図2におけるステップS3およびステップS4の動作をさらに詳しく説明する。図4において、まず、第一〜第三の解析結果13a〜13cのデータ蓄積部4におけるファイルパス、及びファイル名を参照し、解析データ集約部5は、それらを基に、データ蓄積部4から第一〜第三の解析結果13a〜13cのうちのひとつを取得する(ステップS11)。
続いて、解析データ集約部5は、取得した解析結果から、データの集約に必要となる予め設定されている解析項目の解析結果値を取得する(ステップS12)。ここで、値の取得方法は解析結果データのファイル形式によって異なることが考えられる。例えば、解析結果データがXML形式で出力されている場合は該当解析項目のタグを解析することで、CSV形式やXLS形式などの表データの形式で出力されている場合は該当解析項目の行番号と列番号を解析することで、取得する解析項目の解析結果値が記述されている位置を特定するようにするとよい。
続いて、解析データ集約部5は、第一〜第三の解析結果13a〜13cを全て取得したか否かを判定する(ステップS13)。第一〜第三の解析結果13a〜13cのうち取得していない解析結果がある場合(ステップS13、No)、解析データ集約部5は、ステップS11に移行してまだ取得していない解析結果を取得する。第一〜第三の解析結果13a〜13cを全て取得した場合(ステップS13、Yes)、解析データ集約部5は、これまでに抽出した解析結果値を解析項目と対応付けて1つのデータにまとめた集約データを作成し、データ蓄積部4に格納する(ステップS14)。
図5に、解析データ集約部5が集約データを作成するまでの動作をより具体的に説明する図を示す。図5において、解析データ集約部5が、設定ファイル11に記載される情報を基に、第一〜第三の解析結果13a〜13cを取得し、第一の解析結果13aから解析項目A1の解析結果値を抽出し、第二の解析結果13bから解析項目B2および解析項目B3の解析結果値を抽出し、第三の解析結果13cから解析項目C3の解析結果値を抽出する。解析データ集約部5は、これらの抽出した解析結果値から集約データ14を作成し、この集約データ14をデータ蓄積部4に格納する。集約データ14は、のファイル名は、「ファイル名YYYYMMDD.拡張子」(YYYYMMDDは年月曰)といったように、設定ファイル11にて指定される集約データのファイル名に作成した日時を付記することにより、集約データ14に時間情報を付与している。
図2に戻り、ステップS4の後、一覧表作成部6が、過去に作成してデータ蓄積部4に格納されている集約データ14を一覧形式の表にした一覧表を作成し、該一覧表をデータ蓄積部4に格納し(ステップS5)、本実施の形態のソースコード品質管理装置1の動作が終了となる。
ここで、一覧表作成部6が一覧表を作成する動作をさらに詳しく説明する。図6に、一覧表作成部6が一覧表を作成する動作を説明するフローチャートを示す。
図6において、一覧表作成部6は、設定ファイル11に記述されている集約データ14のファイル名およびファイルパスを取得し、該取得した情報を基に、データ蓄積部4に格納されている集約データ14を取得する。このとき、複数の集約データ14が同一ファイルパス上に存在した場合、作成した時間が最も古い集約データ14から取得する(ステップS21)。そして、一覧表作成部6は、取得した集約データ14の各解析項目の解析結果値を読み取る(ステップS22)。そして、一覧表作成部6は、取得した各解析項目の解析結果値を一覧表の該当する箇所に転記する(ステップS23)。そして、一覧表作成部6は、前記する指定されている同一ファイルパス上にある全ての集約データ14を取得したか否かを判定し(ステップS24)、全ての集約データ14を取得し終わっていない場合(ステップS24、No)、ステップS21に移行し、次の集約データ14についてステップS21〜ステップS23の動作を行う。このとき、一覧表作成部6は、時系列順に各解析項目の解析結果値が並ぶようにする。全ての集約データ14を取得し終わった場合(ステップS24、Yes)、一覧表作成部6は、作成した一覧表をデータ蓄積部4に格納し、動作を終了する。
この一覧表作成部6による動作を、図7を用いてより具体的に説明する。図7は、一覧表作成部6が一覧表を作成する動作を具体的に説明する図である。
図7において、一覧表作成部6は、設定ファイル11に記述されている集約データ14のファイル名およびファイルパスに基づいて作成した時間の異なる複数の集約データ14を古い集約データ14から順次取得し、取得した集約データ14に含まれる各項目の値を一覧表15に転記してゆく。ここでは、一覧表15の行が項目名を表し、列が日付を表すとし、古い日付の集約データ14の各項目の値が左側に来るように値が転記されている。このようにして作成された一覧表15は、転記終了後にデータ蓄積部4に格納される。
このように作成された一覧表15は、ソースコードの複数の静的解析ツールによる静的解析結果値が時系列順に配列されているので、使用者はソースコードの品質の推移を横断的に把握することができる。
さらに、一覧表作成部6がこの一覧表15を作成するとき、一覧表15の各解析項目の値を品質指標を表す数値に変換し、時系列とこの品質指標値との関係をグラフ化した図8に示すような品質推移グラフを作成するようにしてもよい。このように一覧表15から品質推移グラフを作成すると、一覧表15よりも使用者にとってより直感的に品質指標値の推移が理解できるという効果が得られる。
以上のように、本実施の形態によれば、ソースコードを複数の静的解析部に静的解析させ、得られた複数の解析結果データから予め定められた解析項目の解析結果値を抽出して1つのファイルにまとめて出力するので、ソースコードを複数の静的解析ツールで静的解析を行い、解析結果をわかりやすくまとめるソースコード品質管理装置を得ることができる。
以上のように、本発明にかかるソースコード品質管理装置は、プログラムのソースコードを静的解析するソースコード品質管理装置に適用して好適である。
1 ソースコード品質管理装置
2 制御部
3a、3b、3c 静的解析部
4 データ蓄積部
5 解析データ集約部
6 一覧表作成部
11 設定ファイル
12 ソースコード
13a、13b、13c 解析結果
14 集約データ
15 一覧表
2 制御部
3a、3b、3c 静的解析部
4 データ蓄積部
5 解析データ集約部
6 一覧表作成部
11 設定ファイル
12 ソースコード
13a、13b、13c 解析結果
14 集約データ
15 一覧表
Claims (3)
- 夫々1つ以上の解析項目についてソースコードの静的解析を行って前記解析項目毎の解析結果値を含む解析結果データを夫々出力する複数の静的解析部と、
前記複数の静的解析部に1つのソースコードの静的解析を実行させる制御部と、
前記複数の静的解析部が出力した夫々の解析結果データから解析結果データ毎に予め定められた解析項目の解析結果値を抽出して1つのファイルにまとめて集約データとして出力する解析データ集約部と、
を備えることを特徴とするソースコード品質管理装置。 - 前記解析データ集約部が出力した集約データを蓄積するデータ蓄積部と、
前記データ蓄積部に蓄積されている複数の集約データを取得して、前記取得した全ての集約データの解析結果値を前記予め定められた解析項目毎に列記した一覧表を作成する一覧表作成部と、
をさらに備え、
前記解析データ集約部は、集約データを出力する際に該集約データを出力するときの時間情報を該集約データに付与し、
前記一覧表作成部は、前記取得した集約データに付与されている時間情報に基づいて前記予め定められた解析項目の解析結果値を時系列順に列記する、
ことを特徴とする請求項1に記載のソースコード品質管理装置。 - 前記一覧表作成部は、作成した一覧表に記載される各解析結果値から、品質の良し悪しを数値で表現する品質指標値を夫々導出し、時系列と前記導出した夫々の品質指標値との関係をグラフ化し、品質遷移グラフとして出力する、
ことを特徴とする請求項2に記載のソースコード品質管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008074372A JP2009230420A (ja) | 2008-03-21 | 2008-03-21 | ソースコード品質管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008074372A JP2009230420A (ja) | 2008-03-21 | 2008-03-21 | ソースコード品質管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009230420A true JP2009230420A (ja) | 2009-10-08 |
Family
ID=41245732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008074372A Pending JP2009230420A (ja) | 2008-03-21 | 2008-03-21 | ソースコード品質管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009230420A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833504A (zh) * | 2010-04-19 | 2010-09-15 | 张翀斌 | 一种基于模型检验的时序软件质量缺陷检测方法及系统 |
US20110154120A1 (en) * | 2009-12-18 | 2011-06-23 | Electronics And Telecommunications Research Institute | Apparatus and system for integratedly managing static analysis tools |
JP2012146183A (ja) * | 2011-01-13 | 2012-08-02 | Nec Personal Computers Ltd | 情報処理装置、方法及びプログラム |
JP2014089704A (ja) * | 2012-10-11 | 2014-05-15 | Tata Consultancy Services Ltd | ソフトウェアアプリケーションのコンプライアンス検査および詳細な解析を提供するためのシステムおよび方法 |
CN107357733A (zh) * | 2017-07-17 | 2017-11-17 | 万帮充电设备有限公司 | 提高代码质量的方法及装置 |
-
2008
- 2008-03-21 JP JP2008074372A patent/JP2009230420A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110154120A1 (en) * | 2009-12-18 | 2011-06-23 | Electronics And Telecommunications Research Institute | Apparatus and system for integratedly managing static analysis tools |
JP2011129121A (ja) * | 2009-12-18 | 2011-06-30 | Korea Electronics Telecommun | 静的分析道具統合管理装置及びシステム |
CN101833504A (zh) * | 2010-04-19 | 2010-09-15 | 张翀斌 | 一种基于模型检验的时序软件质量缺陷检测方法及系统 |
CN101833504B (zh) * | 2010-04-19 | 2015-04-15 | 张翀斌 | 一种基于模型检验的时序软件质量缺陷检测方法及系统 |
JP2012146183A (ja) * | 2011-01-13 | 2012-08-02 | Nec Personal Computers Ltd | 情報処理装置、方法及びプログラム |
JP2014089704A (ja) * | 2012-10-11 | 2014-05-15 | Tata Consultancy Services Ltd | ソフトウェアアプリケーションのコンプライアンス検査および詳細な解析を提供するためのシステムおよび方法 |
CN107357733A (zh) * | 2017-07-17 | 2017-11-17 | 万帮充电设备有限公司 | 提高代码质量的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI552075B (zh) | 將桌面應用程式轉換成網路應用程式 | |
JP5991695B2 (ja) | 文書オブジェクトモデルツリーとカスケーディング・スタイル・シートとが取り出されることが可能なアプリケーションのソースコードを変更することによって生じる影響を検知するための方法、並びに、当該影響を検知するためのコンピュータ及びそのコンピュータ・プログラム | |
WO2018048791A1 (en) | Techniques for automatically generating documentation for computer programs | |
JP2015043198A (ja) | 解析システム、解析方法および解析プログラム | |
US20080072209A1 (en) | Systems, method and computer program products for tracking and viewing changes to information stored in a data structure | |
US10303751B1 (en) | System and method for interaction coverage | |
JP2007323573A (ja) | 機能テスト・スクリプト生成装置 | |
US20220350857A1 (en) | Methods and systems for browser extension used to generate relative xpath, absolute xpath and/or css selectors | |
US20200371754A1 (en) | Use and advancements of assistive technology in automation for the visually-impaired workforce | |
US10365995B2 (en) | Composing future application tests including test action data | |
JP2009230420A (ja) | ソースコード品質管理装置 | |
CN117280321A (zh) | 在版本控制系统中的变化估计 | |
JP6183636B2 (ja) | ソースコード検査装置 | |
US10157057B2 (en) | Method and apparatus of segment flow trace analysis | |
US11119899B2 (en) | Determining potential test actions | |
US9165007B2 (en) | Log message optimization to ignore or identify redundant log messages | |
JP2011164783A (ja) | 動作検証装置、動作検証方法および動作検証プログラム | |
JP2011060062A (ja) | システム仕様変更の支援システム、支援方法及び支援プログラム | |
US20140245159A1 (en) | Transport script generation based on a user interface script | |
JP2007034568A (ja) | ソフトウェア開発プロジェクト管理システム | |
CN105359111A (zh) | 用户界面检查方法、设备及程序 | |
JP7514943B2 (ja) | 複雑な物理的機器からのログの解析のための手法 | |
Dostál et al. | A research framework for performing user studies and rapid prototyping of intelligent user interfaces under the OpenOffice. org suite | |
KR102052338B1 (ko) | 테스트케이스 설계 정보의 추적 분석을 위한 시각화 방법, 테스트케이스 생성 장치 및 컴퓨터 판독가능 기록매체 | |
Härtull | Implementation of an Application for Analyzing and Visualizing Benchmark Results for Optimization Solvers |