JP2007122631A - プログラムの規約違反を判断する装置、およびその方法 - Google Patents
プログラムの規約違反を判断する装置、およびその方法 Download PDFInfo
- Publication number
- JP2007122631A JP2007122631A JP2005317204A JP2005317204A JP2007122631A JP 2007122631 A JP2007122631 A JP 2007122631A JP 2005317204 A JP2005317204 A JP 2005317204A JP 2005317204 A JP2005317204 A JP 2005317204A JP 2007122631 A JP2007122631 A JP 2007122631A
- Authority
- JP
- Japan
- Prior art keywords
- conversion
- program
- rules
- violation
- tree
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】プログラムの規約違反を判断する装置であって、規約違反を判断する対象となる対象プログラムの入力を受け付ける入力部と、規約違反となるプログラムの構造を示す抽象構文木あるいはパターンを予め記憶している違反記憶部と、対象プログラムの抽象構文木を、予め定められた変換規則によって変換木に変換する変換部と、変換木の少なくとも一部が、規約違反となる抽象構文木に一致することを条件に、対象プログラムが規約に違反していると判断する判断部とを備える装置。
【選択図】図1
Description
Rational Code Review http://codereview.lexma.ibm.com/ FindBugs http://findbugs.sourceforge.net
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
図6は、対象プログラムの一例を示す。この対象プログラムは、SQLで記述されており、データベースに対するアクセス手順を示している。本実施例においては、この対象プログラムの第3行目から第12行目までの部分を例に、規約違反の判断方法を説明する。対象プログラムのこの部分は、対象プログラムの抽象構文木においてはある部分木s1として表される。第6行目から第7行目のプログラムは、COMPASHRPROFILEというテーブルと、TM_CR_EMPLOYEE_INFOというテーブルとを、所定の条件で左結合する処理を示す。このテーブルは、更に、TM_CR_BO_PRESENT_INFOというテーブルと内部結合される。
COMPASHRPROFILE AS JT INNER JOIN COMPASHRPROFILE AS HR2
ON JT.USERID = HR2.USERID
100 入力部
105 変換規則記憶部
110 変換部
120 履歴記憶部
130 違反記憶部
140 判断部
150 通知部
160 修正部
400 集合
410 集合
420 集合
500 情報処理装置
Claims (14)
- プログラムの規約違反を判断する装置であって、
規約違反を判断する対象となる対象プログラムの入力を受け付ける入力部と、
規約違反となるプログラムの構造を示す違反情報を予め記憶している違反記憶部と、
前記対象プログラムの抽象構文木を、予め定められた変換規則によって変換木に変換する変換部と、
前記変換木の少なくとも一部の構造が、前記違反情報に一致することを条件に、前記対象プログラムが規約に違反していると判断する判断部と
を備える装置。 - 前記違反記憶部は、複数の規約のそれぞれについて、当該規約に違反しているプログラムの構造を示す違反情報を記憶しており、
前記変換部は、複数の前記変換規則の中から1または複数の変換規則の組み合わせを複数選択し、それぞれの前記組み合わせに含まれる変換規則のそれぞれを前記対象プログラムの抽象構文木に順次適用することにより複数の変換木のそれぞれを生成し、
前記判断部は、前記複数の変換木のうち少なくとも何れか1つの少なくとも一部の構造が、何れかの前記違反情報に一致することを条件に、前記対象プログラムが規約に違反していると判断する
請求項1に記載の装置。 - 前記複数の変換規則のそれぞれは、変換された変換木における当該変換規則によって変換された部分木の一部に対しては当該変換規則を更に適用することはできない変換規則である
請求項2に記載の装置。 - 少なくとも1つの前記変換規則は、第1項と第2項との間での演算結果と第3項とを演算することを示す抽象構文木を、第2項と第3項との間での演算結果と第1項とを演算することを示す変換木に変換する変換規則である
請求項2に記載の装置。 - 少なくとも1つの前記変換規則は、データベースのテーブルから行または列を選択し、選択された行または列を他のテーブルと結合するプログラムの抽象構文木を、データベースのテーブルを他のテーブルと結合し、結合されたテーブルから行または列を選択するプログラムの変換木に変換する変換規則である
請求項2に記載の装置。 - 少なくとも1つの前記変換規則は、データベースのテーブルから、第1の条件および第2の条件を満たす行または列を選択するプログラムの抽象構文木を、前記テーブルから、前記第1の条件を満たす行または列を選択し、選択された結果得られる中間テーブルから、更に前記第2の条件を満たす行または列を選択するプログラムの変換木に変換する変換規則である
請求項2に記載の装置。 - 前記違反記憶部は、複数の規約のそれぞれに対応付けて、当該規約に違反しているプログラムの構造を示す違反情報と、更に、当該プログラムを当該規約に違反しない形式に変更する方法である変更方法を記憶しており、
前記対象プログラムが規約に違反していると判断されたことを条件に、当該規約に対応する前記変更方法を利用者に通知する通知部
を更に備える請求項2に記載の装置。 - 前記対象プログラムが規約に違反していることを条件に、前記変換部によって変換された変換木によって表されるプログラムのうち、前記違反記憶部に記憶されている違反情報とは構造が一致しない変換木によって表されるプログラムを利用者に通知する通知部
を更に備える請求項2に記載の装置。 - 前記通知部は、複数の前記変換木によって表されるプログラムのうち、当該変換木に含まれるノードの数が最も少ないプログラムを利用者に通知する
請求項8に記載の装置。 - 前記対象プログラムが規約に違反しており、かつ、前記対象プログラムを示す抽象構文木から、通知された前記プログラムの変換木への変換が等価変換であることを条件に、前記対象プログラムの少なくとも一部を前記変換木の構造によって修正する修正部
を更に備える請求項8に記載の装置。 - 前記違反記憶部は、変換後の変換木を規約違反として誤検出するような変換規則および規約の組を、誤検出パターンとして更に記憶しており、
前記判断部は、変換された変換木の構造が前記違反情報に一致する場合であっても、当該変換の変換規則および当該違反情報に対応する規約の組が前記誤検出パターンであることを条件に、前記対象プログラムが規約に違反していないと判断する
請求項2に記載の装置。 - 抽象構文木が前記変換部によって変換される毎に、変換元の部分木と変換先の部分木とを対応付けて記憶する履歴記憶部を更に備え、
前記判断部は、規約違反として誤検出された変換木が、他の変換規則によって更に変換された場合において、当該変換による変換の対象となる部分木が誤検出された部分木とは異なることを更に条件として、前記対象プログラムが規約に違反していると判断する
請求項11に記載の装置。 - プログラムの規約違反を判断する装置として、情報処理装置を機能させる判断プログラムであって、
前記情報処理装置を、
規約違反を判断する対象となる対象プログラムの入力を受け付ける入力部と、
規約違反となるプログラムの構造を示す違反情報を予め記憶している違反記憶部と、
前記対象プログラムの抽象構文木を、予め定められた変換規則によって変換木に変換する変換部と、
前記変換木の少なくとも一部の構造が前記違反情報に一致することを条件に、前記対象プログラムが規約に違反していると判断する判断部と
して機能させる判断プログラム。 - プログラムの規約違反を判断する方法であって、
規約違反を判断する対象となる対象プログラムの入力を受け付ける段階と、
規約違反となるプログラムの構造を示す違反情報を予め記憶している段階と、
前記対象プログラムの抽象構文木を、予め定められた変換規則によって変換木に変換する段階と、
前記変換木の少なくとも一部の構造が前記違反情報に一致することを条件に、前記対象プログラムが規約に違反していると判断する段階と
を備える方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005317204A JP4144889B2 (ja) | 2005-10-31 | 2005-10-31 | プログラムの規約違反を判断する装置、およびその方法 |
US11/555,144 US7669192B2 (en) | 2005-10-31 | 2006-10-31 | Method to find a violation of a coding rule in program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005317204A JP4144889B2 (ja) | 2005-10-31 | 2005-10-31 | プログラムの規約違反を判断する装置、およびその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007122631A true JP2007122631A (ja) | 2007-05-17 |
JP4144889B2 JP4144889B2 (ja) | 2008-09-03 |
Family
ID=38146369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005317204A Expired - Fee Related JP4144889B2 (ja) | 2005-10-31 | 2005-10-31 | プログラムの規約違反を判断する装置、およびその方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7669192B2 (ja) |
JP (1) | JP4144889B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009259141A (ja) * | 2008-04-21 | 2009-11-05 | Jfe Steel Corp | アプリケーションプログラム作成支援装置、データベースシステム、アプリケーションプログラム作成支援方法およびそのプログラム |
JP2010140407A (ja) * | 2008-12-15 | 2010-06-24 | Nomura Research Institute Ltd | ソースコード検査装置 |
JP2019160284A (ja) * | 2018-03-08 | 2019-09-19 | 富士通株式会社 | 抽象コードグラフを用いたソフトウェアの表現 |
WO2020241570A1 (ja) * | 2019-05-31 | 2020-12-03 | コネクトフリー株式会社 | ソフトウェア開発装置およびソフトウェア開発プログラム |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146712B2 (en) * | 2013-09-18 | 2015-09-29 | Vmware, Inc. | Extensible code auto-fix framework based on XML query languages |
US10733075B2 (en) * | 2018-08-22 | 2020-08-04 | Fujitsu Limited | Data-driven synthesis of fix patterns |
CN110413646B (zh) * | 2019-06-28 | 2023-05-12 | 创新先进技术有限公司 | 基于预设规则筛选用户的方法和装置 |
CN110609693B (zh) * | 2019-08-15 | 2023-05-26 | 深圳赛安特技术服务有限公司 | 基于数据标准化的代码更新方法、装置及终端设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187450A (ja) | 1996-11-07 | 1998-07-21 | Fujitsu Ltd | オブジェクト指向プログラム自動生成装置,自動生成方法およびそのプログラム記憶媒体 |
US7627861B2 (en) * | 2003-12-05 | 2009-12-01 | The University Of North Carolina | Methods, systems, and computer program products for identifying computer program source code constructs |
US7624304B2 (en) * | 2004-10-07 | 2009-11-24 | Microsoft Corporation | Defect detection for integers |
US7849509B2 (en) * | 2005-10-07 | 2010-12-07 | Microsoft Corporation | Detection of security vulnerabilities in computer programs |
-
2005
- 2005-10-31 JP JP2005317204A patent/JP4144889B2/ja not_active Expired - Fee Related
-
2006
- 2006-10-31 US US11/555,144 patent/US7669192B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009259141A (ja) * | 2008-04-21 | 2009-11-05 | Jfe Steel Corp | アプリケーションプログラム作成支援装置、データベースシステム、アプリケーションプログラム作成支援方法およびそのプログラム |
JP2010140407A (ja) * | 2008-12-15 | 2010-06-24 | Nomura Research Institute Ltd | ソースコード検査装置 |
JP2019160284A (ja) * | 2018-03-08 | 2019-09-19 | 富士通株式会社 | 抽象コードグラフを用いたソフトウェアの表現 |
JP7172435B2 (ja) | 2018-03-08 | 2022-11-16 | 富士通株式会社 | 抽象コードグラフを用いたソフトウェアの表現 |
WO2020241570A1 (ja) * | 2019-05-31 | 2020-12-03 | コネクトフリー株式会社 | ソフトウェア開発装置およびソフトウェア開発プログラム |
JP2020197866A (ja) * | 2019-05-31 | 2020-12-10 | コネクトフリー株式会社 | ソフトウェア開発装置およびソフトウェア開発プログラム |
JP7473145B2 (ja) | 2019-05-31 | 2024-04-23 | コネクトフリー株式会社 | ソフトウェア開発装置およびソフトウェア開発プログラム |
US12045608B2 (en) | 2019-05-31 | 2024-07-23 | Connectfree Corporation | Software development device and software development program |
Also Published As
Publication number | Publication date |
---|---|
US20070169020A1 (en) | 2007-07-19 |
JP4144889B2 (ja) | 2008-09-03 |
US7669192B2 (en) | 2010-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4144889B2 (ja) | プログラムの規約違反を判断する装置、およびその方法 | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
JP4889204B2 (ja) | シェルに対するコマンドの入力パラメータを処理するための媒体およびシステム | |
JP5085022B2 (ja) | 継ぎ目なくオブジェクトを比較するシステムおよび方法 | |
US20170279691A1 (en) | System and Method for Validating Documentation of Representational State Transfer (Rest) Services | |
CN112035359B (zh) | 程序测试方法、装置、电子设备及存储介质 | |
US8938383B2 (en) | Enabling test script play back in different locales | |
JP5047621B2 (ja) | 対話環境における構文への制約を入手し適用する機構 | |
JP2007519073A (ja) | 管理用ツール環境 | |
JP2007094775A (ja) | 意味解析装置、意味解析方法および意味解析プログラム | |
JP2007509411A (ja) | データ駆動型コマンドライン出力を提供する機構 | |
US8275779B2 (en) | Data tranformations for applications supporting different data formats | |
JP2007509407A (ja) | コマンドライン命令への拡張機能を提供する機構 | |
WO2011151931A1 (ja) | アプリケーションの解析方法、解析システム及び記録媒体 | |
US7530075B2 (en) | System and method for employing object-based pipelines | |
JP2007510203A (ja) | 部分的に未解決の入力を分析する機構 | |
US8489537B2 (en) | Segmenting sequential data with a finite state machine | |
US7849404B2 (en) | System for determining whether screen displayed by program satisfies specification | |
JP2011113298A (ja) | 流用ソースコード解析システム及びプログラム並びに記録媒体 | |
JP2005352861A (ja) | 電子データ処理方法、電子データ処理装置、および、電子データ処理プログラム | |
JP5103338B2 (ja) | 電子ファイルの解析技術 | |
JP6419902B1 (ja) | プログラム比較方法、プログラム比較装置およびプログラム比較プログラム | |
WO2014064746A1 (ja) | データ操作命令生成装置、データ操作命令生成システム、データ操作命令生成方法およびデータ操作命令生成プログラム | |
JP2006318104A (ja) | ソースコード検閲方法 | |
US20100185635A1 (en) | Data tranformations between a source application and service-oriented target applications supporting different data formats |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080118 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20080130 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20080227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080304 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080516 |
|
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: 20080610 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20080612 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080616 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110627 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |