JP2008250914A - プログラム修正装置及び方法、並びにプログラム - Google Patents

プログラム修正装置及び方法、並びにプログラム Download PDF

Info

Publication number
JP2008250914A
JP2008250914A JP2007094693A JP2007094693A JP2008250914A JP 2008250914 A JP2008250914 A JP 2008250914A JP 2007094693 A JP2007094693 A JP 2007094693A JP 2007094693 A JP2007094693 A JP 2007094693A JP 2008250914 A JP2008250914 A JP 2008250914A
Authority
JP
Japan
Prior art keywords
program
correction
rule
test
violation
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
Application number
JP2007094693A
Other languages
English (en)
Inventor
Yoshimoto Horino
喜基 堀野
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.)
Canon IT Solutions Inc
Original Assignee
Canon Software Inc
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 Canon Software Inc filed Critical Canon Software Inc
Priority to JP2007094693A priority Critical patent/JP2008250914A/ja
Publication of JP2008250914A publication Critical patent/JP2008250914A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】本発明は、ユーザが作成したプログラムをテストして修正を行い、その修正の妥当性をチェックすることができるプログラム修正装置を提供する。
【解決手段】プログラムの規約や修正方法を予めDBとして記憶する。ユーザにより設定された条件でプログラムをテスト手段に送信してテストを行ってテスト結果を記憶し、プログラムから規約違反箇所を検出して規約違反箇所情報として登録する。そして、検出された違反箇所を、優先度に応じて選択された修正方法に基づいて修正し、修正されたプログラムを再びテスト手段に送信してテストを行ってテスト結果を記憶する。そして、プログラムの修正前後のテスト結果を比較して一致しない場合、不適切な修正箇所を調査して他の修正方法により再修正し、その結果を表示する。
【選択図】図10

Description

本発明は、プログラム修正装置及び方法、並びにプログラムに関し、特に、プログラムを静的又は動的に解析し、規約違反箇所を指摘して自動的に修正するプログラム修正装置及び方法、並びにプログラムに関する。
近年のソフトウェア規模の拡大、複雑化に伴い、ソフトウェアの生産性向上が課題となっている。その一環としてコーディング規約を設定し、プログラムの品質を向上させる試みが広く行われている。
また、作られたプログラムが規約に準拠しているかのチェックのために、ソースコードレビューや静的解析ソフト(市販の静的解析ツールの中には、ANSI−C準拠以外に、ルールを独自に設定可能なものもある)の導入などが行われている。
しかしながら、ソースコードレビューは、人の目によるチェックであるため、規約違反箇所の指摘漏れが起こる可能性がある。一方、静的解析ソフト等の静的解析ツールは、規約違反箇所を指摘してくれるが、修正はユーザ自身が行う必要がある。これらの問題点を解決すべく、コーディング規約を定義した上で、作成されたプログラムに対して静的・動的な解析を行い、規約違反の箇所があれば、エラーメッセージを出し、修正推奨パターンを画面表示し、ユーザに選択させ、それに従ってプログラムを修正する技術が提案されている(例えば、特許文献1参照)。
特開2006−236042号公報
しかしながら、上記従来技術では、ユーザの選択に従ってシステムが自動的にプログラムを修正するが、その修正の妥当性をチェックしていないという問題がある。
本発明は、上記問題に鑑みて成されたものであり、ユーザが作成したプログラムをテストして修正を行い、その修正の妥当性をチェックすることができるプログラム修正装置及び方法、並びにプログラムを提供することを目的とする。
上記目的を達成するために、請求項1記載のプログラム修正装置は、ユーザが作成したプログラムをテスト可能なテスト手段と、作成したプログラムを修正する修正手段とを備えるプログラム修正装置において、前記プログラムの規約と修正方法を記憶するプログラム規約記憶手段と、前記プログラム及びテスト結果を記憶する第1のテスト結果記憶手段と、前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理手段と、前記検出された違反箇所を前記修正方法に基づいて修正する第1のプログラム修正手段と、前記修正されたプログラムをテストしてテスト結果を記憶する第2のテスト結果記憶手段と、前記第1のテスト結果記憶手段で記憶されたテスト結果と前記第2のテスト結果記憶手段で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第2のプログラム修正手段とを備えることを特徴とする。
上記目的を達成するために、請求項8記載のプログラム修正方法は、ユーザが作成したプログラムを修正するプログラム修正方法において、前記プログラムの規約と修正方法を記憶手段に記憶するプログラム規約記憶工程と、前記プログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第1のテスト結果記憶工程と、前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理工程と、前記検出された違反箇所を前記修正方法に基づいて修正する第1のプログラム修正工程と、前記修正されたプログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第2のテスト結果記憶工程と、前記第1のテスト結果記憶工程で記憶されたテスト結果と前記第2のテスト結果記憶工程で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第2のプログラム修正工程とを備えることを特徴とする。
上記目的を達成するために、請求項10記載のプログラム修正システムは、請求項1乃至7のいずれか1項に記載のプログラム修正装置にネットワークを介して接続された端末を備えるプログラム修正システムにおいて、前記端末は、プログラムの解析又は修正に必要な設定情報を入力させて前記プログラム修正装置に送る入力手段と、前記プログラム修正装置からの前記プログラムの修正状況及び結果を示す情報を出力する出力手段とを備えることを特徴とする。
本発明によれば、ユーザが作成したプログラムをテストして修正を行い、その修正の妥当性をチェックすることができる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本発明の実施の形態に係るプログラム修正システムの構成例を示すブロック図である。
図1において、本プログラム修正システムは、パーソナルコンピュータ等から成る端末1と、サーバコンピュータ等から成るサーバ装置3と、これらを互いに接続する通信ネットワーク2とで構成されている。
端末1は、図8に示すようなGUI(Graphical User Interface)やCUI(Character-based User Interface)を提供し、修正を行うプログラムのファイル名、規約名や規約レベル、修正の妥当性を検証するために行うテストケース等の入力又は選択をユーザから受けつける。また、端末1は、図14に示すように、プログラムの修正結果として、検出した規約違反とその内容、規約違反箇所、行われた修正内容について画面表示する。
通信ネットワーク2は、インターネットやLAN(Local Area Network)等から成り、端末1とサーバ装置3との間を接続するデータ通信網である。
サーバ装置3は、プログラム解析装置として機能し、通信ネットワーク2を介して端末1から受信した規約レベルやテストケース等に基づいて、後述するプログラム解析処理や修正を行い、その修正結果を端末1に送信する。
図2は、図1のサーバ装置3の内部構成を示すブロック図である。
図2において、サーバ装置3は、CPU31と、RAM32と、ROM33と、ハードディスク34と、入力装置35と、表示装置36と、印刷装置37と、通信インターフェース38とを備える。
ROM33又はハードディスク34は、CPU31の制御プログラムであるBIOS(Basic Input/Output System)やオペレーティングシステム(以下、「OS」という。)等を記憶するものである。RAM32は、CPU31の主メモリ、ワークエリア等として機能するものである。
CPU31は、システムバス39に接続された各種デバイスとのアクセスを総括的に制御すると共に、後述する処理の実行に際して必要なプログラム等をRAM32にロードし、当該プログラム等を実行することで各種動作を実現するものである。
入力装置35は、キーボードやポインティングデバイス等で構成されるものである。表示装置36は、LCD(Liquid Crystal Display)等で構成されるものである。印刷装置37は、レーザプリンタ等で構成されるものである。通信インターフェース38は、所定のプロトコルにより通信ネットワーク2に接続すると共に、外部装置との通信を制御するものである。
ハードディスク34は、規約DB4、タグDB5、修正内容DB6、テストケースDB7、規約違反管理DB8、及びテストマクロDB9等のプログラム解析・修正用の各種データベース(DB)が格納された記憶装置である。テストマクロDB9は、解析対象のプログラムのテストマクロ及びシステム全体のテストマクロなどが集められたDBで、テストケースDB7のテスト内容に従ってテストマクロを提供する。規約DB4、タブDB5、修正内容DB6、テストケースDB7、規約違反管理DB8の詳細については後述する。
端末1は、サーバ装置3と同様に、上記構成を有するものであるが、ハードディスクには各種データベースが格納されていないものとする。
図3は、図2における規約DB4の構成例を示す図である。
図3において、規約DB4は、開発するプログラムの品質を一定に保つために規約として定められた条項がまとめられたデータベース(DB)であり、規約番号411、規約違反内容412、規約レベル413、及び修正番号414の項目からなる。規約DB4は、プログラムの開示範囲及び開発言語に対応した複数の規約テーブル40で構成される。
規約番号411は、複数の各規約違反内容に割り当てられた識別用の数値である。規約違反内容412は、プログラムの品質を一定に保つために設定された各種規約違反の内容である。規約レベル413は、規約DB4内の各規約違反内容についての重要度を表すレベルであり、レベルが高い規約ほど重要度が高い。そのため、図8に示すプログラム自動修正システム入力画面10上で、プログラムの修正に使用する規約レベルをユーザに設定させ、規約レベルが設定された値以上の規約違反に対してのみ修正が行われる。修正番号414は、修正内容DB6の各データに対応させるための値である。
図4は、図2におけるタグDB5の構成例を示す図である。
図4において、タグDB5は、プログラムを解析・修正するにあたり、特殊な処理を行う必要があるタグについてまとめられたDBであり、タグ番号511、タグ内容512、処理内容513の項目からなる。タグDB5は、プログラムの開示範囲及び開発言語に対応した複数のタグテーブル50で構成される。
タグ番号511は、各種タグに割り当てられた識別用の番号である。タグ内容512は、各種タグの内容である。処理内容513は、各タグに対応する処理の内容である。
図5は、図2における修正内容DB6の構成例を示す図である。
図5において、修正内容DB6は、プログラム上の規約違反箇所の修正方法が書かれたDBであり、修正番号611、修正方法の優先度612、修正方法613、埋め込みタグ614の項目からなる。修正内容DB6は、プログラムの開示範囲及び開発言語に対応した複数の修正テーブル60で構成される。
修正番号611は、規約DB4の修正番号414に対応する番号である。修正方法の優先度612は、プログラムの規約違反に対応する複数の修正方法に設定された優先度である。優先度は、1が最も優先度が高く、順に優先度が低くなっていくものとする。修正方法613は、プログラムの規約違反に対する各種修正方法であり、各修正方法には異なる優先度が設定されている。なお、修正方法の優先度612の最も低い優先度には、修正方法613の「修正しない」が設定されている。これは、後述するプログラムの修正処理において、規約違反箇所に対して優先度の高い修正方法から順に当該修正方法を用いて修正を行って修正が適正か否かを判断する。そして、優先度が最も低い修正方法を選択せざるを得なかったときに、「修正しない」を選択させるためである。
埋め込みタグ614は、各修正方法に対応して規約違反箇所に埋め込まれるタグである。なお、埋め込みタグは、プログラムコードの仕様ではコメント文とみなされるテキストとする。
図6は、図2におけるテストケースDB7の構成例を示す図である。
図6において、テストケースDB7は、プログラム上の規約違反箇所の修正に対する妥当性を検証するために自動実行するテストケースをまとめたDBであり、テストケース番号701、テスト内容702の項目からなる。テストケース番号701は、各種テストケースに割り当てられた識別用の番号である。テスト内容702は、テスト内容である。
図7は、図2における規約違反管理DB8の構成例を示す図である。
図7において、規約違反管理DB8は、プログラムから検出した規約違反の内容及び規約違反箇所の位置、修正方法等をまとめたDBであり、規約違反の通し番号811、ファイル名812、規約違反箇所の行番号813、行のズレ量814、規約番号815、修正番号816、修正方法の優先度817、修正済みフラグ818の項目からなる(なお、ファイル名812は、絶対パス及び相対パス等によるディレクトリ構造も考慮できる)。
規約違反の通し番号811は、プログラム上で検出された複数の規約違反箇所に対応する番号である。ファイル名812は、規約違反を検出したファイル名である。規約違反箇所の行番号813は、規約違反を検出した箇所の行番号である。行のズレ量814は、規約違反の修正及びタグの埋め込みによる規約違反箇所の行のシフト量を表す。規約番号815は、規約DB4の規約番号411に対応する番号である。修正番号816は、規約DB4の修正番号414及び修正内容DB6の修正番号611に対応して規約違反箇所の修正方法を示すものである。修正方法の優先度817は、修正内容DB6の修正方法の優先度612に対応するものである。修正済みフラグ818は、規約違反箇所の修正の有無を表し、未修正の場合には「FALSE」、修正済みの場合には「TRUE」が格納される。
図8は、端末1に表示されるプログラム自動修正システム入力画面の一例を示す図である。
図8において、入力用GUIであるプログラム自動修正システム入力画面10は、後述するプログラム修正処理の開始前に端末1に表示され、プログラムの解析・修正時に必要な各種情報をユーザに入力させるための画面である。本画面10は、端末1内のアプリケーションにより表示させても、ASP等により表示させてもよい。
解析対象ファイル名入力欄901は、解析対象となるプログラムのファイル名が入力されるテキストボックスである。入力されるファイル名は複数であってもよい。また、ディレクトリ単位で入力されてもよい。参照ボタン902は、クリックされることでディレクトリ構造をツリー状で表示し、ファイル名の入力を簡易化する機能ボタンである。
言語選択ラジオボタン911は、プログラムの開発言語を選択させるものである。規約選択ラジオボタン921は、プログラムの解析・修正・タグの解析に使用する規約を選択させるものである。規約名リスト922には、規約DB4、タグDB5、修正内容DB6にあるテーブル名が表示される。規約レベル設定コンボボックス923は、プログラムの解析に使用する規約レベルを設定させるものである。
テストケース選択チェックボックス931は、プログラムの修正に対する妥当性の検証に用いるテストケースを選択させるものである。リスト932には、テストケースDB7にあるテスト内容が表示される。さらに、画面10上には、処理を開始するための開始ボタン940、処理を中止するためのキャンセルボタン950が配置されている。
次に、図1のプログラム修正システムに適用されたプログラム修正方法のアルゴリズムについて説明する。
図9及び図10は、図1のプログラム修正システムにおけるプログラム修正処理を示すフローチャートである。本処理は、プログラム自動修正システム入力画面10上で必要な項目が全てに入力された上で、開始ボタン940がクリックされると、開始される。なお、CUIの場合は開始コマンドが入力されたときに、本処理が開始される。また、本処理は、ハードディスク34に格納された所定の制御プログラムに基づいてCPU31により実行される処理である。
ステップS1では、プログラム自動修正システム入力画面10上で入力された解析対象ファイル名から1つの処理対象ファイルを選択し、別名でハードディスク34に保存する。画面10上で入力されたファイル名が1つであったときは、当該ファイルを処理対象ファイルとして選択する。
ステップS2では、選択された処理対象ファイルのプログラム内のタグを解析する。このステップでは、プログラム自動修正システム入力画面10上の規約選択ラジオボタン921で選択された規約及び言語選択ラジオボタン911で選択されたプログラムの開発言語に対応するタグテーブルをタグDB5内のタグテーブル50から選択する。そして、プログラム内に選択されたタグテーブル内のタグ内容512に該当するタグがあった場合、処理内容513に基づいて処理を行う。なお、プログラム内でタグが使用されていない場合は、本ステップをスルーする。
ステップS3では、処理対象ファイルの修正前のプログラムに対して所定のテストを行い、そのテスト結果を保存する。このステップでは、まずプログラム自動修正システム入力画面10上のテストケース選択チェックボックス931で選択されたテストケース(テスト内容)をテストケースDB7から検索する。そして、そのテストケースに対応するテストマクロをテストマクロDB9から抽出し、当該テストマクロに基づいてプログラムのテストを行い、そのテスト結果をハードディスク34に保存する。保存されたテスト結果は、プログラムの修正に対する妥当性検証に使用される。
ステップS4では、処理対象ファイルのプログラムを静的及び動的に解析することにより規約違反箇所を検出する(プログラム解析処理)。このとき、プログラム上で規約違反を検出した場合、当該プログラムのファイル名や規約違反箇所の行番号、行のズレ量等の規約違反箇所に関する情報(規約違反箇所情報)を規約違反管理DB8に登録する。このステップの詳細については図11で説明する。
ステップS5では、規約違反箇所があるか否かを判別する。規約違反箇所が無い場合は、図10のステップS11へ移行する一方、プログラム上に規約違反箇所がある場合は、規約違反管理DB8から規約違反箇所情報の1つを抽出し、修正対象となる規約違反箇所を選択する(ステップS6)。規約違反箇所情報は、規約違反管理DB8における修正済みフラグ818の値が「FALSE」になっている行である。そして、抽出された規約違反箇所情報における規約違反の通し番号811を用いて以降の処理(ステップS7〜ステップS9)を行う。
ステップS7では、修正対象となる規約違反箇所を修正し、埋め込みタグの挿入を行う。このステップでは、まず、プログラム自動修正システム入力画面10上の規約選択ラジオボタン921で選択された規約と言語選択ラジオボタン911で選択されたプログラムの開発言語に対応する修正テーブルを修正内容DB6内の修正テーブル60から選択する。そして、規約違反箇所に対応する規約違反の通し番号811をキーとして規約違反管理DB8から規約違反箇所情報を検索する。そして、検索した規約違反箇所情報の修正番号816の値に対応する修正番号を修正内容DB6の修正番号611から検索する。さらにその修正番号611に対応する修正方法613の中から、修正方法の優先度817の値に対応する優先度を修正内容DB6内の修正方法の優先度612から選択し、選択された修正方法613により当該規約違反箇所を修正する。そして、選択された修正方法613に対応する埋め込みタグ614のタグ(テキスト)を修正された行の上に挿入する。
ステップS8では、規約違反箇所の修正及びタグの挿入による行のズレ量(行の増加分)を計算し、算出したズレ量を規約違反管理DB8のズレ量814の値に加えて規約違反管理DB8を更新する。このとき、算出したズレ量を規約違反管理DB8におけるズレ量814の全ての値に加えるのではなく、ファイル名812のファイル名が修正された規約違反箇所を含むプログラムファイルと同一のプログラムファイル(同一ファイル名)で、規約違反箇所の行番号813の値が、修正された規約違反箇所に対応する行番号813の値以上のものに対して加える。これにより、ずれた量だけ行番号がずれるので、規約違反箇所の行番号が適切なものとなる。
ステップS9では、修正された規約違反箇所に対応する、規約違反管理DB8の修正済みフラグ818の値を「TRUE」に変更する。ステップS10では、処理対象ファイルの規約違反箇所を全て修正したか否かを判別する。処理対象ファイルの全ての規約違反箇所の修正が完了している場合は、図11のステップS11へ移行する一方、未完了の場合はステップS6の処理に戻る。すなわち、規約違反管理DB8の修正済みフラグ818の値が全て「TRUE」となれば、当該処理対象ファイルの規約違反箇所の修正を完了とする。
図10において、ステップS11では、修正したプログラムの実行ファイルを作成する。なお、実行ファイルの作成が不要な言語の場合は、このステップをスルーする。この判断は、プログラム自動修正システム入力画面10上の言語選択ラジオボタン911の設定により判断する。
ステップS12では、実行ファイルの作成に成功したか否かを判別する。実行ファイルの作成に失敗した場合は、プログラム内の不適当な修正箇所の調査及び不適当な修正箇所の再修正処理を行う(ステップS16)。このステップ16の詳細については図12で説明する。
一方、実行ファイルの作成に成功した場合及び実行ファイル作成が不要な言語の場合は、修正後のプログラムに対して所定のテストを行い、そのテスト結果を保存する(ステップS13)。このステップでは、ステップS11で作成した修正後のプログラムの実行ファイルに対して、ステップS3で行ったものと同じテストを行い、そのテスト結果をハードディスク34に保存する。
ステップS14では、プログラムの修正前後のテスト結果を比較する。すなわち、ステップS3及びステップS13でハードディスク34に保存したテスト結果を比較する。ステップS15では、比較したテスト結果が一致したか否かを判別する。テスト結果が一致したときは、ステップS17へ移行する一方、テスト結果が一致していないときは、ステップS16へ移行する。
ステップS17では、プログラム自動修正システム入力画面10上で入力された全ての解析対象ファイルについてプログラム修正処理が終了したか否かを判別する。この結果、全ての解析対象ファイルについてプログラム修正処理が終了した場合は、ステップS18へ移行する一方、全てのファイルについて終了していない場合は、図9のステップS1の処理に戻り、他の処理対象ファイルを選択する。
ステップS18では、ステップS1〜ステップS17までに行った内容をレポートファイルとして作成してハードディスク34に保存する。ステップS19では、ステップS18で作成したレポートファイルの内容に基づいて、図14に示すようなプログラム自動修正システム出力画面300を端末1に表示する。
図11は、図9ステップS4におけるプログラム解析処理の詳細を示すフローチャートである。
ステップS41では、プログラムを静的・動的に解析することにより規約違反箇所を検出する。次に、ステップS42では、規約違反箇所があるか否かを判別する。規約違反箇所がある場合は、ステップS43へ移行する一方、規約違反箇所がない場合はステップS45へ移行する。
ステップS43では、検出された規約違反箇所の規約レベルとプログラム自動修正システム入力画面10上の規約レベル設定コンボボックス923で設定された規約レベルとの比較を行い、「規約違反箇所の規約レベル≧規約レベル設定コンボボックス923で設定された規約レベル」が成り立つか否かを判別する。規約違反箇所の規約レベルは、画面10上の規約選択ラジオボタン921で選択された規約及び言語選択ラジオボタン911で選択されたプログラムの開発言語に対応する、規約DB4内の規約テーブルの該当する規約違反内容に対応する規約レベルである。ステップS43が成り立つときは、ステップS44へ移行する一方、成り立たないときは、ステップS45へ移行する。
ステップS44では、規約違反箇所を検出したプログラムのファイル名や規約違反箇所の行番号等を規約違反管理DB8に登録する。規約違反管理DB8の各項目にはそれぞれ以下の値を入力する。
ファイル名812:規約違反箇所を検出したプログラムのファイル名
規約違反箇所の行番号813:検出した規約違反箇所の行番号
行のズレ量814:0
規約番号815:検出した規約違反箇所の規約違反内容に対応する規約DB4上の規約番号411の値
修正番号816:検出した規約違反箇所の規約違反内容に対応する規約DB4上の修正番号414の値
修正方法の優先度817:1
修正済みフラグ818:FALSE
ステップS45では、処理対象ファイルの末尾(EOF)まで解析したか否かを判別する。ファイルの末尾まで解析が完了した場合はリターンする一方、未完了の場合はステップS41の処理に戻る。
図12及び図13は、図9のステップS16における処理の詳細を示すフローチャートである。
ステップS1601では、処理対象ファイルを修正前の状態に戻す。修正前の状態に戻すには、図9のステップS3にてハードディスク34に別名で保存した処理対象ファイルを、現在処理中のファイルに上書きすることで実現する。ステップS1602では、規約違反管理DB8における該当ファイルの行のズレ量814の値を「0」に変更する。
次に、ステップS1603では、規約違反管理DB8における該当ファイルの修正済みフラグ818の値を「FALSE」に変更する。ステップS1604では、図9のステップS6と同様に、規約違反管理DB8から規約違反箇所情報の1つを抽出し、修正対象となる規約違反箇所を選択する。規約違反箇所情報は、規約違反管理DB8における修正済みフラグ818の値が「FALSE」になっている行である。そして、抽出された規約違反箇所情報における規約違反の通し番号811を用いてステップS1605以降の処理を行う。
ステップS1605は、図9のステップS7と同様に、修正対象となる規約違反箇所を修正し、埋め込みタグの挿入を行う。このステップでは、まず、プログラム自動修正システム入力画面10上の規約選択ラジオボタン921で選択された規約と言語選択ラジオボタン911で選択されたプログラムの開発言語に対応する修正テーブルを修正内容DB6の修正テーブル60から選択する。そして、規約違反箇所に対応する規約違反の通し番号811をキーとして規約違反管理DB8から規約違反箇所情報を検索する。そして、検索した規約違反箇所情報の修正番号816の値に対応する修正番号を修正内容DB6の修正番号611から検索する。さらにその修正番号611に対応する修正方法613の中から、修正方法の優先度817の値に対応する優先度を修正内容DB6内の修正方法の優先度612から選択し、選択された修正方法613により当該規約違反箇所を修正する。そして、選択された修正方法613に対応する埋め込みタグ614のタグ(テキスト)を修正された行の上に挿入する。
ステップS1606では、図9のステップS8と同様に、規約違反箇所の修正及びタグの挿入による行のズレ量(行の増加分)を計算し、算出した行のズレ量を規約違反管理DB8のズレ量814の値に加えて規約違反管理DB8を更新する。このとき、算出したズレ量を規約違反管理DB8におけるズレ量814の全ての値に加えるのではなく、ファイル名812のファイル名が修正された規約違反箇所を含むプログラムファイルと同一のプログラムファイル(同一ファイル名)で、規約違反箇所の行番号813の値が、修正された規約違反箇所に対応する行番号813の値以上のものに対して加える。これにより、ずれた量だけ行番号がずれるので、規約違反箇所の行番号が適切なものとなる。
ステップS1607では、図10のステップS11と同様に、修正したプログラムの実行ファイルを作成する。なお、実行ファイルの作成が不要な言語の場合は、このステップをスルーする。この判断は、プログラム自動修正システム入力画面10上の言語選択ラジオボタン911の設定により判断する。
ステップS1608では、図10のステップS12と同様に、実行ファイルの作成に成功したか否かを判別する。実行ファイルの作成に成功した場合及び実行ファイルの作成が不要な言語の場合は、ステップS1609へ移行する一方、実行ファイルの作成に失敗した場合は、図13のステップS1614へ移行する。
ステップS1609では、図9のステップS13と同様に、修正後のプログラムに対して所定のテストを行い、そのテスト結果を保存する。このステップでは、ステップS1607で作成した修正後のプログラムの実行ファイルに対し、図9のステップS3で行ったテストと同じテストを行い、テスト結果をハードディスク34に保存する。
ステップS1610では、図9のステップS14と同様に、プログラムの修正前後のテスト結果を比較する。すなわち、図9のステップS3及びステップS1609でハードディスク34に保存したテスト結果を比較する。ステップS1611では、ステップS1610において比較したテスト結果が一致したか否かを判別する。テスト結果が一致したときは、ステップS1612へ移行する一方、テスト結果が一致していなければ、図13のステップS1614へ移行する。
ステップS1612は、ステップS1610で行った比較においてテスト結果が一致していた場合に行うステップである。このステップでは、規約違反管理DB8における、修正対象としている規約違反箇所情報の修正済みフラグ818の値を「TRUE」にする。
ステップS1613は、処理対象ファイルにおける全ての規約違反箇所の修正が完了している場合、すなわち当該処理対象ファイルに対応する規約違反管理DB8の修正済みフラグ818の値が全て「TRUE」であるときは、全修正完了としてリターンする。一方、未完了の場合はステップS1604の処理に戻る。
図13において、ステップS1614は、ステップS1610で行った比較においてテスト結果が不一致だった場合及びステップS1607で行った実行ファイルの作成に失敗した場合、すなわち修正が不適当であった場合に行うステップである。このステップでは、ステップS1605で行った修正箇所(修正と同時に埋め込まれたタグを含む)を修正前の状態に戻す。また、プログラムを修正前の状態に戻すことによりプログラムの行数が増減する場合は、ステップS1605と同様にズレ量をカウントし、ステップS1615へ移行する。
ステップS1615では、プログラムを修正前の状態に戻すことによりプログラムの行数が増減する場合は、ステップS1605と同様にズレ量(行の減少分)を計算し、算出した規約違反箇所の行のズレ量を規約違反管理DB8のズレ量814から引いて規約違反管理DB8を更新する。このとき、算出したズレ量を規約違反管理DB8におけるズレ量814の全てから引くのではなく、修正された規約違反箇所を含むプログラムファイルと同一のファイル(同一ファイル名)で、規約違反箇所の行番号813の値が、修正された規約違反箇所に対応する行番号813の値以上のものに対して減算する。これにより、ステップS1606でずれた量だけ行番号が元に戻るので、規約違反箇所の行番号が適切なものとなる。
ステップS1616では、修正対象の修正方法の優先度817の値に1を加えて、ステップS1605へ移行する。ステップS1605では、修正内容DB6上の同一の修正番号に対応する修正方法の優先度612から、増加した優先度の値に基づいて該当する修正方法を選択し、選択された修正方法により規約違反箇所を修正し、図12のステップS1605へ移行する。
テストを行って修正の前後でテスト結果が一致しなかった場合、不適当な修正箇所があったと判断して修正箇所を戻し、再度テスト実行・比較を行うことで、どの修正箇所が不適当であったかを調査する。そして、修正が不適当であった箇所は優先順位が次点である修正を行い、再度テストを実行する。全ての修正方法が不適当であった場合、その箇所の修正は行わず、さらに、修正内容DB6の設定に従ってその箇所にタグを埋め込むこともできる。
図14は、端末1に表示されるプログラム自動修正システム出力画面の一例を示す図である。
図14において、出力用GUIであるプログラム自動修正システム出力画面300は、プログラム修正処理の終了後の図10のステップS19で端末1に表示される画面である。本プログラム自動修正システム出力画面300は、プログラム自動修正システム入力画面10と同様に、端末1内のアプリケーションにより表示させても、ASP等により表示させてもよい。
設定条件表示欄3010では、プログラム自動修正システム入力画面10で入力又は選択された項目が表示される。テストケース表示欄3020では、プログラム自動修正システム入力画面10で選択されたテストケースの内容を表示する。
解析・修正結果表示欄3030では、解析及び修正したファイル名リスト3031、各ファイルの規約違反箇所数リスト3032を表示する。ファイル名リスト3032から1つのファイル名が選択された後、詳細ボタン3033がクリックされると、その詳細内容が詳細表示欄3040に表示される。
詳細表示欄3040では、現在詳細表示しているファイル名3041と規約違反箇所数3042が表示される。また、詳細表示欄3040には、修正前のプログラムの行番号を示す行番号3043と、修正前のプログラムを表示するエディター領域(修正前)3044と、修正後のプログラムを表示するエディター領域(修正後)3045とが表示される。
保存ボタン3050は、詳細表示された内容をHTML(HyperText Markup Language)形式で保存するための機能ボタンであり、閉じるボタン3060は、プログラム自動修正システム出力画面300を閉じるための機能ボタンである。
また、プログラム自動修正システム出力画面300では、修正を行った箇所、例外的に認められた箇所などにタグが埋め込まれているため、タグを解析することにより「修正箇所を太字で表示」「例外的な箇所を赤文字で表示」など、視覚的に分かりやすい表示を行うことができる。
次に、上記プログラム修正システムによるプログラムの修正例について説明する。
図15は、解析対象となるプログラムの一例を示す図であり、図16は、図15に示すプログラムの修正例を示す図である。
図15において、プログラム100は、開発言語がC言語で社内システム用のプログラム(ファイル名「aaa.c」)であり、変数宣言箇所1001で規約違反となる「unsigned」修飾子が使われている。このプログラム100に対して、プログラム自動修正システム入力画面10において下記設定を行い(図8参照)、上記プログラム修正システムを使用して規約に適合するかのチェックと自動修正を行う。
解析対象となるプログラム100のファイル名:「aaa.c」
言語選択ラジオボタン911で選択されたプログラムの開発言語:「C言語」
規約選択ラジオボタン921及び規約レベル設定コンボボックス923で選択された規約及び規約レベル:「社内システム用」、「規約レベル4」
テストケース選択チェックボックス931で選択されたテストケース:「関数Aの繰り返しテストを行う」、「サブシステムBの繰り返しテストを行う」
プログラム自動修正システム入力画面10上で上記設定が行われ、開始ボタン940がクリックされると、図9及び図10に示すフローチャートに基づいて処理が行われる。
ステップS1では、解析対象ファイルとして「aaa.c」を選択し、別名で保存する。次に、ステップS2では、処理対象ファイルとして選択されたファイル名「aaa.c」のプログラム100内のタグを解析する。本例ではプログラム100内でタグが使用されていないために何も行わない。つづいて、ステップS3では、テストケース選択チェックボックス931で選択されたテストケースに従ってプログラム100にテストを行い、そのテスト結果をプログラム修正前のテスト結果としてハードディスク34に保存する。
次に、ステップS4では、プログラム100を静的及び動的に解析し、プログラム100上の変数宣言箇所1001が規約DB4における規約番号3(図3の囲み箇所420)の規約に違反することを検出する(図11のステップS42でYES)。そして、規約違反箇所に対応する規約レベル:「9」(図3の囲み箇所420)>プログラム自動修正システム入力画面10上の規約レベル設定コンボボックスで設定された規約レベル:「4」(図8参照)であることから、規約違反と判断し(図11のステップS43でYES)、図7に示すように、規約違反管理DB8の通し番号811の値が1である行に、下記項目について規約違反箇所情報を登録する。
ファイル名812:「aaa.c」
規約違反箇所の行番号813:2
行のズレ量814:0
規約番号815:3(図3の囲み箇所420の規約番号411)
修正番号816:3(図3の囲み箇所420の修正番号414)
修正方法の優先度817:1
修正済みフラグ818:「FALSE」
ステップS5では、ステップS4で規約違反を検出したためにステップS6の処理に進む。ステップS6では、規約違反管理DB8から通し番号1の規約違反箇所情報を抽出する。ステップS7では、ステップS6で抽出した規約違反箇所情報における規約番号815の値「3」に対応する修正を行う。このとき、修正内容DB6の社内システム用修正テーブル(C言語)を選択し、修正番号611の値が「3」で且つ修正方法の優先度が「1」の修正方法613の「”unsigned”削除する」修正方法を行う(図5の囲み箇所620)。また、埋め込みタグ614に従って、「/* <color BLUE> rule3 p1 */」をプログラム100の修正された行の上に挿入する。その結果、プログラム100は図16に示すプログラム200のように修正される。そして、ステップS7の処理により規約違反箇所の行番号「2」行目以下のプログラムが1行分シフトするため、行のずれ量として「1」をステップS8に渡す。
ステップS8では、ステップS7から渡されたズレ量「1」を規約違反管理DB8の行のズレ量814の値に加えて更新する。次に、ステップS9では、規約違反管理DB8の修正済みフラグ818を「TRUE」に変更する。ステップS10では、ステップS9で処理対象ファイル「aaa.c」の規約違反箇所が全て修正されたため(すなわち、修正済みフラグ818が「TRUE」)、ステップS11へ進む。
ステップS11では、ステップS9で修正されたプログラム200の実行ファイルを作成する。ステップS12では、ステップS11での実行ファイルの作成が成功したかを判断する。本例では成功したとして、ステップS13へ進む。ステップS13では、ステップS11で作成した修正後のプログラム200の実行ファイルに対し、ステップS3と同様のテストを行い、そのテスト結果をプログラム修正後のテスト結果としてハードディスク34に保存する。
ステップS14では、ステップS3で保存したプログラム修正前のテスト結果と、ステップS13で実行したプログラム修正後のテスト結果とを比較する。ステップS15では、ステップS14での比較において、両者が一致するか否かを判断する。本例では一致するとしてステップS17へ進む。
ステップS17では、プログラム自動修正システム入力画面10で入力された全てのファイル名のプログラムに対して、プログラム修正処理を行ったかを判断する。本例では、処理対象ファイルのプログラムがプログラム100(ファイル名「aaa.c」)のみであり、当該プログラム100に対して処理を行ったので、ステップS18へ進む。
ステップS18では、ステップS1〜ステップS17で行った処理内容についてレポートファイルを作成する。レポートファイルは、修正前後のプログラム及び各DBの内容に基づいて作成される。ステップS19では、ステップS18で作成したレポートファイルを元に、図14に示すプログラム自動修正システム出力画面300を端末1に表示する。このプログラム自動修正システム出力画面300において、ユーザが囲み箇所3034にあるファイル名リスト3031でファイル名「aaa.c」を選択し、詳細ボタン3033をクリックすると、詳細表示欄3040にプログラム修正前後のプログラム比較結果を表示する。さらに、囲み箇所3046にあるように、修正後のプログラムにのみ規約違反の内容と修正方法を表示する。また、修正した箇所にあたる囲み箇所3047の文字の色を青色とする。これら修正方法の表示と修正箇所の色の変更は、プログラム内に挿入したタグと、各DBの内容に従う。なお、修正した箇所にあたる文字色を青色にしているが、ユーザが識別しやすいものであればよく、他の色を配色したり、枠を表示したりしてもよい。
上記処理により、ファイル名「aaa.c」のプログラム100は図16に示すプログラム200のように修正される。修正後のプログラム200では、変数宣言箇所2002に「unsigned」修飾子がなくなり、その上の行にタグ2001が埋め込まれている。
このように、プログラムに対して開発規約が守られているかのチェックを行い、規約違反箇所があれば修正方法を選択して自動修正すると共に、修正内容の妥当性を自動でチェックすることができる。
上記実施の形態によれば、プログラムを予め設定された規約に従って自動修正するので、ユーザが作成したプログラムの品質を安定させる。また、修正されたプログラムに対してテストを行い、修正内容の妥当性を判断するため、修正後のプログラムをユーザがテストする必要がなくなり、開発効率が向上する。
さらに、修正前後のプログラムの修正箇所には、タグが挿入されているため、タグに応じてテキストのカラーを変えることが可能なエディターで閲覧することで、修正箇所及び修正理由をグラフィカルに表示することが可能となる。これにより、ユーザへの規約の浸透を図ることができる。
なお、上記実施の形態では、テストケースに従って、プログラムの修正の前後でテストを行い、そのテスト結果が一致するかを確認している。このテストケースは、ユーザがテストケースDB7に登録した内容でもよいし、また、ATG(Automatic Test case Generation)により自動で生成するものでもよい。さらに、プログラム上にタグの内容で記述したものでもよい。また、実施するテストは単体テストでもよいし、複数のテスト対象からなる結合テストや複数のシステムからなるシステムテストでもよい。
他の実施の形態として、規約に従ったプログラムの解析に加えて、プログラム内に書かれたタグ(プログラムのコメントとして記載されたもの)に従って処理を行うようにしてもよい。例えば、「タグAがあった場合、例外的に規約違反が認められた箇所であることを自動で認識し、修正は行わない」と設定することによって、例外的に規約違反が容認された箇所があった場合に、自動修正を行わないようにすることができる。
また、一連の処理が終わった後、修正箇所・修正内容・修正できなかった箇所、テスト結果などをレポートファイルとして作成し、画面300に出力する。この際、修正を行った箇所、例外的に認められた箇所など、このシステムで制御する箇所にタグが埋め込まれているため、タグを解析することにより、「修正箇所を太字で表示」、「例外的な箇所を赤文字で表示」など、視覚的に分かりやすい表示を行うことができる。
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行う場合である。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、OS(オペレーティングシステム)に供給されるスクリプトデータ等の形態から成ってもよい。
本発明の実施の形態に係るプログラム修正システムの構成例を示すブロック図である。 図1のサーバ装置の内部構成を示すブロック図である。 図2における規約DBの構成例を示す図である。 図2におけるタグDBの構成例を示す図である。 図2における修正内容DBの構成例を示す図である。 図2におけるテストケースDBの構成例を示す図である。 図2における規約違反管理DBの構成例を示す図である。 端末に表示されるプログラム自動修正システム入力画面の一例を示す図である。 図1のプログラム修正システムにおけるプログラム修正処理を示すフローチャート(その1)である。 図1のプログラム修正システムにおけるプログラム修正処理を示すフローチャート(その2)である。 図9ステップS4におけるプログラム解析処理の詳細を示すフローチャートである。 図9のステップS16における処理の詳細を示すフローチャート(その1)である。 図9のステップS16における処理の詳細を示すフローチャート(その2)である。 端末に表示されるプログラム自動修正システム出力画面の一例を示す図である。 解析対象となるプログラムの一例を示す図である。 図15に示すプログラムの修正例を示す図である。
符号の説明
1 端末
2 通信ネットワーク
3 サーバ装置
4 規約DB
5 タグDB
6 修正内容DB
7 テストケースDB
8 規約違反管理DB
9 テストマクロDB
31 CPU
34 ハードディスク

Claims (10)

  1. ユーザが作成したプログラムをテスト可能なテスト手段と、作成したプログラムを修正する修正手段とを備えるプログラム修正装置において、
    前記プログラムの規約と修正方法を記憶するプログラム規約記憶手段と、
    前記プログラム及びテスト結果を記憶する第1のテスト結果記憶手段と、
    前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理手段と、
    前記検出された違反箇所を前記修正方法に基づいて修正する第1のプログラム修正手段と、
    前記修正されたプログラムをテストしてテスト結果を記憶する第2のテスト結果記憶手段と、
    前記第1のテスト結果記憶手段で記憶されたテスト結果と前記第2のテスト結果記憶手段で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第2のプログラム修正手段とを備えることを特徴とするプログラム修正装置。
  2. 前記第2のプログラム修正手段は、前記プログラム規約記憶手段に記憶された複数の修正方法から優先度に応じて修正方法を選択し、当該修正方法に基づいて修正箇所を再修正することを特徴とする請求項1記載のプログラム修正装置。
  3. 前記第2のプログラム修正手段は、前記検出された違反個所が複数ある場合、検出された違反ごとに修正することを特徴とする請求項1又は2記載のプログラム修正装置。
  4. 前記テスト手段は、前記プログラム又は前記修正されたプログラムから実行ファイルを作成し、当該実行ファイルの作成が成功したかを判別することを特徴とする請求項1乃至3のいずれか1項に記載のプログラム修正装置。
  5. 前記第1及び前記第2のプログラム修正手段は、前記修正を行った際に、当該修正箇所にタグを埋め込むことを特徴とする請求項1乃至4のいずれか1項の記載のプログラム修正装置。
  6. 前記規約違反個所情報は前記規約に違反する箇所の行番号情報を備え、
    前記第1及び前記第2のプログラム修正手段は、修正したプログラムへの挿入行数を記憶し、前記修正プログラム内の次の違反箇所を修正する際に、前記規約違反箇所情報の行番号情報に前記挿入行数を加えることを特徴とする請求項1乃至5のいずれか1項の記載のプログラム修正装置。
  7. 前記プログラムを修正した内容をレポートファイルとして作成するレポート作成手段をさらに備えることを特徴とする請求項1乃至6のいずれか1項に記載のプログラム修正装置。
  8. ユーザが作成したプログラムを修正するプログラム修正方法において、
    前記プログラムの規約と修正方法を記憶手段に記憶するプログラム規約記憶工程と、
    前記プログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第1のテスト結果記憶工程と、
    前記プログラムから前記規約に違反する箇所を検出して規約違反箇所情報として登録する規約違反管理工程と、
    前記検出された違反箇所を前記修正方法に基づいて修正する第1のプログラム修正工程と、
    前記修正されたプログラムをテスト可能なテスト手段に送信し、返信されたテスト結果を記憶する第2のテスト結果記憶工程と、
    前記第1のテスト結果記憶工程で記憶されたテスト結果と前記第2のテスト結果記憶工程で記憶されたテスト結果を比較して一致しない場合、修正箇所を再修正する第2のプログラム修正工程とを備えることを特徴とするプログラム修正方法。
  9. 請求項8記載のプログラム修正方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
  10. 請求項1乃至7のいずれか1項に記載のプログラム修正装置にネットワークを介して接続された端末を備えるプログラム修正システムにおいて、
    前記端末は、プログラムの解析又は修正に必要な設定情報を入力させて前記プログラム修正装置に送る入力手段と、前記プログラム修正装置からの前記プログラムの修正状況及び結果を示す情報を出力する出力手段とを備えることを特徴とするプログラム修正システム。
JP2007094693A 2007-03-30 2007-03-30 プログラム修正装置及び方法、並びにプログラム Pending JP2008250914A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007094693A JP2008250914A (ja) 2007-03-30 2007-03-30 プログラム修正装置及び方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007094693A JP2008250914A (ja) 2007-03-30 2007-03-30 プログラム修正装置及び方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2008250914A true JP2008250914A (ja) 2008-10-16

Family

ID=39975737

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007094693A Pending JP2008250914A (ja) 2007-03-30 2007-03-30 プログラム修正装置及び方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP2008250914A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140408A (ja) * 2008-12-15 2010-06-24 Nomura Research Institute Ltd ソースコード変換装置
JP2012203580A (ja) * 2011-03-24 2012-10-22 Hitachi Ltd 移行テスト支援システム、移行テスト支援プログラム、移行テスト支援方法
WO2013072977A1 (ja) * 2011-11-18 2013-05-23 株式会社日立製作所 情報処理装置、プログラム及び情報処理方法
JP2014089704A (ja) * 2012-10-11 2014-05-15 Tata Consultancy Services Ltd ソフトウェアアプリケーションのコンプライアンス検査および詳細な解析を提供するためのシステムおよび方法
JP2014134962A (ja) * 2013-01-10 2014-07-24 Fujitsu Marketing Ltd ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム
JP2017045446A (ja) * 2015-08-25 2017-03-02 富士通株式会社 ソフトウェアプログラムを修復する方法、記憶媒体及びシステム
JP2018055676A (ja) * 2016-09-26 2018-04-05 富士通株式会社 自動ソフトウェアプログラム修復
JP2018133081A (ja) * 2017-02-17 2018-08-23 富士通株式会社 ソフトウェアプログラム修復のためのメソッド呼び出し合成
JP2019029015A (ja) * 2017-08-03 2019-02-21 富士通株式会社 インタラクティブなソフトウェアプログラムの修復
JP2019096292A (ja) * 2017-11-24 2019-06-20 富士通株式会社 自動化されたソフトウェアプログラム修復候補の選択
JP7409197B2 (ja) 2019-06-20 2024-01-09 富士通株式会社 ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01175036A (ja) * 1987-12-29 1989-07-11 Fujitsu Ltd ソースプログラム変換装置
JPH03288226A (ja) * 1990-04-04 1991-12-18 Hitachi Ltd ソフトウエア評価方法
JPH09185500A (ja) * 1995-12-28 1997-07-15 Nec Corp ソースプログラムの自動修正装置および自動修正方法
JPH11296406A (ja) * 1998-04-14 1999-10-29 Kawasaki Steel Systems R & D Corp プログラム修正支援方法
JP2000003283A (ja) * 1998-06-15 2000-01-07 Nec Corp プログラム作成支援装置
JP2001350650A (ja) * 2000-06-08 2001-12-21 Ntt Comware Corp ソフトウェアプログラム同等性検証方法及びソフトウェアプログラム同等性検証装置並びにその記録媒体
JP2005284785A (ja) * 2004-03-30 2005-10-13 Jfe Steel Kk プログラム開発装置
JP2006236042A (ja) * 2005-02-25 2006-09-07 Matsushita Electric Ind Co Ltd ソースプログラム解析装置およびその方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01175036A (ja) * 1987-12-29 1989-07-11 Fujitsu Ltd ソースプログラム変換装置
JPH03288226A (ja) * 1990-04-04 1991-12-18 Hitachi Ltd ソフトウエア評価方法
JPH09185500A (ja) * 1995-12-28 1997-07-15 Nec Corp ソースプログラムの自動修正装置および自動修正方法
JPH11296406A (ja) * 1998-04-14 1999-10-29 Kawasaki Steel Systems R & D Corp プログラム修正支援方法
JP2000003283A (ja) * 1998-06-15 2000-01-07 Nec Corp プログラム作成支援装置
JP2001350650A (ja) * 2000-06-08 2001-12-21 Ntt Comware Corp ソフトウェアプログラム同等性検証方法及びソフトウェアプログラム同等性検証装置並びにその記録媒体
JP2005284785A (ja) * 2004-03-30 2005-10-13 Jfe Steel Kk プログラム開発装置
JP2006236042A (ja) * 2005-02-25 2006-09-07 Matsushita Electric Ind Co Ltd ソースプログラム解析装置およびその方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140408A (ja) * 2008-12-15 2010-06-24 Nomura Research Institute Ltd ソースコード変換装置
JP2012203580A (ja) * 2011-03-24 2012-10-22 Hitachi Ltd 移行テスト支援システム、移行テスト支援プログラム、移行テスト支援方法
WO2013072977A1 (ja) * 2011-11-18 2013-05-23 株式会社日立製作所 情報処理装置、プログラム及び情報処理方法
JP2014089704A (ja) * 2012-10-11 2014-05-15 Tata Consultancy Services Ltd ソフトウェアアプリケーションのコンプライアンス検査および詳細な解析を提供するためのシステムおよび方法
JP2014134962A (ja) * 2013-01-10 2014-07-24 Fujitsu Marketing Ltd ソースコード変換装置、ソースコード変換方法及びソースコード変換プログラム
JP2017045446A (ja) * 2015-08-25 2017-03-02 富士通株式会社 ソフトウェアプログラムを修復する方法、記憶媒体及びシステム
JP2018055676A (ja) * 2016-09-26 2018-04-05 富士通株式会社 自動ソフトウェアプログラム修復
JP2018133081A (ja) * 2017-02-17 2018-08-23 富士通株式会社 ソフトウェアプログラム修復のためのメソッド呼び出し合成
JP7056139B2 (ja) 2017-02-17 2022-04-19 富士通株式会社 ソフトウェアプログラム修復のためのメソッド呼び出し合成
JP2019029015A (ja) * 2017-08-03 2019-02-21 富士通株式会社 インタラクティブなソフトウェアプログラムの修復
JP7070195B2 (ja) 2017-08-03 2022-05-18 富士通株式会社 インタラクティブなソフトウェアプログラムの修復
JP2019096292A (ja) * 2017-11-24 2019-06-20 富士通株式会社 自動化されたソフトウェアプログラム修復候補の選択
JP7110789B2 (ja) 2017-11-24 2022-08-02 富士通株式会社 自動化されたソフトウェアプログラム修復候補の選択
JP7409197B2 (ja) 2019-06-20 2024-01-09 富士通株式会社 ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化

Similar Documents

Publication Publication Date Title
JP2008250914A (ja) プログラム修正装置及び方法、並びにプログラム
US10289275B2 (en) Standard commands for native commands
US8266700B2 (en) Secure web application development environment
US20070156644A1 (en) SQL injection detector
US20190026261A1 (en) Methods and systems for validating multiple methods of input using a unified rule set
US20130191814A1 (en) Test scenario generation method, test scenario generation system, and test scenario generation program
CN113448862B (zh) 软件版本测试方法、装置及计算机设备
KR20190095099A (ko) 거래 시스템 에러 검출 방법, 장치, 저장 매체 및 컴퓨터 장치
US7058582B2 (en) Method for performing programming by plain text requests
CN112540924A (zh) 接口自动化测试方法、装置、设备及存储介质
WO2021036652A1 (zh) 多角色页面跳转方法、装置、计算机设备及可读存储介质
CN110806916A (zh) 实现saas平台各租户个性化登录页的方法及系统
JP5141460B2 (ja) 制御プログラム、情報処理システム、および情報処理方法
US11526340B2 (en) Providing context-based application suggestions
KR101479516B1 (ko) 소스코드 보안 약점 탐지 장치 및 방법
EP2728472A2 (en) User terminal, reliability management server, and method and program for preventing unauthorized remote operation
CN110874475A (zh) 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质
JP4215255B2 (ja) デグレード確認検査方法、デグレード確認検査システム、およびそのためのプログラム
CN111538994A (zh) 一种系统安全检测及修复方法、装置、存储介质及终端
JP2009169573A (ja) 解析結果出力装置、及び解析結果出力方法
JP4643900B2 (ja) チェックコード生成機能を有する入力チェックシステム
JP5351565B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP2015148925A (ja) プログラム生成装置および方法
JP6221869B2 (ja) 画面遷移制御方法、画面遷移制御プログラムおよび画面遷移制御装置
CN114760086B (zh) 一种网站页面合规性检测方法、装置、存储介质及终端

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100427

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101005