JP2006236042A - ソースプログラム解析装置およびその方法 - Google Patents

ソースプログラム解析装置およびその方法 Download PDF

Info

Publication number
JP2006236042A
JP2006236042A JP2005050418A JP2005050418A JP2006236042A JP 2006236042 A JP2006236042 A JP 2006236042A JP 2005050418 A JP2005050418 A JP 2005050418A JP 2005050418 A JP2005050418 A JP 2005050418A JP 2006236042 A JP2006236042 A JP 2006236042A
Authority
JP
Japan
Prior art keywords
source program
rule
analysis
contract
company
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
JP2005050418A
Other languages
English (en)
Inventor
Kiyoshi Hayashi
潔 林
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2005050418A priority Critical patent/JP2006236042A/ja
Publication of JP2006236042A publication Critical patent/JP2006236042A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】従来のソースプログラムの静的解析装置は、ソースプログラムの実行処理順序の誤りを指摘する。ソースプログラムが自社の規約に違反するかどうか、確認できない。また、自社の規約に違反しても、指摘しない可能性がある。本発明は、開発したソースコードが自社の規約を守るために、自社のルール違反箇所を解析し、解析結果により、ソースコードを自動的に修正するに関するものである。
【解決手段】解析装置11は、各社の規約情報のデータベースの各項目に基づいて静的解析110と動的解析111を実行する。実行結果がメッセージ編集部112によるエラー情報を生成する。生成されたエラー情報を出力部113が出力する。
【選択図】図1

Description

本発明は、ソースプログラムの解析装置に係り、規約に基づいて、ソースコードを静的または、動的に解析し、規約違反箇所を指摘し、ソースコードを自動的に修正するプログラム解析装置に関するものである。
近年、デジタル化、ネットワーク化により、ソフトウェア規模の拡大、複雑化に伴い、ソフトウェアの生産性向上が課題となっている。
このような背景のもと、品質向上のために、各社が、実装段階で、生産性向上を目的として標準実装規約を定めている。開発されたソースコードが自社のコーディング規約を遵守しているかどうか確認するための従来技術として、例えば、特許文献1等に記載された技術が知られている。図5は特許文献1に記載された従来のソースプログラムの静的解析装置である。図5に示す従来の静的解析装置は、ソースプログラム10から制御構造ツリー111を作成する制御構造ツリー作成部110と、ルールファイル蓄積部116のファイルに基づいて制御構造ツリー111を解析する構造解析部112と、構造解析部112の解析結果を保持するリソース使用管理テーブル118および解析結果バッファ113と、解析結果を編集する解析結果編集部114と、解析結果編集部114が編集した解析結果を出力する解析結果出力部115から成る。ソースプログラムの入力に対して、制御構造ツリーを作成し、ルールファイル蓄積部のルールに基づいて、解析ツリーを解析し、リソースの確保と解放との対応およびリソースの占有と占有解除との対応をチェックする。一致していない場合は、エラー情報を出力する。
また、自社の規約守るためのもう一つの手法としては、既存の静的解析ツールによる確認とレビューによる確認がある。既存の静的解析ツールは、解析対象ソースコードを解析し、ISO−C規格に準拠していない記述を検出する。さらに、レビューによる確認方法では、人間が手作業でソースコードを読解して内容を把握することも行われる。
特開2004−145381号公報
しかしながら前述した従来技術は、ルールファイル蓄積部のリソースの確保/解放、リソースの占有/占有解除と一致するか否かの判定により、ソースプログラムの実行処理順序の誤りだけを指摘する。しかしながら、ソースプログラムの構文上の誤りは指摘することができないという問題点を有している。また、エラー情報のみでは、誤りの原因が不明確なので、修正方法が明確に分からない。従来、規約を守るために、静的解析ツールを利用すると、ツールの出力する警告の数が多く、玉石混交で、品質に直結するエラー発見しにくく、規約とツールの出力する警告は必ずしも一致していない。および規約の中に、ツールでチェックできない規約が存在するなどの問題点が存在していた。
また、レビューによって、規約を確認するには、目視によるチェックを行う必要があり、チェック漏れが発生する可能性が高い。
本発明は上記課題を解決するため、開発者が、各社の規約を選択し、さらに規約レベルを選択し、各社の規約情報に基づいてソースプログラムを解析し、解析結果により、ソースコードを自動的に修正することができる。
前記従来の課題を解決するために、本発明でソースプログラムを解析し、その解析結果を出力するソースプログラムの解析装置において、各社の規約を選択し、規約レベルを選択機能を用いて規約選択部、各社の規約情報のデータベースの構文解析項目に基づいてソースプログラムを解析し、メッセージ編集部で生成された解析結果を出力する出力部を備えることにより達成される。また、規約選択部は、予め定められた規約が蓄積されており、ルールの性質により、規約レベルを決めることができ、ルールの変更または、追加が可能になる。さらに、メッセージ編集部により、エラーメッセージおよび修正方法を自動的に出力することができる。
本発明の規約に基づくプログラム解析装置によれば、規約選択機能を利用して、プログラム解析装置による、エラーメッセージを社内規約に限定できる。さらに、違反箇所の誤検出と漏れがないので、開発者の再確認が不要になる。また、メッセージ生成部のエラー自動修正機能により、規約遵守しやすいため、初級者でも、社内の規約を簡単に守ることができる。そのため、実装工程に起因する不具合が少なくなり、一定の品質基準を確保することができる。さらに、規約を簡単に守ることができるので、各部門が規約を導入することが容易になる。
以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1における規約に基づくソースプログラムの解析装置の構成図である。図1において、図2と同じ構成要素については同じ符号を用い、説明を省略する。
図1において、10はソースプログラム、11はソースプログラム解析装置、12は規約選択部、110は静的解析、111は動的解析、112はメッセージ編集部、113は出力部、120は会社規約、121は規約レベル、122は各社の規約情報である。
本発明の実施の形態1によるソースプログラム解析装置11は、静的解析110、動的解析111、メッセージ編集部112、出力部113から構成される。ソースプログラム解析装置11は、ソースプログラム10を読み込み、ユーザが規約選択部12の会社規約120を選択する。次に、開発者の希望により規約レベル121を選択する。各社の規約情報122に基づいて静的解析110と動的解析111を実行する。実行結果によって、メッセージ編集部112で生成されたエラー情報を出力部113で出力する。
図2は本発明の実施の形態による解析装置11での処理動作の概要を説明するフローチャートであり、次に、これについて説明する。
(1)まず、ソースプログラム解析装置11は、ソースプログラム10を読み込む。そこで、ソースプログラム10に複数ファイルが指定された場合、全てファイルを読み込む。ソースプログラム解析装置11で、読み込んだソースプログラム10を解析装置11によって解析する(ステップS1)。
(2)次に、ユーザが規約選択部12の会社規約120を選択する。会社規約は、各社の規約情報122から選べる。また、各会社の規約情報を追加したり、変更したりすることができる(ステップS2)。
(3)次に、(2)のように、ユーザが規約選択部12で選択した会社規約の規約レベル121を選択できる。各社の規約は複数のルールを含む。規約レベル121は、ルールの性質による分類、たとえば、バグ、移植性、品質性、可読性などに分類される(ステップS3)。
(4)次に、ソースプログラム解析装置11では、ルールに基づく解析を行う(ステップS4)。ステップS4中では、各社の規約情報122中に含む後述のパターン306によって、静的解析(ステップS5)と動的解析(ステップS6)を自動的に選択し、解析する。
(5)次に、解析結果によりメッセージ編集部112でエラー情報401、修正方法402、推奨パターン403を生成する(ステップS7)。
(6)次に、メッセージ編集部112で生成した情報を画面で表示する(ステップS8)。表示された推奨パターン403の一つを開発者が選択し、その選択に基づいて違反ソースコードを自動的に直す。
図3は、前述のステップS4での各社の規約情報122であり、次に、これについて説明する。このデータベースの項目30は、ルール番号301、ルール302、構文解析303、レベル304、修正方法305、パターン306から成る。ルール番号301は、会社が定めるコーディング規約の番号を示す。ルール302は、会社が定めるルールの説明を示す。構文解析303は、このルールを守るため、具体的な作業およびアルゴリズムを記述する。この項目により、ソースプログラムを解析する。レベル304は、ルールの性質による、バグ、移植性、安全性、可読性の分類を示す。修正方法305は、違反ソースコードに対して、修正方法を記述する。パターン306は、ルールが静的解析と動的解析どちらを必要とするか示す。
図4は、前述のステップS5でのメッセージ編集部112である。メッセージ項目40は、エラー情報を生成するためのエラーテーブル。エラー情報401は、違反箇所のファイル名、行数、違反したルール番号、ルールの説明を示す。修正方法402は、ルールを守るための修正方法、推奨パターン403は、この違反ソースコードに対して、ルールを守るための、正しいコードを示す。
前述した本発明の実施の形態1によるソースプログラムの解析装置によれば、規約のレベル304により、選択したレベル304のルールだけを遵守できる、また、パターン306によって、静的解析と動的解析を自動的に決定し、解析する。構文解析303によって、プログラムを自動的にチェックすることができ、メッセージ編集部112によれば、ユーザが違反の箇所が分かって、修正方法305も同時にわかり、推奨パターン403によって、自動的に修正することができる。
本発明を用いれば、ソフト開発実装プロセスにおいて、品質を一定に保つことができるソフトウェア開発環境の構築することができる。
本発明の実施の形態1における規約に基づくプログラムの解析装置の図 本発明の実施の形態1におけるフローチャート 各社の規約情報の図 メッセージ編集部の図 従来のソースプログラムの静的解析装置の図
符号の説明
10 ソースプログラム
11 ソースプログラム解析装置
12 規約選択部
110 静的解析
111 動的解析
112 メッセージ編集部
113 出力部
120 会社規約
121 規約レベル
122 各社の規約情報
30 データベース項目
301 ルール番号
302 ルール
303 構文解析
304 レベル
305 修正方法
306 パターン
40 メッセージ
401 エラー情報
402 修正方法
403 推奨パターン

Claims (4)

  1. ソースプログラムを解析し、その解析結果を出力するソースプログラムの解析装置において、各社の規約を選択し、規約レベルの選択機能を用いた規約選択部または、各社の規約情報のデータベースの構文解析項目に基づいて前記ソースプログラムを解析し、メッセージ編集部で生成された解析結果を出力する出力部を有することを特徴とするソースプログラムの解析装置。
  2. 前記規約選択部は、予め定められた規約が蓄積されており、ルールの性質により、前記規約レベルを決めることができ、ルールの変更または、追加が可能な構造となっていることを特徴とする請求項1記載のソースプログラムの解析装置。
  3. ソースプログラムを解析し、その解析結果を出力するソースプログラムの解析方法において、各社の規約を選択し、規約レベルの選択機能を用いた規約選択手段または、各社の規約情報のデータベースの構文解析項目に基づいて前記ソースプログラムを解析し、メッセージ編集手段で生成された解析結果を出力手段を有することを特徴とするソースプログラムの解析方法。
  4. 前記規約選択手段は、予め定められた規約が蓄積されており、ルールの性質により、前記規約レベルを決めることができ、ルールの変更または、追加が可能な手段となっていることを特徴とする請求項3記載のソースプログラムの解析方法。
JP2005050418A 2005-02-25 2005-02-25 ソースプログラム解析装置およびその方法 Pending JP2006236042A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005050418A JP2006236042A (ja) 2005-02-25 2005-02-25 ソースプログラム解析装置およびその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005050418A JP2006236042A (ja) 2005-02-25 2005-02-25 ソースプログラム解析装置およびその方法

Publications (1)

Publication Number Publication Date
JP2006236042A true JP2006236042A (ja) 2006-09-07

Family

ID=37043618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005050418A Pending JP2006236042A (ja) 2005-02-25 2005-02-25 ソースプログラム解析装置およびその方法

Country Status (1)

Country Link
JP (1) JP2006236042A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250914A (ja) * 2007-03-30 2008-10-16 Canon Software Inc プログラム修正装置及び方法、並びにプログラム
JP7409197B2 (ja) 2019-06-20 2024-01-09 富士通株式会社 ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008250914A (ja) * 2007-03-30 2008-10-16 Canon Software Inc プログラム修正装置及び方法、並びにプログラム
JP7409197B2 (ja) 2019-06-20 2024-01-09 富士通株式会社 ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化

Similar Documents

Publication Publication Date Title
CA2909144C (en) A system and method for accessiblility assessment of a web application
US9720798B2 (en) Simulating black box test results using information from white box testing
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
KR20100124726A (ko) 애플리케이션들에 기초한 운영 체제 이미지들의 구축
JP2006236042A (ja) ソースプログラム解析装置およびその方法
JP2015001825A (ja) テストスケジュール決定装置、プログラム
US20160063162A1 (en) System and method using pass/fail test results to prioritize electronic design verification review
JP2008021244A (ja) ソースコード修正優先度付けシステムおよびその優先度付け方法
JP5615245B2 (ja) バグ対策優先度表示システム
JP2005276040A (ja) デグレード確認検査方法、デグレード確認検査システム、およびそのためのプログラム
JP2014059805A (ja) モデルベースの制御装置用のテストケース生成装置およびテストケース生成方法
US8332204B2 (en) Instruction check program, instruction check apparatus, and I/O simulator
JP6097231B2 (ja) プログラム生成装置および方法
JP2013149134A (ja) ソースコードの静的解析装置、システム、方法、及びそのためのプログラム
JPWO2012049816A1 (ja) モデル検査装置、方法及びプログラム
JP2017151594A (ja) 支援装置、支援方法及びプログラム
WO2016001982A1 (ja) テストデータ生成支援装置、及びテストデータ生成支援方法
JP2007241347A (ja) プログラムの品質管理装置、及びプログラムの品質管理レポートの生成方法
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP2004110378A (ja) オブジェクト指向開発支援方法および装置
JPH09288580A (ja) ソースプログラムの最適化装置および最適化方法
JP2007200125A (ja) コーディング規約選択プログラム
CN112825060B (zh) 测试用例的生成方法、装置、存储介质和电子设备
JP2007018205A (ja) アプリケーションプログラム実行装置,アプリケーション開発支援装置,画面遷移履歴表示装置及びプログラム
JP6851210B2 (ja) 分析支援装置、分析支援方法および分析支援プログラム