(57)【要約】【課題】効率よくソースコードを修正することが可能なプログラム等を提供する。【解決手段】コンピュータに、元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する処理を実行させる。【選択図】図３
2016126671.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する
処理を実行させるプログラム。
【請求項２】
エラー行を置き換えたソースコードに対して実行した静的コード解析の結果と、元のソースコードに対して実行した静的コード解析の結果とを比較し、置き換えることにより前記エラー行及び該エラー行以外の他の行のエラーメッセージが解消した場合に、前記エラー行のエラーＩＤを第１分類に分類し、
前記他の行のエラーＩＤを第２分類に分類し、
前記エラー行のみのエラーメッセージが解消した場合に、前記エラー行のエラーＩＤを第３分類に分類する
請求項１に記載のプログラム。
【請求項３】
エラーＩＤ毎に分類処理を行い、エラーＩＤ毎の各分類の数を前記記憶部に記憶する
請求項２に記載のプログラム。
【請求項４】
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する
処理をコンピュータに実行させる情報処理方法。
【請求項５】
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得する取得部と、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する出力部と
を備える情報処理装置。
【請求項６】
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得する取得部と、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する出力部と
を備える情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理方法、情報処理装置及び情報処理システムに関する。
【背景技術】
【０００２】
従来、ソースコードの静的解析において出力された警告について、解析結果評価レポートを作成する解析結果評価システム等が知られている（例えば特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３４５２１号公報
【特許文献２】国際公開第２００６／０３３１５９号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では効率よく問題のある箇所を修正できないという問題がある。
【０００５】
一つの側面では、効率よくソースコードを修正することが可能なプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、プログラムは、コンピュータに、元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する処理を実行させる。
【発明の効果】
【０００７】
一つの側面では、効率よくソースコードを修正することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア群を示すブロック図である。
【図２】静的コード解析の結果を示す説明図である。
【図３】置換ソースコードの生成手順を示す説明図である。
【図４】元のソースコードの一例を示す説明図である。
【図５】分類ＤＢのレコードレイアウトを示す説明図である。
【図６】静的コード解析の結果を示す説明図である。
【図７】置換ソースコードの生成処理手順を示すフローチャートである。
【図８】分類処理の手順を示すフローチャートである。
【図９】分類処理の手順を示すフローチャートである。
【図１０】分類表示処理の手順を示すフローチャートである。
【図１１】実施の形態２に係る分類ＤＢのレコードレイアウトを示す説明図である。
【図１２】解消数の計数手順を示すフローチャートである。
【図１３】表示処理の手順を示すフローチャートである。
【図１４】表示イメージを示す説明図である。
【図１５】上述した形態のコンピュータの動作を示す機能ブロック図である。
【図１６】実施の形態４に係るコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は情報処理装置１のハードウェア群を示すブロック図である。情報処理装置１はサーバコンピュータ、パーソナルコンピュータ、携帯電話、スマートフォン、ゲーム機またはＰＤＡ（Personal Digital Assistant）等である。以下では情報処理装置１をコンピュータ１と読み替えて説明する。コンピュータ１は制御部としてのＣＰＵ（Central Processing Unit）１１、ＲＡＭ(Random Access Memory)１２、入力部１３、表示部１４、記憶部１５、及び、通信部１６等を含む。
【００１０】
ＣＰＵ１１は、バス１７を介してハードウェア各部と接続されている。ＣＰＵ１１は記憶部１５に記憶された制御プログラム１５Ｐに従いハードウェア各部を制御する。ＲＡＭ１２は例えば（Static RAM）、ＤＲＡＭ(Dynamic RAM)、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１１】
入力部１３はマウスまたはキーボード、マウスまたはタッチパネル等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、ＣＰＵ１１の指示に従い各種情報を表示する。通信部１６は通信モジュールであり、図示しない他のコンピュータとの間でインターネット等の通信網Ｎを介して、情報の送受信を行う。
【００１２】
記憶部１５はハードディスクまたは大容量メモリであり、制御プログラム１５Ｐ及び分類データベース（以下、ＤＢという）１５１等を含む。なお、実施形態では分類ＤＢ１５１を記憶部１５に記憶する例を挙げたがこれに限るものではない。ＲＡＭ１２に記憶するほか、情報処理システムとしてコンピュータ１に通信網Ｎを介して接続される図示しない他のＤＢサーバ内に記憶するようにしても良い。
【００１３】
図２は静的コード解析の結果を示す説明図である。入力部１３を通じて、ソースコードを作成したユーザは、記憶部１５に記憶した静的コード解析用プログラムを実行する。なお、静的コード解析用プログラムは公知のプログラムを用いればよい。以下では修正前のソースコードを元のソースコードといい、修正後のソースコードを修正ソースコードという。ＣＰＵ１１は、記憶部１５に記憶した元のソースコード及び修正ソースコードを読み出す。ＣＰＵ１１は、元のソースコード及び修正ソースコードに対し、静的コード解析を行う。ＣＰＵ１１は、図２に示すように、表示部１４に静的コード解析の結果を表示する。
【００１４】
ＣＰＵ１１は、解析結果としてエラーを特定するための固有の識別情報（以下エラーＩＤという）、エラーが発生したエラー行、及びエラーメッセージを表示する。例えば、エラーＩＤ「０１」で示されるエラーは、エラー行がソースコード中の第８１行目に存在し、＆等の記号の使用に誤りがある旨のエラーメッセージが表示されている。なお、エラーメッセージの例は一例であり、これに限るものではない。
【００１５】
図３は置換ソースコードの生成手順を示す説明図である。ＣＰＵ１１は、静的コード解析の結果に基づき置換ソースコードを生成する。ＣＰＵ１１は、最初に元のソースコード及び修正ソースコードを読み出す。ＣＰＵ１１は、エラー行を参照し、元のソースコード及び修正ソースコードから、当該エラー行のソースコードを抽出する。以下では元のソースコードから抽出したソースコードを、元の抽出ソースコードといい、修正ソースコードから抽出したソースコードを修正抽出ソースコードという。
【００１６】
ＣＰＵ１１は、元の抽出ソースコードと、修正抽出ソースコードとを比較し、修正抽出ソースコードが、修正されているか否かを判断する。ＣＰＵ１１は、修正されていると判断した場合、元のソースコードの、元の抽出ソースコードを、修正抽出ソースコードに置換する。図３の例では８１行目のエラー行のソースコードが書き換えられた事を示している。以下では置換されたソースコードを置換ソースコードという。
【００１７】
ＣＰＵ１１は、置換ソースコードに対して、同様に静的コード解析を実行する。ＣＰＵ１１は、元のソースコードに対する静的コード解析の結果と、置換ソースコードに対する静的コード解析の結果とを比較する。ＣＰＵ１１は、エラーメッセージの解消内容に基づき、分類分けを行う。具体的には、ＣＰＵ１１は、置換対象となったエラー行のエラーメッセージが解消し、かつ、当該エラー行以外の他のエラー行のエラーメッセージも解消した場合、置換対象となったエラー行に対応するエラーＩＤを第１分類とする。ＣＰＵ１１は、エラーが解消した他のエラーＩＤを第２分類とする。ＣＰＵ１１は、置換対象となったエラー行のみエラーメッセージが解消した場合、当該エラーＩＤを第３分類とする。
【００１８】
図４は元のソースコードの一例を示す説明図である。「char a[1] = "x";」の行のコードは、１バイトのデータであることが必要なところ、２バイトの文字列にて初期化されているためエラーメッセージが表示されている。また、「strcpy(a, b);」の行はｂをａにコピーするコードであるところ、「char b[2] = "y";」で示すとおりｂは２バイトであり領域ａを超えてコピーしてしまうこととなるためエラーメッセージが表示されている。ここで、修正ソースコードにて「ａ[1]」を「ａ[2]」と２バイトになるよう、入力部１３を通じて修正したとする。
【００１９】
ＣＰＵ１１は、修正ソースコードに対し、静的コード解析を実行した場合、「char a[2] = "x";」の行（エラー行）のエラーメッセージは解消し、同時に、「strcpy(a, b);」の行（他の行）のエラーメッセージも解消する。ＣＰＵ１１は、「char a[1] = "x";」のエラー行に対応するエラーＩＤを第1分類に分類し、エラー行のエラーの解消に起因してエラーが解消した他の行「strcpy(a, b);」のエラーＩＤを第２分類に分類する。
【００２０】
「if ( c = 0 )」については、当該エラー行を修正した場合、当該エラー行のエラーメッセージのみが解消され、他のエラー行のエラーメッセージは解消されないため、ＣＰＵ１１は、第３分類に分類する。
【００２１】
図５は分類ＤＢ１５１のレコードレイアウトを示す説明図である。分類ＤＢ１５１はエラーＩＤフィールド、第１分類フィールド、第３分類フィールド、第２分類フィールド及び分類フィールド等を含む。第１分類フィールドには、エラー行に対応するエラーＩＤに対応付けて、第１分類に分類された回数が記憶されている。同様に、第３分類フィールドには、エラーＩＤに対応付けて、第３分類に分類された回数が記憶されている。第２分類フィールドには、エラーＩＤに対応付けて、第２分類に分類された回数が記憶されている。
【００２２】
分類フィールドにはエラーＩＤに対応付けて当該エラーＩＤの分類が記憶されている。ＣＰＵ１１は、第１分類フィールド、第３分類フィールドまたは第２分類フィールドのレコードが更新された場合、最も数の多い分類を抽出する。ＣＰＵ１１は、抽出した分類を分類フィールドに記憶する。図５の例ではエラーＩＤ「０１」の分類は「７」と最も多い第１分類が記憶されている。なお、同数の場合は、所定の優先順位（例えば第１分類、第３分類、第２分類の順）で選択するようにすればよい。
【００２３】
ＣＰＵ１１は、元のソースコードの静的コード解析の結果と置換ソースコードの静的コード解析の結果とを比較する。ＣＰＵ１１は、置換したエラー行のエラーメッセージが解消し、かつ他のエラー行のエラーメッセージも解消している場合、置換したエラー行のエラーＩＤに対応付けて第1分類のレコードをインクリメントする。ＣＰＵ１１は、同時に他のエラー行に対応するエラーＩＤの第２分類のレコードをインクリメントする。ＣＰＵ１１は、置換したエラー行のエラーメッセージのみが解消している場合、そのエラー行に対応するエラーＩＤに対応付けて第３分類のレコードをインクリメントする。
【００２４】
ＣＰＵ１１は、エラー行について分類を終えた場合、次のエラー行についても同様に分類を行う。なお、同一ソースコードについて第２分類に複数回分類された場合でも、初回のみインクリメント処理を行っても良い。ＣＰＵ１１は、修正ソースコードがさらに修正された場合も、同様に分類処理を行い、分類ＤＢ１５１を更新する。図５の例ではエラーＩＤ「０１」は第１分類が７回と最も多くなっている。またエラーＩＤ「０５」は第２分類が５回と最も多くなっている。
【００２５】
図６は静的コード解析の結果を示す説明図である。ＣＰＵ１１は、分類ＤＢ１５１が更新された場合、以下の処理を行う。ＣＰＵ１１は、修正プログラムに対し、静的コード解析を実行し解析結果をＲＡＭ１２に読み出す。ＣＰＵ１１は、分類ＤＢ１５１を参照し、解析結果のエラーＩＤに対応する分類の内最大値を有する分類を抽出する。図５及び図６の例ではエラーＩＤ「０１」については、第1分類が抽出される。エラーＩＤ「０３」については、第３分類が抽出される。またエラーＩＤ「０５」については第２分類が抽出される。なお、ＣＰＵ１１は、エラーＩＤに対応する分類が、分類ＤＢ１５１に記憶されていない場合、当該エラー行を第4分類に分類する。エラーＩＤ「０２」は分類ＤＢ１５１に存在しないため、第４分類に分類されている。
【００２６】
ＣＰＵ１１は、各エラーＩＤの分類を終えた場合、第１分類、第３分類、第４分類、第２分類の順にエラーＩＤ、エラー行及びエラーメッセージを、表示部１４へ出力する。なお、分類を出力する順序は本実施形態に限定するものではなく、他の順序としても良い。例えば、第４分類と第２分類との順序は入れ替えても良い。また第３分類と第４分類とを入れ替えても良い。ただし、第２分類よりも、第１分類の方が優先度を高くしておく事が好ましい。また本実施形態では、第１分類、第３分類、第４分類、第２分類の順に、上から優先的に表示する形態としたが、表示するタイミングを代えて表示しても良い。
【００２７】
例えば、ＣＰＵ１１は、第１分類を表示してから一定時間（例えば１０秒）後に、第３分類を表示しても良い。ＣＰＵ１１は、第３分類を表示してから一定時間後に第４分類を表示する。またＣＰＵ１１は、第４分類を表示してから一定時間後に第２分類を表示する。その他、ＣＰＵ１１は、第１分類、第２分類、第３分類、及び第４分類のフォントサイズを変えて表示するようにしても良い。例えば、ＣＰＵ１１は、第１分類、第２分類、第３分類、及び第４分類の順にフォントサイズが小さくなるよう、表示部１４に表示しても良い。またＣＰＵ１１は、第１分類、第２分類、第３分類、及び第４分類をそれぞれ異なる色で表示するようにしても良い。
【００２８】
以上のハードウェア群において各種ソフトウェア処理を、フローチャートを用いて説明する。図７は置換ソースコードの生成処理手順を示すフローチャートである。ＣＰＵ１１は、元のソースコードを記憶部１５から読み出す（ステップＳ７１）。ＣＰＵ１１は、元のソースコードに対し静的コード解析を行う（ステップＳ７２）。ＣＰＵ１１は、修正ソースコードを、記憶部１５から読み出す（ステップＳ７３）。ＣＰＵ１１は、修正ソースコードに対し、静的コード解析を行う（ステップＳ７４）。
【００２９】
ＣＰＵ１１は、ステップＳ７２で実行した元のソースコードの静的コード解析結果を参照し、エラー行を抽出する（ステップＳ７５）。ＣＰＵ１１は、抽出したエラー行を参照し、元のソースコードから元の抽出ソースコードを抽出する（ステップＳ７６）。すなわち、当該エラー行のソースコードを抽出する。同様に、ＣＰＵ１１は、抽出したエラー行を参照し、修正ソースコードから修正抽出ソースコードを抽出する（ステップＳ７７）。ＣＰＵ１１は、修正抽出ソースコードが、元の抽出ソースコードから変化したか否かを判断する（ステップＳ７８）。
【００３０】
ＣＰＵ１１は、変化していないと判断した場合（ステップＳ７８でＮＯ）、処理を終了する。ＣＰＵ１１は、変化していると判断した場合（ステップＳ７８でＹＥＳ）、ＣＰＵ１１は、元の修正コードの元の抽出ソースコードを削除し、修正抽出ソースコードに置換し、置換ソースコードを生成する（ステップＳ７９）。ＣＰＵ１１は、置換ソースコードに対し、静的コード解析を行う（ステップＳ７１０）。
【００３１】
図８及び図９は分類処理の手順を示すフローチャートである。ＣＰＵ１１は、元のソースコードの静的ソースコード解析結果を読み出す（ステップＳ８１）。ＣＰＵ１１は、読み出した静的ソースコード解析結果を参照し、エラー行を抽出する（ステップＳ８２）。ＣＰＵ１１は、抽出したエラー行に対応する置換ソースコードの静的コード解析結果を読み出す（ステップＳ８３）。なお、当該エラー行に対応する置換ソースコードは、図７で述べた置換処理により生成される。ＣＰＵ１１は、元のソースコードの静的コード解析結果と置換ソースコードの静的コード解析結果とを比較する。
【００３２】
ＣＰＵ１１は、置換することによって抽出したエラー行のエラーメッセージが解消し、かつ、他の行のエラーメッセージも解消しているか否かを判断する（ステップＳ８４）。ＣＰＵ１１は、双方が解消したと判断した場合（ステップＳ８４でＹＥＳ）、処理をステップＳ８５へ移行させる。ＣＰＵ１１は、エラー行を第１分類に分類する（ステップＳ８５）。ＣＰＵ１１は、エラー行に対するエラーＩＤに対応付けて分類ＤＢ１５１の第１分類のレコードをインクリメントする（ステップＳ８６）。なお、ＣＰＵ１１は、分類ＤＢ１５１にエラーＩＤに対応するレコードが存在しない場合、エラーＩＤを生成する。ＣＰＵ１１は、生成したエラーＩＤに対応付けて、第１分類の回数「１」を記憶する。ＣＰＵ１１は、その後処理をステップＳ８７へ移行させる。
【００３３】
ＣＰＵ１１は、他の行が今回の修正で既に第２分類に分類されているか否かを判断する（ステップＳ８７）。具体的には、ＣＰＵ１１は、図８及び図９における一連の処理においてエラー行が第２分類に分類された場合、ＲＡＭ１２にエラー行を記憶しておく。ＣＰＵ１１は、ＲＡＭ１２にエラー行が既に記憶されているか否かによりステップＳ８７の判断を行う。ＣＰＵ１１は、既に他のエラー行が第２分類に分類済みであると判断した場合（ステップＳ８７でＹＥＳ）、処理をステップＳ９４へ移行させる。
【００３４】
ＣＰＵ１１は、他の行がまだ第２分類に分類されていない場合（ステップＳ８７でＮＯ）、ステップＳ８４でエラーメッセージが解消した他の行を第２分類に分類する（ステップＳ８８）。ＣＰＵ１１は、ＲＡＭ１２に当該他の行が第２分類に分類された情報を記憶しておく。ＣＰＵ１１は、エラー行に対するエラーＩＤに対応付けて分類ＤＢ１５１の第２分類のレコードをインクリメントする（ステップＳ８９）。なお、ＣＰＵ１１は、分類ＤＢ１５１にエラーＩＤに対応するレコードが存在しない場合、エラーＩＤを生成する。ＣＰＵ１１は、生成したエラーＩＤに対応付けて、第２分類の回数「１」を記憶する。ＣＰＵ１１は、その後処理をステップＳ９４へ移行させる。
【００３５】
ＣＰＵ１１は、双方が解消していないと判断した場合（ステップＳ８４でＮＯ）、処理をＳ９１へ移行させる。ＣＰＵ１１は、抽出したエラー行のエラーメッセージのみが解消したか否かを判断する（ステップＳ９１）。ＣＰＵ１１は、抽出したエラー行のエラーメッセージのみが解消したと判断した場合（ステップＳ９１でＹＥＳ）、処理をステップＳ９２へ移行させる。ＣＰＵ１１は、当該抽出エラー行を第３分類に分類する（ステップＳ９２）。ＣＰＵ１１は、エラー行に対するエラーＩＤに対応付けて分類ＤＢ１５１の第３分類のレコードをインクリメントする（ステップＳ９３）。なお、ＣＰＵ１１は、分類ＤＢ１５１にエラーＩＤに対応するレコードが存在しない場合、エラーＩＤを生成する。ＣＰＵ１１は、生成したエラーＩＤに対応付けて、第３分類の回数「１」を記憶する。ＣＰＵ１１は、その後処理をステップＳ９４へ移行させる。
【００３６】
ＣＰＵ１１は、抽出したエラー行のエラーメッセージのみが解消したとはいえないと判断した場合（ステップＳ９１でＮＯ）、処理をステップＳ９４へ移行させる。ＣＰＵ１１は、元のソースコードの静的ソースコード解析結果の全てのエラー行について上述した処理を終了したか否かを判断する（ステップＳ９４）。ＣＰＵ１１は、未処理のエラー行が存在すると判断した場合（ステップＳ９４でＮＯ）、処理をステップＳ９５へ移行させる。ＣＰＵ１１は、未処理のエラー行を抽出する（ステップＳ９５）。ＣＰＵ１１は、処理をステップＳ８３に戻す。
【００３７】
ＣＰＵ１１は、新に抽出したエラー行について、置換処理を行った置換ソースコードを生成する。ＣＰＵ１１は、上述した処理により元のソースコードと当該置換ソースコードとの静的コード解析結果の対比処理を継続して行う。ＣＰＵ１１は、全てのエラー行について処理を終了したと判断した場合（ステップＳ９４でＹＥＳ）、処理ステップＳ９６へ移行させる。ＣＰＵ１１は、分類ＤＢ１５１の各エラーＩＤの第１分類から第３分類の計数値を参照し、計数値が最も大きい分類を、分類フィールドに記憶する（ステップＳ９６）。
【００３８】
図１０は分類表示処理の手順を示すフローチャートである。ＣＰＵ１１は、修正ソースコードを記憶部１５から読み出す（ステップＳ１０１）。ＣＰＵ１１は、修正ソースコードに対し静的ソースコード解析を行う（ステップＳ１０２）。ＣＰＵ１１は、分類ＤＢ１５１の分類フィールドを参照し、各エラー行に対するエラーＩＤに対応する分類を抽出する（ステップＳ１０３）。ＣＰＵ１１は、分類ＤＢ１５１に対応するエラーＩＤが存在しない場合、当該エラー行については第４分類に分類する（ステップＳ１０４）。
【００３９】
ＣＰＵ１１は、第１分類、第３分類、第４分類、第２分類の順で、エラーＩＤ、エラー行及びメッセージをソートして表示する（ステップＳ１０５）。これにより、効率よくソースコードを修正することが可能となる。また第３分類のエラー行は、第１分類のエラー行の修正に伴いエラーが解消する可能性が高いことから、第１分類を優先することで効率よくソースコードを修正することが可能となる。またエラー行のみの修正のみが反映される第２分類、新に発見された第４分類がそれぞれ分けて表示されることから、効率よくソースコードを修正することが可能となる。
【００４０】
実施の形態２
実施の形態２は第１分類をエラーメッセージが解消した数に応じて優先的に出力する形態に関する。図１１は実施の形態２に係る分類ＤＢ１５１のレコードレイアウトを示す説明図である。さらに解消数フィールドが設けられている。ＣＰＵ１１は、エラー行に対応するエラーメッセージが解消し、かつ、他の行のエラーメッセージも解消した場合、解消したエラーメッセージ数を計数する。ＣＰＵ１１は、分類ＤＢ１５１の第１分類フィールドの数をインクリメントする場合、計数した数を、解消数フィールドに順次記憶する。
【００４１】
図１１の例では、エラーＩＤ０１の解消数が１８、エラーＩＤ０８の解消数が３０、エラーＩＤ０４の解消数が６と記憶されている。ＣＰＵ１１は、第１分類をソート表示する場合、解消数が多い順に優先的に表示する。図１１の例では、最初に解消数が３０のエラーＩＤ０８のエラーメッセージが表示され、次いで解消数が１８のエラーＩＤ０１が表示され、最後に解消数が６のエラーＩＤ０４が表示される。
【００４２】
図１２は解消数の計数手順を示すフローチャートである。実施の形態１のステップＳ８５からＳ８６の処理に代えて以下の処理を行う。ＣＰＵ１１は、解消したエラーメッセージ数を計数する（ステップＳ１２１）。ＣＰＵ１１は、エラー行を第１分類に分類する（ステップＳ１２２）。ＣＰＵ１１は、エラー行に対するエラーＩＤに対応付けて分類ＤＢ１５１の第１分類のレコードをインクリメントする（ステップＳ１２３）。ＣＰＵ１１は、エラーＩＤを参照し、計数した値を分類ＤＢ１５１の解消数に加算する（ステップＳ１２４）。なお、ＣＰＵ１１は、分類ＤＢ１５１にエラーＩＤに対応するレコードが存在しない場合、エラーＩＤを生成する。ＣＰＵ１１は、生成したエラーＩＤに対応付けて、第１分類の回数「１」を記憶する。またＣＰＵ１１は、計数した値を解消数として記憶する。ＣＰＵ１１は、その後処理をステップＳ９４へ移行させる。
【００４３】
図１３は表示処理の手順を示すフローチャートである。ステップＳ１０５の処理に代えて以下の処理を実行する。ＣＰＵ１１は、分類ＤＢ１５１を参照し、ステップＳ１０３で抽出した第１分類に属するエラーＩＤの解消数を読み出す（ステップＳ１３１）。ＣＰＵ１１は、修正ソースコードの静的ソースコード解析結果を参照し、解消数の多い順に第１分類のエラーＩＤ、エラー行及びメッセージをソートして表示部１４に表示する（ステップＳ１３２）。ＣＰＵ１１は、次いで、第３分類、第４分類、第２分類の順でエラーＩＤ、エラー行及びメッセージをソートして、表示部１４に表示する（ステップＳ１３３）。これにより、影響力の大きいエラー行を把握することができるため、さらに効率よくソースコードを修正することが可能となる。
【００４４】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００４５】
実施の形態３
実施の形態３は注目すべきエラー行を容易に認識することができる形態に関する。図１４は表示イメージを示す説明図である。ＣＰＵ１１は、第２分類に関するエラー行、エラーＩＤ及びエラーメッセージを他の分類よりも小さなフォントで、表示部１４に表示する。またＣＰＵ１１は、各分類に対応付けてエラーの解消内容に関する情報を表示する。ＣＰＵ１１は、第１分類に関するエラー行、エラーＩＤ及びエラーメッセージに対応付けて、エラー行の解消により他の行のエラー行も解消する旨のテキスト文を記憶部１５から読み出し、表示部１４に表示する。
【００４６】
図１４の例では、「第１分類  以下のエラー行を修正することで他の行のエラーも解消する可能性があります。」と表示されている。次いでＣＰＵ１１は、第３分類に関するエラー行、エラーＩＤ及びエラーメッセージに対応付けて、修正により当該エラー行のみのエラーが解消する旨のテキスト文を記憶部１５から読み出し、表示部１４に表示する。図１４の例では「修正により以下のエラー行のエラーのみが解消する可能性があります。」と表示されている。次いでＣＰＵ１１は、第４分類に関するエラー行、エラーＩＤ及びエラーメッセージに対応付けて、新に発見されたエラーであることを示すテキスト文を記憶部１５から読み出し、表示部１４に表示する。図１４の例では「新に発見されたエラーです。」と表示されている。
【００４７】
ＣＰＵ１１は、フォントを第１分類、第３分類、及び第４分類よりも小さくした上で、以下の表示を行う。ＣＰＵ１１は、第２分類に関するエラー行、エラーＩＤ及びエラーメッセージに対応付けて、第１分類のエラー行の修正に起因してエラーが解消する旨のテキスト文を記憶部１５から読み出し、表示部１４に表示する。図１４の例では「以下のエラー行は、第１分類のエラー行を修正することで解消される可能性があります。」と表示されている。さらに、ＣＰＵ１１は、エラーＩＤに対応する解消数を読み出し、図１４に示すように第１分類のエラーＩＤに対応付けて解消数を表示しても良い。これにより、ユーザはどのような理由で、どの分類に着手すればよいか視認することが出来、より修正処理を迅速化することが可能となる。
【００４８】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００４９】
実施の形態４
図１５は上述した形態のコンピュータ１の動作を示す機能ブロック図である。ＣＰＵ１１が制御プログラム１５Ｐを実行することにより、コンピュータ１は以下のように動作する。取得部１０１は、元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得する。出力部１０２は、前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部１５を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する。
【００５０】
図１６は実施の形態４に係るコンピュータ１のハードウェア群を示すブロック図である。コンピュータ１を動作させるためのプログラムは、ディスクドライブ等の読み取り部１０ＡにCD-ROM、DVD（Digital Versatile Disc）ディスク、メモリーカード、またはUSB(Universal Serial Bus)メモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００５１】
図１６に示すコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したコンピュータ１として機能する。
【００５２】
本実施の形態４は以上の如きであり、その他は実施の形態１から３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００５３】
以上の実施の形態１から４を含む実施形態に関し、さらに以下の付記を開示する。
【００５４】
（付記１）
コンピュータに、
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する
処理を実行させるプログラム。
【００５５】
（付記２）
エラー行を置き換えたソースコードに対して実行した静的コード解析の結果と、元のソースコードに対して実行した静的コード解析の結果とを比較し、置き換えることにより前記エラー行及び該エラー行以外の他の行のエラーメッセージが解消した場合に、前記エラー行のエラーＩＤを第１分類に分類し、
前記他の行のエラーＩＤを第２分類に分類し、
前記エラー行のみのエラーメッセージが解消した場合に、前記エラー行のエラーＩＤを第３分類に分類する
付記１に記載のプログラム。
【００５６】
（付記３）
エラーＩＤ毎に分類処理を行い、エラーＩＤ毎の各分類の数を前記記憶部に記憶する
付記２に記載のプログラム。
【００５７】
（付記４）
前記記憶部に記憶したエラーＩＤの各分類の数に基づき、前記エラー行の分類を決定し
第１分類に決定されたエラー行を優先的に出力する
付記３に記載のプログラム。
【００５８】
（付記５）
第１分類に決定されたエラー行、第３分類に決定されたエラー行、第２分類に決定されたエラー行の順に出力する
付記４に記載のプログラム。
【００５９】
（付記６）
元のソースコードのエラー行のソースコードを、該エラー行に対応する修正ソースコードのソースコードが修正されている場合に、前記ソースコードに置き換え、
置き換えたソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、
元のソースコードに対するエラー行及びエラーメッセージと、置き換えたソースコードに対するエラー行及びエラーメッセージとを比較し、エラーメッセージの解消内容に応じてエラーＩＤを分類する
付記１から５のいずれか一つに記載のプログラム。
【００６０】
（付記７）
前記記憶部にエラーＩＤに対応する情報が記憶されていない場合、前記エラー行及び対応するエラーメッセージを第４分類に分類する
付記１から６のいずれか一つに記載のプログラム。
【００６１】
（付記８）
第１分類に決定されたエラー行、第３分類に決定されたエラー行、第４分類に決定されたエラー行、第２分類に決定されたエラー行の順に出力する
付記７に記載のプログラム。
【００６２】
（付記９）
第１分類に分類する場合、エラーメッセージが解消した数を計数し、
複数の第１分類のエラー行を出力する場合、計数した数が多いエラーＩＤ順に出力する
付記２に記載のプログラム。
【００６３】
（付記１０）
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得し、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する
処理をコンピュータに実行させる情報処理方法。
【００６４】
（付記１１）
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得する取得部と、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する出力部と
を備える情報処理装置。
【００６５】
（付記１２）
元のソースコード及び該元のソースコードを修正した修正ソースコードに対し静的コード解析を実行することにより生成されるエラー行及びエラーメッセージを取得する取得部と、
前記元のソースコードのエラー行のソースコードを、対応する修正ソースコードのソースコードに置き換えて静的コード解析を実行した場合のエラーメッセージの解消内容に応じてエラーＩＤを分類した記憶部を参照し、前記修正ソースコードに対して取得したエラー行及びエラーメッセージを分類に応じて出力する出力部と
を備える情報処理システム。
【符号の説明】
【００６６】
１      コンピュータ
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
１０Ａ  読み取り部
１１    ＣＰＵ
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５Ｐ  制御プログラム
１６    通信部
１５１  分類ＤＢ
１０１  取得部
１０２  出力部
Ｎ      通信網
【図１】
2016126671.tif 000003
【図２】
2016126671.tif 000004
【図３】
2016126671.tif 000005
【図４】
2016126671.tif 000006
【図５】
2016126671.tif 000007
【図６】
2016126671.tif 000008
【図７】
2016126671.tif 000009
【図８】
2016126671.tif 000010
【図９】
2016126671.tif 000011
【図１０】
2016126671.tif 000012
【図１１】
2016126671.tif 000013
【図１２】
2016126671.tif 000014
【図１３】
2016126671.tif 000015
【図１４】
2016126671.tif 000016
【図１５】
2016126671.tif 000017
【図１６】
2016126671.tif 000018