JP5757167B2 - 判定作業支援システム、判定作業支援方法、及びプログラム - Google Patents

判定作業支援システム、判定作業支援方法、及びプログラム Download PDF

Info

Publication number
JP5757167B2
JP5757167B2 JP2011129146A JP2011129146A JP5757167B2 JP 5757167 B2 JP5757167 B2 JP 5757167B2 JP 2011129146 A JP2011129146 A JP 2011129146A JP 2011129146 A JP2011129146 A JP 2011129146A JP 5757167 B2 JP5757167 B2 JP 5757167B2
Authority
JP
Japan
Prior art keywords
information
indication
function
list information
tool
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.)
Expired - Fee Related
Application number
JP2011129146A
Other languages
English (en)
Other versions
JP2012256220A (ja
Inventor
充幸 大橋
充幸 大橋
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2011129146A priority Critical patent/JP5757167B2/ja
Publication of JP2012256220A publication Critical patent/JP2012256220A/ja
Application granted granted Critical
Publication of JP5757167B2 publication Critical patent/JP5757167B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、判定作業支援システムに関し、特にソースコード検証ツールが発見した指摘に対して精査を実施する作業を支援するシステムに関する。
ソフトウェアの品質管理(QC:Quality Control)の一環として、ソースコード(Source code:原始プログラム)の品質を向上させるために、ソースコード検証システムが用いられる。
ソースコード検証システムとは、プログラムを実際に実行することなく、ソースコードを解析することで、ソースコード中の記述ミスや動作時の不具合を指摘することを可能とするシステムである。ソースコード検証システムは、主に、計算機等がソースコード検証ツールを実行することにより実現される。ソースコード検証ツールとは、ソースコードを検証する機能を提供するソフトウェア等のことである。
既存のソースコード検証システムでは、ソースコード中にクローンコード(Clone Code:類似コード、重複コード)や類似処理が多数存在する場合、類似の指摘が多数出力されるため、開発者や作業者が精査を実施するには、多大な作業工数を要していた。
精査とは、ソースコード検証ツールにより指摘された内容に関する情報(ツール指摘情報)について、別途チェックを行い、バグ、非バグの判定を行うことである。
また、類似の指摘に対して複数の作業者による精査を実施した場合、精査結果が個々の作業者のスキル(技能、熟練度)に依存し、作業者毎に異なる判定をしてしまうこともあった。これにより、バグの見逃しが発生する可能性があった。
関連する技術として、特許文献1(特開2005−250946号公報)にソフトウェア開発支援装置が開示されている。このソフトウェア開発支援装置は、ソース格納部と、要求仕様格納部と、機能ツリー格納部と、リンク情報格納部と、ソフトウェア登録部と、変更ソース抽出部とを備える。ソース格納部は、ソフトウェアのソースを格納する。要求仕様格納部は、ソフトウェアの要求仕様書を格納する。機能ツリー格納部は、要求仕様書を基にソフトウェアの機能を分類した機能ツリーを格納する。リンク情報格納部は、ソースと機能の関係を含むリンク情報を格納する。ソフトウェア登録部は、流用元のソフトウェアのソースとこのソフトウェアに対応する要求仕様書を新たなソフトウェア用にコピーする。変更ソース抽出部は、コピーされた要求仕様書、機能ツリーとリンク情報の内容が更新された後に、新たなソフトウェア用と流用元のソフトウェアの要求仕様書から差分を抽出し、機能ツリーとリンク情報を用いて差分に関連するソースを抽出する。
また、特許文献2(特開2009−104489号公報)にコードクローンのテスト装置および方法が開示されている。この関連技術では、サーバ内に、ソースコードファイル、コードクローン出力ファイル、テスト結果ファイル、コードクローンマージファイルを備え、またサーバ内のハードウェア資源により実現される、機能ブロックとしての、データ設定処理部、コードクローン検出・マージ処理部、テスト結果設定処理部を備える。コードクローン検出・マージ処理部は、ソースコードファイルに格納されたソフトウェアソースプログラムからコードクローンセットを検出し、マージする。テスト結果設定処理部は、検出したコードクローンセットの内1つのコードクローンをテストし、テストされたソースコード行にテストケース番号を設定してコードクローンセット全体がテストされたことを表示する。
特開2005−250946号公報 特開2009−104489号公報
本発明の目的は、ソースコード検証ツールにより発見されたソースコード中の記述ミスや動作時の不具合等の指摘に対して、作業者等のユーザが精査を実施する作業を支援し、作業効率を向上する判定作業支援システムを提供することである。
本発明に係る判定作業支援システムは、ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力する情報処理部と、関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、該ソースコード検証ツールの検証結果の指摘の各々における代入処理や条件分岐といった問題発生に関わる処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、該検証結果の類似指摘を事前に統一する初期処理部と、ユーザが指摘を精査した時に該類似指摘の精査結果を同じにするための処理を行い、該類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する指摘判定処理部とを具備する。
本発明に係る判定作業支援方法は、ソースコード検証ツールによる判定作業を支援するために、計算機により実施される判定作業支援方法であって、該ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力することと、関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、該ソースコード検証ツールの検証結果の指摘の各々における代入処理や条件分岐といった問題発生に関わる処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、該検証結果の類似指摘を事前に統一することと、ユーザが指摘を精査した時に該類似指摘の精査結果を同じにするための処理を行い、該類似指摘に対する重複した精査作業を防ぎ、精査作業を削減することとを含む。
本発明に係るプログラムは、上記の判定作業支援方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
ソースコード検証ツールに依存せず、コードの類似性と、ソースコード検証ツールの指摘における、関連変数の処理の類似性から高精度で類似となる指摘を抽出し、余計な精査作業を無くすことで、精査作業のコストが削減されるため、大規模なソースコードの検証結果の精査をすることが可能となる。
本発明に係る判定作業支援システムの構成例を示す図である。 情報処理部の構成例の詳細について説明するための図である。 初期処理部の構成例の詳細について説明するための図である。 指摘判定処理部の構成例の詳細について説明するための図である。 初期処理の手順について説明するためのフローチャートである。 類似指摘を判定し、ユーザが精査作業をするまでの処理の手順について説明するためのフローチャートである。
<実施形態>
以下に、本発明の実施形態について添付図面を参照して説明する。
[システム構成]
図1を参照して、本発明に係る判定作業支援システムの構成例について説明する。
本発明に係る判定作業支援システムは、情報処理部110と、初期処理部120と、指摘判定処理部130を備える。
情報処理部110は、ユーザ入力情報101を入力し、ルール設定情報102を出力する。
初期処理部120は、関数情報抽出ツール220及びクローンコード検出ツール230と連携して動作する。初期処理部120は、ルール設定情報102と、ソースファイル103と、ツール指摘情報104を入力し、指摘一覧情報105と、関数一覧情報106を出力する。
指摘判定処理部130は、指摘一覧情報105と、関数一覧情報106を入力し、指摘関連変数一覧情報107を出力する。
ユーザ入力情報101は、ユーザからの入力操作に応じて入力される情報である。ユーザ入力情報101は、直接入力される情報に限らず、外部装置や記憶媒体等から読み出された情報でも良い。
ルール設定情報102は、ソースコード検証ツール210における検証ルールのうち、ユーザが精査を実施しないと決めた検証ルールの情報である。すなわち、ルール設定情報102は、ソースコード検証ツール210における精査対象外のルール情報である。
ソースファイル103は、ソースコード検証ツール210が検証を実施したソースコードのファイルの集合である。
ツール指摘情報104は、ソースコード検証ツール210により指摘された内容に関する情報の集合である。
指摘一覧情報105は、ツール指摘情報104を、予め決められたフォーマットへ変換し、ツール指摘情報104における指摘に対する作業者の精査情報を保持した指摘情報の一覧である。
関数一覧情報106は、関数情報抽出ツール220及びクローンコード抽出ツール220から取得した情報を基に作成される関数情報の一覧である。関数一覧情報106は、ソースファイルの名称、関数名称、関数の開始行、関数の終了行、類似している関数に付与された一意のID(identification:識別情報)を保持する。
指摘関連変数一覧情報107は、指摘一覧情報105に存在する指摘に関連する変数情報の一覧である。指摘関連変数一覧情報107は、指摘1件毎について、該指摘に関係する変数名、宣言場所、プログラム中の処理内容を保持する。
なお、ルール設定情報102、指摘一覧情報105、関数一覧情報106、指摘関連変数一覧情報107は、本システムにおける中間情報である。
ソースコード検証ツール210は、既存のソースコード検証ツールである。
関数情報抽出ツール220及びクローンコード検出ツール230は、既に公知のツールとして世の中に存在する外部ツールである。例えば、「cxref(関数情報抽出)」や「CCFinderX(クローンコード検出)」等が知られている。但し、実際には、これらの例に限定されない。本発明に係る判定作業支援システムは、これらの外部ツールと連携して動作するシステムである。
[ソースコード検証ツールとの連携の可能性]
なお、初期処理部120は、ソースコード検証ツール210と連携して動作しても良い。例えば、初期処理部120は、ソースコード検証ツール210からツール指摘情報104を受信し、ツール指摘情報104に応じて(ツール指摘情報104の受信を動作開始要求の受信と判断して)動作を開始する。このとき、初期処理部120は、ソースコード検証ツール210からツール指摘情報104と共に、ソースファイル103を受信しても良い。更に、初期処理部120は、ソースコード検証ツール210において設定された検証ルールを参照し、この検証ルールを基に、精査対象外のルール情報を特定し、この精査対象外のルール情報をルール設定情報102としても良い。或いは、初期処理部120は、ルール設定情報102とソースファイル103をソースコード検証ツール210に提供し、検証結果としてソースコード検証ツール210からツール指摘情報104を受信しても良い。
[情報処理部の構成]
図2を参照して、情報処理部110の構成例の詳細について説明する。
情報処理部110は、情報入力部111と、情報出力部112を備える。
情報入力部111は、ユーザ入力情報101を基に、ルール設定情報102の作成/変更(追加/削除等)を行い、ルール設定情報102を、初期処理部120に提供する。また、情報入力部111は、初期処理部120、指摘判定処理部130、又は外部装置や記憶媒体等から情報を入力し、変更等の処理を行った後、初期処理部120、指摘判定処理部130、又は外部装置や記憶媒体等に出力しても良い。例えば、情報入力部111は、必要に応じて、指摘一覧情報105を読み出して、指摘一覧情報105の変更を行い、指摘判定処理部130に提供する。
情報出力部112は、情報入力部111からの情報を入力し、初期処理部120、指摘判定処理部130、又はユーザ向けの出力装置に出力する。
[初期処理部の構成]
図3を参照して、初期処理部120の構成例の詳細について説明する。
初期処理部120は、情報取得部121と、指摘抽出部122と、ツール連携部123と、関数一覧作成124と、クローンコード判定部125と、ルール判定部126を備える。
情報取得部121は、ルール設定情報102、ソースファイル103、及びツール指摘情報104を入力する。なお、初期処理部120がソースコード検証ツール210と連携している場合、情報取得部121は、ソースコード検証ツール210からソースファイル103、及びツール指摘情報104を取得しても良い。
指摘抽出部122は、ツール指摘情報104を基に、指摘一覧情報105を生成する。
ツール連携部123は、関数情報抽出ツール220及びクローンコード抽出ツール220にソースファイル103と連携して動作する。ツール連携部123は、ソースファイル103を読み込み、関数情報抽出ツール220及びクローンコード抽出ツール220にソースファイル103を提供し、応答として取得した出力情報をそれぞれ、関数一覧作成部124、クローンコード判定部125に提供する。なお、関数情報抽出ツール220及びクローンコード抽出ツール220は、出力情報を、関数一覧作成部124、クローンコード判定部125に直接提供しても良い。
関数一覧作成部124は、関数情報抽出ツール220からの情報を基に、関数一覧情報106を生成する。
クローンコード判定部125は、クローンコード抽出ツール220からの情報を基に、関数一覧情報106に、類似関数の情報を追加する。
ルール判定部126は、ルール設定情報102を基に、指摘一覧情報105の自動精査を行い、指摘一覧情報105を更新する。すなわち、ルール判定部126は、指摘一覧情報105の自動精査の後、指摘一覧情報105の既存情報を精査情報に変更する。
[指摘判定処理部の構成]
図4を参照して、指摘判定処理部130の構成例の詳細について説明する。
指摘判定処理部130は、変数抽出部131と、関連処理抽出部132と、類似指摘判定部133と、ユーザ報告部134を備える。
変数抽出部131は、指摘一覧情報105の各指摘について、関数一覧情報106を基に、指摘が発生している関数内で指摘されている変数と、指摘されている変数の条件分岐に関わる変数を抽出し、抽出された変数に関する情報を関連処理抽出部132に提供する。
関連処理抽出部132は、変数抽出部131から受け取った情報(抽出された変数に関する情報)を基に、関数内で関係した変数で実施される代入処理と条件分岐処理を抽出し、指摘関連変数一覧情報107を生成する。
類似指摘判定部133は、指摘一覧情報105、関数一覧情報106、指摘関連変数一覧情報107から類似指摘を抽出し、指摘一覧情報105に反映する。また、類似指摘判定部133は、ユーザ報告部134からのユーザ判定情報から類似指摘へユーザ判定情報を自動的に追加する。
ユーザ報告部134は、指摘一覧情報105と指摘関連変数一覧情報107の情報を連結し、連結された指摘一覧情報105と指摘関連変数一覧情報107の情報を、情報処理部110に提供する。
このとき、情報処理部110において、情報入力部111は、連結された指摘一覧情報105と指摘関連変数一覧情報107の情報を入力する。情報出力部112は、連結された指摘一覧情報105と指摘関連変数一覧情報107の情報をユーザに通知する。情報入力部111は、ユーザ入力情報101として、連結された指摘一覧情報105と指摘関連変数一覧情報107に関する判定情報を入力する。情報出力部112は、入力された判定情報をユーザ報告部134に提供する。
ユーザ報告部134は、情報出力部112から取得した判定情報を、類似指摘判定部133に提供する。
[ハードウェアの例示]
以下に、本発明に係る判定作業支援システムを構成する具体的なハードウェアの例について説明する。
情報処理部110、初期処理部120、及び指摘判定処理部130の例として、PC(パソコン)、アプライアンス(appliance)、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、情報処理部110、初期処理部120、及び指摘判定処理部130は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、情報処理部110、初期処理部120、及び指摘判定処理部130は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン(VM:Virtual Machine)でも良い。情報処理部110、初期処理部120、及び指摘判定処理部130は、車両や船舶、航空機等の移動体に搭載されていても良い。
また、本発明に係る判定作業支援システム自体が、単体の計算機等であっても良い。
図示しないが、上記のような計算機は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
上記のプロセッサの例として、CPU(Central Processing Unit)、ネットワークプロセッサ(NP:Network Processor)、マイクロプロセッサ(microprocessor)、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路(IC:Integrated Circuit)等が考えられる。
上記のメモリの例として、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)やフラッシュメモリ等の半導体記憶装置、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置、又は、DVD(Digital Versatile Disk)等のリムーバブルディスクや、SDメモリカード(Secure Digital memory card)等の記憶媒体(メディア)等が考えられる。また、バッファ(buffer)やレジスタ(register)でも良い。或いは、DAS(Direct Attached Storage)、FC−SAN(Fibre Channel − Storage Area Network)、NAS(Network Attached Storage)、IP−SAN(IP − Storage Area Network)等を用いたストレージ装置でも良い。
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の1チップ化が進んでいる。従って、電子機器等に搭載される1チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例が考えられる。
上記のインターフェースの例として、ネットワーク通信に対応した基板(マザーボード、I/Oボード)やチップ等の半導体集積回路、NIC(Network Interface Card)等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口(コネクタ)等の通信ポート等が考えられる。
また、ネットワークの例として、インターネット、LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)、バックボーン(Backbone)、ケーブルテレビ(CATV)回線、固定電話網、携帯電話網、WiMAX(IEEE 802.16a)、3G(3rd Generation)、専用線(lease line)、IrDA(Infrared Data Association)、Bluetooth(登録商標)、シリアル通信回線、データバス等が考えられる。
なお、情報処理部110、初期処理部120、及び指摘判定処理部130内の各部(内部構成)は、モジュール(module)、コンポーネント(component)、或いは専用デバイス、又はこれらの起動(呼出)プログラムでも良い。
また、情報処理部110の情報入力部111の例として、KVM(キーボード・ビデオ・マウス)、コンソール(console)、キーパッド(keypad)、タッチパネル(touch panel)、タブレット(tablet)等の入力装置、又は、各種の情報伝達媒体の読取装置が考えられる。或いは、情報入力部111は、外部の入力装置や記憶装置等から情報を取得するためのインターフェース(I/F:interface)でも良い。
また、情報処理部110の情報出力部112の例として、LCD(液晶ディスプレイ)やPDP(プラズマディスプレイ)、有機ELディスプレイ(organic electroluminescence display)等の表示装置、出力内容を用紙等に印刷するプリンタ等の印刷装置、又は、出力内容を壁やスクリーンに投影するプロジェクタ等の映写装置等が考えられる。或いは、情報出力部112は、外部の表示装置や記憶装置等に情報を出力するためのインターフェース(I/F)でも良い。すなわち、情報出力部112は、何らかの出力装置であれば良い。
但し、実際には、これらの例に限定されない。
[本発明における処理手順]
次に、本発明における初期処理の手順、及び、類似指摘の判定処理の手順の詳細について説明する。
[前提条件]
先に、本発明における各手順の前提条件について説明する。
ツール指摘情報104のデータフォーマットは、事前に本発明に係る判定作業支援システムに登録され、解析可能なものとする。
また、関数情報抽出ツール220、クローンコード抽出ツール220からの出力データのフォーマットや内容も、事前に本発明に係る判定作業支援システムに登録され、解析可能なものとする。
また、ユーザは、ソースコード検証ツール210を熟知しており、ルールの設定が可能なものとする。すなわち、ユーザは、ルール設定情報102の内容を記述できる。
[初期処理の手順]
図5を参照して、本発明における初期処理の手順について説明する。
(1)ステップS101
まず、情報処理部110において、情報入力部111は、ユーザ操作に応じてユーザ入力情報101を入力し、ユーザ入力情報101を基にルール設定情報102を出力する。情報出力部112は、情報入力部111からのルール設定情報102を入力し、初期処理部120に出力する。
(2)ステップS102
次に、初期処理部120において、初期処理部120の情報取得部121は、ルール設定情報102を取得する。なお、情報取得部121は、情報処理部110からユーザ入力情報101を受信し、ユーザ入力情報101を基にルール設定情報102を作成しても良い。また、情報取得部121は、ソースコード検証ツール210から、ルール設定情報102と、ソースファイル103と、ツール指摘情報104を受信しても良い。
(3)ステップS103
次に、指摘抽出部122は、ツール指摘情報104を読み取り、指摘一覧情報105を作成する。なお、指摘抽出部122は、ソースコード検証ツール210から出力されたツール指摘情報104を直接入力しても良い。
(4)ステップS104
次に、ツール連携部123は、ソースファイル103を読み込む。なお、ツール連携部123は、ソースコード検証ツール210から出力されたソースファイル103を直接入力しても良い。また、ツール連携部123は、ソースコード検証ツール210と同時に、ソースファイル103を読み込んでも良い。或いは、ツール連携部123は、ソースコード検証ツール210に、ソースファイル103を提供しても良い。
(5)ステップS105
次に、ツール連携部123は、ソースファイル103を関数情報抽出ツール220に提供し、関数情報抽出ツール220から実行結果(関数情報)を取得し、関数情報抽出ツール220の実行結果(関数情報)を、関数一覧作成部124に入力する。
(6)ステップS106
関数一覧作成部124は、関数情報抽出ツール220の実行結果(関数情報)を基に、関数一覧情報106を生成する。
(7)ステップS107
次に、ツール連携部123は、ソースファイル103をクローンコード抽出ツール220に提供し、クローンコード抽出ツール220から実行結果(類似コード情報)を取得し、クローンコード抽出ツール220の実行結果(類似コード情報)をクローンコード判定部125に入力する。
(8)ステップS108
次に、クローンコード判定部125は、クローンコード抽出ツール220の実行結果(類似コード情報)を基に、関数一覧情報106に含まれる類似コードを持つ関数を判定する。
(9)ステップS109
次に、ルール判定部126は、ルール設定情報102を参照して、指摘一覧情報105のうち、精査の必要がない指摘(精査対象外の指摘)の判定を行う。
これで、初期処理が完了する。
[類似指摘判定・ユーザ精査処理の手順]
図6を参照して、類似指摘を判定し、ユーザが精査作業をするまでの処理の手順について説明する。
(1)ステップS201
まず、指摘判定処理部130において、変数抽出部131は、指摘一覧情報105、関数一覧情報106を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、「問題となる変数」、「プログラムのプロセス上、問題となる変数に代入を行う変数」、及び「条件分岐に利用される変数」を抽出し、抽出された各変数の情報を関連処理抽出部132に提供する。
(2)ステップS202
次に、関連処理抽出部132は、指摘判定処理部130により抽出された各変数の情報を基に、「関数内で各変数が実施された処理」と「宣言位置」を特定する。ここでは、関連処理抽出部132は、変数が実施された処理について、プログラム中で当該変数が利用された箇所を遡って全て抽出する。また、関連処理抽出部132は、ローカル変数(関数内で宣言)、関数の引数、グローバル変数の種別を判定し、各変数の宣言位置を特定する。なお、関連処理抽出部132は、対象となる変数が、ローカル変数、関数の引数のいずれでもない場合に、グローバル変数の宣言位置を特定する。
(3)ステップS203
次に、関連処理抽出部132は、上記の変数、宣言位置、処理内容を一覧にまとめて(集約・統合して)、指摘関連変数一覧情報107を作成する。
(4)ステップS204
次に、類似指摘判定部133は、指摘一覧情報105、関数一覧情報106、及び指摘関連変数一覧情報107を取得し、指摘一覧情報105中の同じルールで検証された2つの指摘の類似チェックを実施する。ここでは、類似指摘判定部133は、関数一覧情報106の類似情報と、指摘関連変数一覧情報107の情報の宣言位置及び処理内容の情報との2つの情報を基に、2つの指摘が類似であるか判定する。
(5)ステップS205
次に、類似指摘判定部133は、類似と判定された指摘について、指摘一覧情報105に類似判定情報を追加する。
(6)ステップS206
次に、ユーザ報告部134は、指摘一覧情報105と指摘関連変数一覧情報107を、情報処理部110の情報出力部112に提供し、ユーザ側の表示装置に一覧を表示する。
(7)ステップS207
次に、ユーザは、指摘一覧情報105と指摘関連変数一覧情報107の情報を基に、指摘の実バグ、非バグについて精査を実施する。このとき、情報処理部110の情報入力部111は、ユーザ操作に応じてユーザ入力情報101を入力し、ユーザ入力情報101を基に精査結果を作成する。情報処理部110の情報出力部112は、精査結果をユーザ報告部134に提供する。ユーザ報告部134は、精査結果を、類似指摘判定部133に提供する。
(8)ステップS208
次に、類似指摘判定部133は、ユーザ報告部134から受け取った情報(精査結果)と、指摘一覧情報105の類似フラグの情報を基に、精査された指摘と類似した指摘を、同じ精査結果に更新する。すなわち、類似指摘判定部133は、精査結果に応じて、指摘一覧情報105を更新する。
(9)ステップS209
類似指摘判定部133は、指摘一覧情報105の更新後、精査されていない指摘が存在するか確認する。類似指摘判定部133は、精査されていない指摘が存在する場合、ユーザ報告部134での作業を再開する。ユーザ報告部134は、再度、指摘一覧情報105と指摘関連変数一覧情報107を、情報処理部110の情報出力部112に提供し、ユーザ側の表示装置に一覧を表示する。また、類似指摘判定部133は、精査されていない指摘が存在しない(全て精査されている)場合、作業を完了する。
これで、類似指摘判定とユーザの精査作業が完了する。
上記のように処理することで、類似した指摘に対する重複した精査作業を防ぎ、精査作業を削減することができる。
また、精査結果を即時反映することにより、他者の精査結果との整合性も保たれるようになる。
<本発明の特徴>
以上のように、本発明に係る判定作業支援システムは、プログラムのソースコードの検証の際、ソースコード検証ツールが発見した指摘に対して精査を実施する作業を支援し、作業効率を向上するシステムである。
本発明に係る判定作業支援システムでは、検証結果の指摘についてクローンコードと推定されるコードの情報を基に、各指摘において代入処理や条件分岐といった問題発生に関わる処理を抽出する。また、コードの類似性と問題発生に関わる処理を利用し、検証結果の類似指摘を予めまとめておく(事前に統一しておく)。また、ユーザが指摘を精査した時に、類似指摘が同じ精査結果となるよう処理することで、類似指摘の重複精査作業の削減による精査作業の削減と、担当者による異なった精査の防止を支援する。
本発明に係る判定作業支援システムは、コードクローンツールの類似情報、指摘に関するプログラム処理内容の2点から、類似指摘を判別する。
また、本発明に係る判定作業支援システムは、類似指摘を判別し、内部に情報を保持することで随時ユーザの精査結果を指摘一覧に反映する。
本発明では、ソースコード検証ツールに依存せず、コードの類似性と、ソースコード検証ツールの指摘における、関連変数の処理の類似性から高精度で類似となる指摘を抽出し、余計な精査作業を無くすことを可能としている。
これにより、精査作業のコストが削減されるため、大規模なソースコードの検証結果の精査をすることが可能になる。
<備考>
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
101… ユーザ入力情報
102… ルール設定情報
103… ソースファイル
104… ツール指摘情報
105… 指摘一覧情報
106… 関数一覧情報
107… 指摘関連変数一覧情報
110… 情報処理部
111… 情報入力部
112… 情報出力部
120… 初期処理部
121… 情報取得部
122… 指摘抽出部
123… ツール連携部
124… 関数一覧作成
125… クローンコード判定部
126… ルール判定部
130… 指摘判定処理部
131… 変数抽出部
132… 関連処理抽出部
133… 類似指摘判定部
134… ユーザ報告部

Claims (9)

  1. ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力する情報処理部と、
    関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、前記ソースコード検証ツールの検証結果の指摘の各々において、問題発生に係る代入処理および条件分岐処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、前記検証結果の類似指摘を事前に統一する初期処理部と、
    ユーザが指摘を精査した時に前記類似指摘の精査結果を同じにするための処理を行い、前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する指摘判定処理部と
    を具備する
    判定作業支援システム。
  2. 請求項1に記載の判定作業支援システムであって、
    前記初期処理部は、
    前記ソースコード検証ツールにより指摘された内容に関するツール指摘情報を基に、指摘一覧情報を作成する指摘抽出部と、
    ソースファイルを前記関数情報抽出ツール及び前記クローンコード抽出ツールに提供するツール連携部と、
    前記関数情報抽出ツールから実行結果として取得した関数情報を基に、関数一覧情報を生成する関数一覧作成部と、
    前記クローンコード抽出ツールから実行結果として取得した類似コード情報を基に、前記関数一覧情報に含まれる類似コードを持つ関数を判定するクローンコード判定部と、
    前記ルール設定情報を参照して、前記指摘一覧情報のうち、精査の必要がない精査対象外の指摘の判定を行うルール自動判定部と
    を具備する
    判定作業支援システム。
  3. 請求項2に記載の判定作業支援システムであって、
    前記指摘判定処理部は、
    前記指摘一覧情報、及び前記関数一覧情報を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、問題となる変数、プログラムのプロセス上で問題となる変数に代入を行う変数、及び条件分岐に利用される変数、を抽出する変数抽出部と、
    前記抽出された各変数の情報を基に、関数内で各変数が実施された処理と宣言位置とを特定し、変数、宣言位置、及び処理内容を一覧に集約して、指摘関連変数一覧情報を作成する関連処理抽出部と、
    前記関数一覧情報の類似情報と、前記指摘関連変数一覧情報の宣言位置及び処理内容の情報との2つの情報を基に、前記指摘一覧情報中の同じルールで検証された2つの指摘の類似チェックを実施し、前記2つの指摘が類似であるか判定し、類似と判定された指摘について、前記指摘一覧情報に類似判定情報を追加する類似指摘判定部と、
    前記指摘一覧情報と前記指摘関連変数一覧情報とを一覧表示してユーザに通知し、前記ユーザによる精査結果を取得するユーザ報告部と、
    を具備し、
    前記類似指摘判定部は、前記ユーザによる精査結果を反映して前記指摘一覧情報を更新する
    判定作業支援システム。
  4. ソースコード検証ツールによる判定作業を支援するために、計算機により実施される判定作業支援方法であって、
    前記ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力することと、
    関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、前記ソースコード検証ツールの検証結果の指摘の各々において、問題発生に係る代入処理および条件分岐処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、前記検証結果の類似指摘を事前に統一することと、
    ユーザが指摘を精査した時に前記類似指摘の精査結果を同じにするための処理を行い、前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減することと
    を含む
    判定作業支援方法。
  5. 請求項4に記載の判定作業支援方法であって、
    前記検証結果の類似指摘を事前に統一する際に、
    前記ソースコード検証ツールにより指摘された内容に関するツール指摘情報を基に、指摘一覧情報を作成することと、
    ソースファイルを前記関数情報抽出ツール及び前記クローンコード抽出ツールに提供することと、
    前記関数情報抽出ツールから実行結果として取得した関数情報を基に、関数一覧情報を生成することと、
    前記クローンコード抽出ツールから実行結果として取得した類似コード情報を基に、前記関数一覧情報に含まれる類似コードを持つ関数を判定することと、
    前記ルール設定情報を参照して、前記指摘一覧情報のうち、精査の必要がない精査対象外の指摘の判定を行うことと
    を更に含む
    判定作業支援方法。
  6. 請求項5に記載の判定作業支援方法であって、
    前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する際に、
    前記指摘一覧情報、及び前記関数一覧情報を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、問題となる変数、プログラムのプロセス上で問題となる変数に代入を行う変数、及び条件分岐に利用される変数、を抽出することと、
    前記抽出された各変数の情報を基に、関数内で各変数が実施された処理と宣言位置とを特定し、変数、宣言位置、及び処理内容を一覧に集約して、指摘関連変数一覧情報を作成することと、
    前記関数一覧情報の類似情報と、前記指摘関連変数一覧情報の宣言位置及び処理内容の情報との2つの情報を基に、前記指摘一覧情報中の同じルールで検証された2つの指摘の類似チェックを実施し、前記2つの指摘が類似であるか判定し、類似と判定された指摘について、前記指摘一覧情報に類似判定情報を追加することと、
    前記指摘一覧情報と前記指摘関連変数一覧情報とを一覧表示してユーザに通知し、前記ユーザによる精査結果を取得することと、
    前記ユーザによる精査結果を反映して前記指摘一覧情報を更新することと
    を更に含む
    判定作業支援方法。
  7. ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力するステップと、
    関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、前記ソースコード検証ツールの検証結果の指摘の各々において、問題発生に係る代入処理および条件分岐処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、前記検証結果の類似指摘を事前に統一するステップと、
    ユーザが指摘を精査した時に前記類似指摘の精査結果を同じにするための処理を行い、前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減するステップと
    を計算機に実行させるための
    プログラム。
  8. 請求項7に記載のプログラムであって、
    前記検証結果の類似指摘を事前に統一する際に、
    前記ソースコード検証ツールにより指摘された内容に関するツール指摘情報を基に、指摘一覧情報を作成するステップと、
    ソースファイルを前記関数情報抽出ツール及び前記クローンコード抽出ツールに提供するステップと、
    前記関数情報抽出ツールから実行結果として取得した関数情報を基に、関数一覧情報を生成するステップと、
    前記クローンコード抽出ツールから実行結果として取得した類似コード情報を基に、前記関数一覧情報に含まれる類似コードを持つ関数を判定するステップと、
    前記ルール設定情報を参照して、前記指摘一覧情報のうち、精査の必要がない精査対象外の指摘の判定を行うステップと
    を更に計算機に実行させるための
    プログラム。
  9. 請求項8に記載のプログラムであって、
    前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する際に、
    前記指摘一覧情報、及び前記関数一覧情報を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、問題となる変数、プログラムのプロセス上で問題となる変数に代入を行う変数、及び条件分岐に利用される変数、を抽出するステップと、
    前記抽出された各変数の情報を基に、関数内で各変数が実施された処理と宣言位置とを特定し、変数、宣言位置、及び処理内容を一覧に集約して、指摘関連変数一覧情報を作成するステップと、
    前記関数一覧情報の類似情報と、前記指摘関連変数一覧情報の宣言位置及び処理内容の情報との2つの情報を基に、前記指摘一覧情報中の同じルールで検証された2つの指摘の類似チェックを実施し、前記2つの指摘が類似であるか判定し、類似と判定された指摘について、前記指摘一覧情報に類似判定情報を追加するステップと、
    前記指摘一覧情報と前記指摘関連変数一覧情報とを一覧表示してユーザに通知し、前記ユーザによる精査結果を取得するステップと、
    前記ユーザによる精査結果を反映して前記指摘一覧情報を更新するステップと
    を更に計算機に実行させるための
    プログラム。
JP2011129146A 2011-06-09 2011-06-09 判定作業支援システム、判定作業支援方法、及びプログラム Expired - Fee Related JP5757167B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011129146A JP5757167B2 (ja) 2011-06-09 2011-06-09 判定作業支援システム、判定作業支援方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011129146A JP5757167B2 (ja) 2011-06-09 2011-06-09 判定作業支援システム、判定作業支援方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2012256220A JP2012256220A (ja) 2012-12-27
JP5757167B2 true JP5757167B2 (ja) 2015-07-29

Family

ID=47527725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011129146A Expired - Fee Related JP5757167B2 (ja) 2011-06-09 2011-06-09 判定作業支援システム、判定作業支援方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP5757167B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101568224B1 (ko) 2014-12-26 2015-11-11 고려대학교 산학협력단 소프트웨어 취약점 분석방법 및 분석장치
JP6789844B2 (ja) * 2017-02-22 2020-11-25 三菱電機株式会社 類似関数抽出装置および類似関数抽出プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009169573A (ja) * 2008-01-15 2009-07-30 Fujitsu Ten Ltd 解析結果出力装置、及び解析結果出力方法
JP2011113298A (ja) * 2009-11-26 2011-06-09 Canon Inc 流用ソースコード解析システム及びプログラム並びに記録媒体

Also Published As

Publication number Publication date
JP2012256220A (ja) 2012-12-27

Similar Documents

Publication Publication Date Title
US20140211021A1 (en) Test system for evaluating mobile device and driving method thereof
US8719745B2 (en) Method and system for automatically establishing hierarchical parameterized cell (PCELL) debugging environment
US9411711B2 (en) Adopting an existing automation script to a new framework
KR20080050118A (ko) 임베디드용 소프트웨어의 오류 검출 방법
CN111475390A (zh) 日志采集系统部署方法、装置、设备及存储介质
US8799716B2 (en) Heap dump occurrence detection
CN101699403A (zh) 一种图形化安装分布式系统的方法
WO2012080262A1 (en) Software error code injection
JP5757167B2 (ja) 判定作業支援システム、判定作業支援方法、及びプログラム
CN105550575A (zh) 一种未导出的函数地址和数据结构偏移的获取方法及装置
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
CN108885574B (zh) 用于监视和报告设计、编译和运行时的性能和正确性问题的系统
CN114116471A (zh) 一种自动化代码扫描方法、系统、电子设备与存储介质
Anand Secure bootloader for connectivity mcu
CN110096888B (zh) 一种加快验证及分析smm安全隐患的方法及系统
CN110321171A (zh) 开机检测装置、系统及其方法
JP2018160047A (ja) 携帯端末、サーバ装置、情報処理システム、制御方法、及びプログラム
US20120131569A1 (en) Automated solaris container creation
CN113608996B (zh) 一种镜像编译测试方法、系统、装置及可读存储介质
CN112416695B (zh) 一种全局变量监控方法、装置、设备及存储介质
JP7328922B2 (ja) 設定装置、設定方法、及びプログラム
CN115309642A (zh) 一种代码测试方法、装置、电子设备及存储介质
JP5949391B2 (ja) 実行条件検査装置、実行条件検査システム、実行条件検査方法およびプログラム
CN117149874A (zh) 构建和维护数据管道的方法、装置、电子设备及存储介质
CN117785141A (zh) 一种基于公共目录的项目开发方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150520

R150 Certificate of patent or registration of utility model

Ref document number: 5757167

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees