(57)【特許請求の範囲】
【請求項１】
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因が分類された情報を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、
過去の不具合の原因が分類された情報を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、
前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を算出し、
前記第１の不具合原因種類に対応する前記第１の警告種類に、算出した前記個数に応じて重み付けを行った重み付け情報を生成する重み付け部と、
ソースコードの静的解析の結果である解析結果情報に含まれる複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類を、生成した前記重み付け情報に基づき、点数化する点数化部と、
を備える点数化装置。
【請求項２】
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因の種類を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、過去の不具合の原因の種類を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を決定し、前記第１の不具合原因種類に対応する前記第１の警告種類に、決定した前記個数に応じて点数を与え、前記第１の警告種類と前記点数とが対応付けられた重み付け情報を生成する重み付け部と、
ソースコードの静的解析の結果である複数の第２の警告種類を含む解析結果情報の前記複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類に、前記第１の警告種類に与えられた点数を与える点数化部と、
を備える点数化装置。
【請求項３】
前記解析結果情報は、
複数の前記第２の警告種類のそれぞれと、ソースコードを示すファイル名とが対応付けられており、
前記点数化部は、
前記ファイル名が同一である前記第２の警告種類の点数の合計を計算する請求項１または請求項２に記載の点数化装置。
【請求項４】
前記点数化部は、
不具合の個数と点数とが対応付けられた閾値情報を使用して、前記重み付け情報を生成する請求項１から請求項３のいずれか一項に記載の点数化装置。
【請求項５】
点数化装置は、さらに、
メモリと、
前記不具合情報を取得し、取得した前記不具合情報を前記メモリに格納する不具合情報取得部と、
を備え、
前記重み付け部は、
前記不具合情報取得部が取得した前記不具合情報を使用することにより、前記重み付け情報を生成する請求項１から請求項４のいずれか一項に記載の点数化装置。
【請求項６】
コンピュータに、
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因が分類された情報を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、
過去の不具合の原因が分類された情報を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、
前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を算出し、
前記第１の不具合原因種類に対応する前記第１の警告種類に、算出した前記個数に応じて重み付けを行った重み付け情報を生成する処理、
ソースコードの静的解析の結果である解析結果情報に含まれる複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類を、生成した前記重み付け情報に基づき、点数化する処理、
を実行させるための点数化プログラム。
【請求項７】
コンピュータに、
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因の種類を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、過去の不具合の原因の種類を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を決定し、前記第１の不具合原因種類に対応する前記第１の警告種類に、決定した前記個数に応じて点数を与え、前記第１の警告種類と前記点数とが対応付けられた重み付け情報を生成する処理、
ソースコードの静的解析の結果である複数の第２の警告種類を含む解析結果情報の前記複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類に、前記第１の警告種類に与えられた点数を与える処理、
を実行させるための点数化プログラム。
【請求項８】
コンピュータが、
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因が分類された情報を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、
過去の不具合の原因が分類された情報を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、
前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を算出し、
前記第１の不具合原因種類に対応する前記第１の警告種類に、算出した前記個数に応じて重み付けを行った重み付け情報を生成し、
ソースコードの静的解析の結果である解析結果情報に含まれる複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類を、生成した前記重み付け情報に基づき、点数化する、
点数化方法。
【請求項９】
コンピュータが、
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因の種類を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、過去の不具合の原因の種類を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を決定し、前記第１の不具合原因種類に対応する前記第１の警告種類に、決定した前記個数に応じて点数を与え、前記第１の警告種類と前記点数とが対応付けられた重み付け情報を生成し、
ソースコードの静的解析の結果である複数の第２の警告種類を含む解析結果情報の前記複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類に、前記第１の警告種類に与えられた点数を与える、
点数化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソースコードの静的解析の結果に点数を与える、点数化装置、点数化プログラム及び点数化方法に関する。
【背景技術】
【０００２】
静的解析は、ソースコードを解析し、システム停止のような不具合になる可能性のある箇所を抽出する技術である。従来では、手動で作成された重み付けを利用して、静的解析の警告を絞ることは行われている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−０５９７７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
静的解析では、メモリバッファオーバーフロー及びメモリリークのような不具合は、検出できる。しかし、従来技術では、軽微な不具合も含め、不具合の警告が大量に出力される。このため、開発中の製品において、不具合になる可能性の高い警告を把握することは、困難である。【０００５】
この発明は、ソースコードの静的解析の結果から、不具合になる可能性の高い警告を抽出する技術の提供を目的とする。
【課題を解決するための手段】
【０００６】
この発明の点数化装置は、
ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因の種類を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する対応情報と、過去の不具合の原因の種類を示す複数の第２の不具合原因種類を有する不具合情報とを使用することにより、前記レコードの前記第１の不具合原因種類に対応する前記第２の不具合原因種類の個数を決定し、前記第１の不具合原因種類に対応する前記第１の警告種類に、決定した前記個数に応じて点数を与え、前記第１の警告種類と前記点数とが対応付けられた重み付け情報を生成する重み付け部と、
ソースコードの静的解析の結果である複数の第２の警告種類を含む解析結果情報の前記複数の第２の警告種類のうち、前記重み付け情報の前記第１の警告種類に対応する前記第２の警告種類に、前記第１の警告種類に与えられた点数を与える点数化部と、
を備える。
【発明の効果】
【０００７】
この発明によれば、ソースコードの静的解析の結果から、不具合になる可能性の高い警告を抽出する技術を提供できる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１の図で、点数化装置の機能ブロック図。
【図２】実施の形態１の図で、点数化装置のハードウェア構成を示す図。
【図３】実施の形態１の図で、点数化装置の動作を示すフローチャート。
【図４】実施の形態１の図で、解析結果情報を示す図。
【図５】実施の形態１の図で、不具合情報を示す図。
【図６】実施の形態１の図で、対応情報を示す図。
【図７】実施の形態１の図で、閾値情報を示す図。
【図８】実施の形態１の図で、重み付け情報を示す図。
【図９】実施の形態１の図で、ステップＳ１２の内容を示すフローチャート。
【図１０】実施の形態１の図で、ステップＳ１２の内容を説明する図。
【図１１】実施の形態１の図で、ステップＳ１３の内容を説明する図。
【図１２】実施の形態１の図で、点数化情報を示す図。
【図１３】実施の形態１の図で、変形例１である点数化装置の機能ブロック図。
【図１４】実施の形態１の図で、変形例１である点数化装置のハードウェア構成図。
【図１５】実施の形態１の図で、変形例２の回路構成を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
図１は、ソースコードに点数を与える点数化装置１０の機能ブロックである。点数化装置１０にはソースコードの静的解析結果３１が入力され、点数化装置１０は点数化情報１３ａを表示装置に表示する。
【００１０】
＊＊＊構成の説明＊＊＊
図１に示すように、点数化装置１０は、機能要素として、静的解析結果取得部１１、重み付け部１２、点数化部１３及び表示処理部１４を有する。また、点数化装置１０は、記憶部として、解析結果情報記憶部２１、点数化情報記憶部２２、不具合情報記憶部２３、対応情報記憶部２４及び重み付け情報記憶部２５を有する。
【００１１】
図２は、コンピュータである点数化装置１０のハードウェア構成を示す。点数化装置１０は、ハードウェアとして、プロセッサ９１、メモリ９２、入出力インタフェース９３、表示装置９４及び通信インタフェース９５を有する。プロセッサ９１は、信号線９６を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１２】
点数化装置１０の機能要素である、静的解析結果取得部１１、重み付け部１２、点数化部１３及び表示処理部１４との機能は、ソフトウェアにより実現される。
【００１３】
プロセッサ９１は、点数化プログラムを実行する装置である。点数化プログラムは、静的解析結果取得部１１、重み付け部１２、点数化部１３及び表示処理部１４との機能を実現するプログラムである。プロセッサ９１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１の具体例は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１４】
メモリ９２は、データを記憶する記憶装置である。解析結果情報記憶部２１、点数化情報記憶部２２、不具合情報記憶部２３、対応情報記憶部２４及び重み付け情報記憶部２５はメモリ９２によって実現される。メモリ９２の具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。また、メモリ９２の具体例は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）のような、補助記憶装置でもよい。メモリ９２は、プロセッサ９１の演算結果を保持する。
入出力インタフェース９３には、データ及び結果を入出力するための装置が接続される。データ及び結果を入出力するための装置の例としては、マウス及びキーボードである。
表示装置９４は表示処理部１４によって制御されて、情報を表示する。
通信インタフェース９５は、ネットワークを介して他の装置と通信を行うためのインタフェース装置である。通信インタフェース９５の具体例は通信ボードである。
【００１５】
点数化プログラムは、プロセッサ９１に読み込まれ、プロセッサ９１によって実行される。メモリ９２には、点数化プログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１は、ＯＳを実行しながら、点数化プログラムを実行する。
【００１６】
点数化装置１０は、プロセッサ９１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、点数化プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１と同じように、点数化プログラムを実行する装置である。
【００１７】
点数化プログラムによって利用、処理または出力されるデータ、情報、信号値及び変数値は、メモリ９２、または、プロセッサ９１内のレジスタあるいはキャッシュメモリに記憶される。点数化プログラムは、静的解析結果取得部１１、重み付け部１２、点数化部１３及び表示処理部１４の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させるプログラムである。また、点数化方法は、コンピュータである点数化装置１０が、点数化プログラムを実行することにより行われる方法である。
【００１８】
点数化プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
【００１９】
静的解析結果取得部１１は、静的解析結果３１を取得する。静的解析結果取得部１１は、取得した静的解析結果３１から、警告種類、ファイル名、行数を抽出して、解析結果情報１１ａを生成する。静的解析結果取得部１１は、解析結果情報１１ａを解析結果情報記憶部２１へ格納する。
【００２０】
不具合情報記憶部２３は、不具合情報３２を格納している。対応情報記憶部２４は、解析結果情報１１ａの警告種類と、不具合情報３２の不具合原因種類との対応を示す対応情報３３を格納している。
重み付け部１２は、不具合情報記憶部２３から不具合情報３２を取得し、対応情報記憶部２４から、対応情報３３及び閾値情報３４を取得する。重み付け部１２は、警告種類の重み付け情報１２ａを生成し、重み付け情報１２ａを、重み付け情報記憶部２５へ格納する。
【００２１】
点数化部１３は、解析結果情報記憶部２１から解析結果情報１１ａを取得し、重み付け情報記憶部２５から警告種類の重み付け情報１２ａを取得する。点数化部１３は点数化情報１３ａを生成し、点数化情報記憶部２２へ格納する。
【００２２】
表示処理部１４は、点数化情報記憶部２２に記憶された点数化情報１３ａを表示する。
【００２３】
＊＊＊動作の説明＊＊＊
図３は、点数化装置１０の動作を示すフローチャートである。点数化装置１０の動作は、点数化方法に相当する。点数化装置１０の動作は、点数化プログラムの処理に相当する。
【００２４】
図３を用いて、点数化装置１０の処理を説明する。点数化装置１０はステップＳ１１からステップＳ１４の処理を実行する。ステップＳ１１は、静的解析結果３１の取得処理である。ステップＳ１２は、重み付け情報１２ａを生成する処理である。ステップＳ１３は、点数化情報１３ａを生成する処理である。ステップＳ１４は、点数化情報１３ａを表示する処理である。
【００２５】
＜ステップＳ１１＞
静的解析結果取得部１１は、入出力インタフェース９３または通信インタフェース９５を介して、静的解析結果３１を取得する。静的解析結果取得部１１は、静的解析結果３１を解析結果情報１１ａに変換し、解析結果情報１１ａを解析結果情報記憶部２１に格納する。
【００２６】
静的解析結果３１とは、ソースコードの静的解析の結果である。静的解析結果３１は、不具合の可能性のある種類を示す警告種類、不具合の可能性のある箇所を含むソースコードのファイルを示すファイル名、及び不具合の可能性のある箇所の行数を示す「行数」を含む。
【００２７】
図４は、静的解析結果取得部１１が生成する解析結果情報１１ａを示す。解析結果情報１１ａは、静的解析結果３１が表形式に変換された情報である。解析結果情報１１ａは、警告種類、ファイル名及び行数を含む。警告種類、ファイル名及び行数に関して、１行目は、バッファーオーバーフロー、ａ．ｃ、１４３２であり、２行目は、初期化なし、ａ．ｃ、２５であり、２行目は、初期化なし、ｃ．ｃ、１５４である。
【００２８】
＜ステップＳ１２＞
重み付け部１２は、不具合情報記憶部２３から不具合情報３２を読み込み、対応情報記憶部２４から、対応情報３３及び閾値情報３４を読み込む。重み付け部１２は、重み付け情報１２ａを生成する。重み付け部１２は生成した重み付け情報１２ａを、重み付け情報記憶部２５へ格納する。
具体的な処理は、以下のようである。
【００２９】
図５は、不具合情報３２を示す。不具合情報３２は、ソースコードを実行することで発生した過去の不具合の実績を示す情報である。不具合情報３２は、過去の不具合が表形式で示されている。不具合情報３２は、複数の不具合原因種類に対して、詳細な内容が記載されている。不具合原因種類とは、不具合の原因が分類された情報である。１行目の不具合原因種類は、存在しない配列インデックス参照である。２行目の不具合原因種類は、存在しない配列インデックス書込である。３行目の不具合原因種類は、意図しない値の参照である。１行目の詳細は、配列Ｘの１０番目を参照したが、配列Ｘは９番目までしかなかったため、停止したという内容である。２行目の詳細は、配列Ｙの１５番目へ書込したが、配列Ｙは１１番目までしかなかったため、停止したという内容である。３行目の詳細は、意図しない値が入った変数を引数に取った関数が例外を起こし、停止したという内容である。
【００３０】
図６は、対応情報３３を示す。対応情報３３は、解析結果情報１１ａと不具合情報３２とを対応付けた情報である。具体的には、対応情報３３は、解析結果情報１１ａの警告種類と、不具合情報３２の不具合原因種類とを、対応付けている。警告種類及び不具合原因種類に関して、１行目は、バッファーオーバーフロー及び存在しない配列インデックス参照である。２行目は、初期化なし及び意図しない値の参照である。２行目は、バッファーオーバーフロー及び存在しない配列インデックス書き込みである。
【００３１】
図７は、閾値情報３４を示す。閾値情報３４は、不具合情報３２の不具合数Ｘに対と、重み付点数との関係を示す。図７に示すように、不具合数Ｘが１以上５０未満の場合には重み付け点数は１であり、不具合数Ｘが５０以上１００未満の場合には重み付け点数は５であり、不具合数Ｘが１００以上の場合には重み付け点数は１０である。
【００３２】
図８は、重み付け情報１２ａを示す。重み付け情報１２ａは、警告種類ごとの重み付点数を示す。警告種類及び重み付け点数に関して、１行目は、バッファーオーバーフロー及び１０点であり、２行目は、初期化なし及び５点である。
【００３３】
図９は、重み付け情報１２ａを生成する処理であるステップＳ１２の内容を示すフローチャートである。
図１０は、ステップＳ１２の内容を説明する図である。図９及び図１０を用いて、ステップＳ１２の内容を示すステップＳ１２１からステップＳ１２４を説明する。
【００３４】
＜ステップＳ１２１＞
点数化部１３は、不具合情報３２の不具合原因種類ごとに、個数を計算する。図１０では、点数化部１３は、存在しない配列インデックス参照（１−１），（１−２）．．．、存在しない配列インデックス書込（２−１），（２−２）．．．、意図しない値の参照（３−１），（３−２）．．．の個数を計算する。存在しない配列インデックス参照は、（１−１）から（１−３０）の３０あるとする。存在しない配列インデックス書込は、（２−１）から（２−９０）の９０あるとする。意図しない値の参照は、（３−１）から（３−６０）の６０あるとする
【００３５】
＜ステップＳ１２２＞
点数化部１３は、不具合情報３２により計算結果を用いて、対応情報３３の警告種類ごとに、個数を計算する。図１０の対応情報３３に示すように、存在しない配列インデックス参照と、存在しない配列インデックス書込とは、バッファーオーバーフローに対応する。よって、点数化部１３は３０＋９０を計算し、バッファーオーバーフローの不具合数Ｘを１２０と計算する。意図しない値の参照は、初期化なしに対応する。点数化部１３は６０＋０を計算し、初期化なしの不具合数Ｘを６０と計算する。
【００３６】
＜ステップＳ１２３＞
点数化部１３は、閾値情報３４を参照して、ステップＳ１２２で求めた不具合数Ｘに基づき、重み付け点数を決定する。ステップＳ１２２では、バッファーオーバーフローの不具合数Ｘ＝１２０であり、初期化なしの不具合数Ｘ＝６０である。よって、点数化部１３は、閾値情報３４を参照し、バッファーオーバーフローの重み付け点数を１０と決定し、初期化なしの重み付け点数を５と決定する。
【００３７】
＜ステップＳ１２４＞
点数化部１３は、ステップＳ１２３で決定した警告種類ごとの重み付け点数から、重み付け情報１２ａを生成する。この例では、図１０に示すように、重み付け情報１２ａでは、バッファーオーバーフローの重み付け点数は１０点であり、初期化なしの重み付け点数は５点である。
【００３８】
以上がステップＳ１２の内容である。ステップＳ１２の重み付け部１２の処理をまとめると、以下のようである。以下では、対応情報３３の警告種類を第１の警告種類と呼び、解析結果情報１１ａの警告種類を第２の警告種類と呼ぶ。また、対応情報３３の不具合原因種類を第１の不具合原因種類と呼び、不具合情報３２の不具合原因種類を第２の不具合原因種類と呼ぶ。重み付け部１２は、対応情報３３と、不具合情報３２とを使用することにより、レコードの第１の不具合原因種類に対応する第２の不具合原因種類の個数を決定する。ここで、対応情報３３は、ソースコードの静的解析によって警告される警告の種類を示す第１の警告種類と、過去の不具合の原因の種類を示す第１の不具合原因種類とが対応付けられた複数のレコードを有する情報である。レコードとは、図６の１行目から３行目の各行が該当する。不具合情報３２は、過去の不具合の原因の種類を示す複数の第２の不具合原因種類を有する。重み付け部１２は、第２の不具合原因種類の個数を決定した場合に、第１の不具合原因種類に対応する第１の警告種類に、決定した個数に応じて点数を与え、第１の警告種類と点数とが対応付けられた重み付け情報１２ａを生成する。
【００３９】
＜ステップＳ１３＞
次に、点数化情報１３ａを生成する処理であるステップＳ１３を説明する。ステップＳ１３では、点数化部１３は、解析結果情報１１ａの各行の警告種類に対して、警告種類の重み付け情報１２ａの警告種類に対応付けられている重み付け点数を与え、与えた重み付け点数をファイル名ごとに合計することで、点数化情報１３ａを生成する。
図１１は、ステップＳ１３を説明する図である。ステップＳ１３において、点数化部１３は、解析結果情報記憶部２１から解析結果情報１１ａを取得し、重み付け情報記憶部２５から重み付け情報１２ａを取得する。点数化部１３は、重み付け情報１２ａを参照して、解析結果情報１１ａのそれぞれの警告種類に、重み付け点数を与える。図１１の場合は、解析結果情報１１ａに対して、ファイル名ａ．ｃのバッファーオーバーフローに１０点を与え、ファイル名ａ．ｃの初期化なしに５点を与え、ファイル名ｃ．ｃの初期化なしに５点を与える。点数化部１３は、ファイル名ごとに重み付け点数を合計して、点数化情報１３ａを生成する。この例では、ファイル名ａ．ｃの重み付け点数は、１５点であり、ファイル名ｃ．ｃの重み付け点数は１５点である。点数化部１３は、生成した点数化情報１３ａを点数化情報記憶部２２へ格納する。
図１２は、点数化情報１３ａを示す図である。ファイル及び点数合計に関して、１行目は、ａ．ｃ及び１５点であり、２行目は、ｃ．ｃ及び５点である。
【００４０】
以上がステップＳ１３の内容である。ステップＳ１３の点数化部１３の処理をまとめると、以下のようである。点数化部１３は、ソースコードの静的解析の結果である複数の第２の警告種類を含む解析結果情報１１ａの複数の第２の警告種類のうち、重み付け情報１２ａの第１の警告種類に対応する第２の警告種類に、第１の警告種類に与えられた点数を与える。
【００４１】
なお、図１１の説明で述べたように、解析結果情報１１ａは、複数の第２の警告種類のそれぞれと、ソースコードを示すファイル名と、警告種類を含む行数が対応付けられている。警告種類を含む行数は、ソースコードにおいてバッファーオーバーフローのような警告種類が存在する位置を示す位置情報である。点数化部１３は、ファイル名が同一である第２の警告種類の点数の合計を計算する。また、図１１の説明で述べたように、点数化部１３は、不具合の個数と重み付けの点数とが対応付けられた閾値情報３４を使用して、重み付け情報１２ａを生成する。
【００４２】
＜ステップＳ１４＞
表示処理部１４は、点数化情報記憶部２２から点数化情報１３ａを読み込み、点数化情報１３ａを表示装置９４に表示する。
【００４３】
＜変形例１＞
図１３は、点数化装置１０の変形例の機能ブロック図である。図１３の点数化装置１０は、図１に対して、さらに、不具合情報取得部１５を有する。不具合情報取得部１５は、不具合情報３２を取得することができる。
【００４４】
図１４は、図１３の点数化装置１０のハードウェア構成を示す。図１３のハードウェア構成は、図２に対して、不具合情報取得部１５が追加されている。図２の場合と同様に、静的解析結果取得部１１、点数化部１３、点数化部１３、表示処理部１４及び不具合情報取得部１５の機能は、点数化プログラムにより実現される。不具合情報取得部１５は、不具合情報３２を、入出力インタフェース９３または通信インタフェース９５を介して取得する。
【００４５】
なお、対応情報３３及び閾値情報３４は、図１及び図１３の場合ともに、マウスまたはキーボードのような入出力インタフェース９６によって、設定及び変更が可能である。
【００４６】
以上のように、不具合情報取得部１５は、不具合情報３２を取得し、取得した不具合情報３２をメモリである。不具合情報記憶部２３に格納する。重み付け部１２は、不具合情報取得部１５が取得した不具合情報３２を使用することにより、重み付け情報１２ａを生成する。
【００４７】
変形例１によれば、不具合情報３２を柔軟に変更できる。
【００４８】
＜変形例２＞
図１５は、変形例２を示す。図２及び図１４に示すハードウェア構成では、プロセッサ９１として示す「部」の機能が、ソフトウェアで実現される。しかし、変形例２として、プロセッサ９１として示す「部」の機能がハードウェアで実現されてもよい。具体的には、図１５に示すように、処理回路９９によって、プロセッサ９１として示す「部」の機能及び「〜記憶部」の機能が実現される。処理回路９９は信号線９９ａに接続している。処理回路９９は、プロセッサ９１として示す「部」の機能及び「〜記憶部」の機能を実現する専用の電子回路である。処理回路９９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ・Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ・Ｓｐｅｃｉｆｉｃ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ）である。
【００４９】
プロセッサ９１と処理回路９９とは、プロセッシングサーキットリとも呼ばれる。つまり、点数化装置１０において、静的解析結果取得部１１、重み付け部１２、点数化部１３、表示処理部１４及び不具合情報取得部１５の機能は、プロセッシングサーキットリにより実現される。
【００５０】
＊＊＊実施の形態１の効果＊＊＊
以上に説明した点数化装置は解析結果情報１１ａを生成するので、不具合に直結する確率の高い静的解析の警告と、その警告を含むファイル名及び不具合箇所である行数を特定できる。
【００５１】
以上、実施の形態１ついて説明したが、実施の形態１うち、１つを部分的に実施しても構わない。あるいは、実施の形態１のうち、２つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、実施の形態１に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００５２】
１０  点数化装置、１１  静的解析結果取得部、１１ａ  解析結果情報、１２  重み付け部、１２ａ  重み付け情報、１３  点数化部、１３ａ  点数化情報、１４  表示処理部、１５  不具合情報取得部、２１  解析結果情報記憶部、２２  点数化情報記憶部、２３  不具合情報記憶部、２４  対応情報記憶部、２５  重み付け情報記憶部、３１  静的解析結果、３２  不具合情報、３３  対応情報、３４  閾値情報、９１  プロセッサ、９２  メモリ、９３  入出力インタフェース、９４  表示装置、９５  通信インタフェース、９９  処理回路、９９ａ  信号線。
【図１】
0006873332.tif 000002
【図２】
0006873332.tif 000003
【図３】
0006873332.tif 000004
【図４】
0006873332.tif 000005
【図５】
0006873332.tif 000006
【図６】
0006873332.tif 000007
【図７】
0006873332.tif 000008
【図８】
0006873332.tif 000009
【図９】
0006873332.tif 000010
【図１０】
0006873332.tif 000011
【図１１】
0006873332.tif 000012
【図１２】
0006873332.tif 000013
【図１３】
0006873332.tif 000014
【図１４】
0006873332.tif 000015
【図１５】
0006873332.tif 000016