JP2002342129A - コーディングチェック方式 - Google Patents

コーディングチェック方式

Info

Publication number
JP2002342129A
JP2002342129A JP2001147205A JP2001147205A JP2002342129A JP 2002342129 A JP2002342129 A JP 2002342129A JP 2001147205 A JP2001147205 A JP 2001147205A JP 2001147205 A JP2001147205 A JP 2001147205A JP 2002342129 A JP2002342129 A JP 2002342129A
Authority
JP
Japan
Prior art keywords
coding
source program
check
function
extracted
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
JP2001147205A
Other languages
English (en)
Inventor
Shigeru Aida
茂 相田
Noboru Yamashita
昇 山下
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001147205A priority Critical patent/JP2002342129A/ja
Publication of JP2002342129A publication Critical patent/JP2002342129A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】間違いである可能性があるコーディングがされ
ているコーディング箇所を的確かつ迅速に摘出でき、プ
ログラム開発における高効率と高品質を実現する。 【解決手段】C、C++ソースプログラムからコンパイ
ラでは摘出されない目的とする処理とならない危険性の
ある文法を持ったコーディング箇所を摘出し、プログラ
ム開発者へ効率的かつ容易な見直し確認ができる情報を
提供する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理システム
に関し、特にプログラム開発過程において、コンパイラ
で検出されず、入力間違いし易いコーディングミスや目
視確認では摘出困難な間違いである可能性があるコーデ
ィング箇所を検出するコーディングチェック方式に属す
る。
【0002】
【従来の技術】従来は、机上デバッグ時に入力内容を人
手により1ステップずつ追いかける目視確認により、コ
ーディングミスを摘出しており、入力内容全体を見渡し
ていた。デバッグ時の目視確認では、入力内容の論理を
追いかけながらの確認となってしまうため、ふとした入
力の違いがあっても気付かず、実際にプログラムを動か
しながらのマシンテスト時に動作不正の発生により現象
化して見つかることが多い。
【0003】
【発明が解決しようとする課題】人手作業による入力内
容全体を見渡す目視確認では、コーディングミスの摘出
率が悪く、多くの確認工数が必要となる。また、C、C
++言語のプログラム経験年数や理解力によっては、摘
出を漏らしてしまうコーディングミスもある。一般に不
良の摘出がソフト開発工程の後々で発見されることは、
不良箇所だけでなく影響範囲までを含めたテストのやり
直しが必要となるため、余分な工数が発生し、開発効率
が悪くなる。C工程での単純な入力ミスによるコーディ
ングミスが原因で不良を作り込んでしまい、C工程終了
時点の見直し確認で見つけられるべき不良が後々の工程
になって見つかり発生するテストのやり直しは、開発効
率をさらに悪化させることとなる。
【0004】
【課題を解決するための手段】このような課題を解決す
るために、コンパイラで摘出されず、机上デバッグで見
逃し易い間違いの可能性があるコーディング箇所を確実
に摘出し、プログラム開発者へ情報提供することでコー
ディング確認作業が軽減される。また、コーディングミ
スの見逃しによる後工程への流出が防止できるため、開
発効率が向上する。さらに、ソースプログラムの修正し
た部分だけのチェック結果が出力できることから、前回
のチェックで間違いである可能性があるコーディング箇
所として検出されたが、確認の結果実際には間違いでは
なかったコーディング箇所を再度確認するという二度手
間がなくなるため、ソースプログラムを一部分だけ修正
するエンハンス時などの開発効率も良くなる。
【0005】
【発明の実施の形態】以下、本発明のコーディングチェ
ック方式について図面に従い説明する。
【0006】図1は、本発明のコーディングチェック方
式のシステム構成図である。ソースプログラム及び旧ソ
ースプログラムを読み込むソース読み込み部(101)
とソースプログラムのモジュール構造を解析する構文解
析部(102)とソースプログラムの意味を解析する意
味解析部(103)と間違いである可能性のあるコーデ
ィングかどうかをチェックするコーディングチェック部
(104)と前回以前のソースプログラムとソースプロ
グラムを比較するソース比較部(105)とチェック結
果を出力するメッセージ出力部(106)で構成され
る。
【0007】図2は、本発明のコーディングチェック方
式の処理フローである。
【0008】ソース読み込み部でソースプログラムから
すべてのステップを読み込み、記憶部に登録する(S2
01)。登録したソースプログラムを構文解析部で関数
単位に分割し、関数単位で再登録する(S202)。旧
ソースプログラムがある場合は(S203)、旧ソース
プログラムを読み込み、記憶部に登録する(S20
4)。登録した旧ソースプログラムを関数単位に分割
し、関数単位で再登録する(S205)。旧ソースプロ
グラムは、母体流用やエンハンス時などの開発で変更す
る前のソースプログラムで、旧ソースプログラムの有無
はチェックボタンなどで切り替えができる。
【0009】旧ソースプログラムがある場合は、ソース
プログラムと旧ソースプログラムを関数単位に1ステッ
プずつ文字列比較して、変更されたステップの行番号を
抽出しておく(S206)。
【0010】ソースプログラムから最初の関数を取り出
し(S207)、取り出した関数から1ステップを取り
出す(S208)。取り出したステップ種別を識別し
(S209)、条件文であるか(S210)、多重分岐
文であるか(S212)、繰り返し文であるか(S21
4)により各種別ごとのチェック処理を行う(S21
1、S213、S215、S216)。
【0011】チェック処理には、条件文チェック処理の
一例としては、等式とすべき所を入力ミスにより代入と
している可能性があるため、代入がないかをチェックし
たりし、多重分岐文では、不用意なコーディングによる
break文の付け忘れがあるため、break文があるかをチェ
ックしたり、繰り返し文チェックでは、無意識な停止条
件の設定による無限ループがあるため、繰り返し停止条
件の中に関係演算子があるかをチェックしたり、実行文
チェック処理の一例としては、入力ミスにより代入文を
条件文(等式)としている可能性があるため、等式がな
いかチェックしたりなどの様々なチェックがあり、これ
らのチェック処理は、チェックボックスなどでの指定に
より、任意な組合せでチェックを行うことができる。
【0012】以上説明したチェック処理により、間違い
である可能性が見つかった場合は(S217)、差分抽
出情報により修正ステップかどうかを判別し、修正ステ
ップであれば(S218)、そのチェックした内容に応
じたメッセージと、ステップの行番号と関数名を登録す
る(S219)。このとき、差分抽出情報がなかったり
(旧ソースプログラムが指定されていない)、修正ステ
ップでなければ登録を行わない。
【0013】全ステップ取り出していなければ(S22
0)、次のステップを取り出し(S208)、次のステ
ップ以降についても同様に、ステップ種別を識別しチェ
ック処理する。また、全関数取り出していなければ(S
221)、ソースプログラムから次の関数を取り出し
(S222)、同様に1ステップずつチェック処理をす
る。
【0014】全関数のチェック処理が終わったら、間違
いである可能性が見つかり登録されたメッセージがあれ
ば(S223)、チェック結果を出力する(S22
4)。
【0015】以上説明したように、関数単位に分割し、
ステップ種別を識別しながら全ステップをチェック処理
することで、間違いである可能性があるコーディングを
見つけることができる。また、旧ソースプログラムとの
比較を行うことにより、修正されていないステップに対
して見つかった間違いである可能性があるコーディング
に対する出力を抑止し、前回以前に旧ソースプログラム
をコーディングチェックして確認した間違いである可能
性のある箇所の再確認が必要なくなる。
【0016】図3は、本発明のコーディングチェック方
式でチェック結果を変更のあったステップに限定して出
力するための差分情報抽出処理フローである。
【0017】ソースプログラムから関数を取り出し(S
301)、旧ソースプログラムから関数を取り出す(S
302)。ソート開始行番号に1をセットし(S30
3)、旧ソースプログラムの関数からソート開始行番号
で指定される行番号のステップを取り出す(S30
4)。ソースプログラムの関数から1ステップを取り出
し(S305)、ソースプログラムと旧ソースプログラ
ムの1ステップを文字列比較する(S307)。ソース
プログラムと旧ソースプログラムの1ステップが一致し
ていれば(S308)、ソート開始行番号を旧ソースプ
ログラムの次の行番号をセットし(S309)、旧ソー
スプログラムとソースプログラムから次のステップを取
り出し(S304、S305)、以上の処理を繰り返
す。一致していなければ、旧ソースプログラムの関数か
ら次の1ステップを取り出し(S310)、旧ソースプ
ログラムの関数からすべてを取り出すまで、ソースプロ
グラムとの文字列比較を繰り返す。すべてを取り出した
場合は(S311)、旧ソースプログラムに一致するス
テップがなかったため、差分情報にソースプログラムの
行番号を登録する(S312)。ソースプログラムから
すべてのステップを取り出し終わるまで(S306)、
旧ソースプログラムとの文字列比較を繰り返す。以上、
処理することにより、旧ソースプログラムからソースプ
ログラムに対して変更のあったステップであるかどうか
を判別することができる。
【0018】図4は、本発明のコーディングチェック方
式で出力するチェック結果の一例である。
【0019】チェック結果には、ファイル名(401)
と関数名(402)と行番号(403)とメッセージ
(404)が出力され、関数名は、間違いである可能性
があるコーディング箇所のある関数名を意味し、行番号
は、その箇所の関数内の行番号を意味し、メッセージ
は、可能性のある間違いの種別を意味する。行番号は、
ファイルでの行番号でなく関数単位の行番号で出力する
ことで、ソースプログラムと旧ソースプログラムのステ
ップ比較で得られた差分抽出情報と容易に照らし合わせ
ることが可能となる。
【0020】図5は、本発明のコーディングチェック方
式でのソースプログラムを1ステップずつ登録するため
のファイルテーブルの構造図である。ファイル名(50
1)には、読み込んだソースプログラムのファイル名を
登録し、ファイルの1ステップずつをファイル内行番号
をインデックス(503)としてソースコードテーブル
(502)に登録する。ファイル内行番号をインデック
スとしてソースコードテーブルに登録することで、ファ
イル内行番号を登録するためのデータが不要となるた
め、ファイルテーブルのデータ量を少なくでき、ファイ
ル内行番号をソースコードテーブルのインデックスとし
てそのまま使用できるため、ソースコードの取り出しが
容易に行える。
【0021】図6は、本発明のコーディンクチェック方
式でのソースプログラムを関数単位に登録するための関
数ブロックテーブルの構造図である。ファイル名(60
1)には、読み込んだソースプログラムのファイル名を
登録し、読み込んだソースプログラムの関数分関数ブロ
ック(606)を用意して、関数名(602)と関数内
の1ステップずつを関数内行番号をインデックス(60
5)としてソースコードテーブル(603)に登録し、
旧ソースプログラムとソースプログラムの各ステップの
変更の有無を変更フラグ(604)に登録する。また、
旧ソースプログラムもこれとは別の関数ブロックテーブ
ルに同様に登録する。関数内の1ステップずつを関数内
行番号をインデックスとしてソースコードテーブルに登
録することで、関数内行番号を登録するためのデータが
不要となるため、関数ブロックテーブルのデータ量を少
なくでき、関数内行番号をソースコードテーブルのイン
デックスとしてそのまま使用できるためソースコードの
取り出しが容易に行える。
【0022】
【発明の効果】以上、説明したように本発明によるコー
ディングチェック方式を用いれば、プログラム開発時に
作り込んだコーディングミスを迅速かつ確実に摘出する
ことができ、また、不良となりうる危険性のあるコーデ
ィング箇所とそうでないコーディング箇所を切り分ける
ことにより、コーディングの検証範囲を限定することが
でき、プログラム開発効率が向上され、また、C工程完
了時点でのソースプログラムの品質が向上でき、後工程
へ漏れるコーディングミスが防止できるため、プログラ
ムの開発効率と品質がより一層高まる。さらにプログラ
ムをエンハンスしたときなどソースプログラムの一部を
修正した場合は、ソースプログラムの修正した箇所のみ
に限定したチェック結果を得ることができるため、前回
のコーディングチェックで検出されたが、確認の結果、
実際には間違いではなかったコーディング箇所の再確認
をする必要がないため、ソースコードを一部修正した場
合の開発効率も向上できる。
【図面の簡単な説明】
【図1】本発明のコーディングチェック方式のシステム
構成図である。
【図2】本発明のコーディングチェック方式の処理フロ
ーチャートである。
【図3】本発明のコーディングチェック方式のチェック
結果を旧ソースファイルとの変更部分だけを抽出するた
めの処理フローチャートである。
【図4】本発明のコーディングチェック方式のチェック
結果の出力の一例を示す図である。
【図5】本発明のコーディングチェック方式でソースプ
ログラムを登録するファイルテーブルの構造図である。
【図6】本発明のコーディングチェック方式でソースプ
ログラムを関数単位に登録する関数ブロックテーブルの
構造図である。
【符号の説明】
101…ソース読み込み部、102…構文解析部、10
3…意味解析部、104…コーディングチェック部、1
05…ソース比較部、106…メッセージ出力部、10
7…記憶部、401…ファイル名、402…関数名、4
03…関数内行番号、404…メッセージ、501…フ
ァイルテーブル_ファイル名、502…ファイル名テー
ブル_ソースコード、503…ファイル名_ソースコー
ドテーブルインデックス、601…関数ブロックテーブ
ル_ファイル名、602…関数ブロックテーブル_関数
名、603…関数ブロックテーブル_ソースコード、6
04…関数ブロックテーブル_変更フラグ、605…関
数ブロックテーブル_ソースコードテーブルインデック
ス、606…関数ブロックテーブル_関数ブロック。
フロントページの続き Fターム(参考) 5B076 EA08 EC02 EC03 5B081 AA06 BB07 CC00 CC11 CC61 CC62

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 C、C++ソースプログラムから完全に
    間違いであるコーディングがされている箇所を検出する
    ものではなく、演算順序の暗黙の了解や機械語への翻訳
    を目的としたコンパイラの構文チェックでは検出されな
    いプログラムの処理的には間違いである可能性があるコ
    ーディングがされている箇所を検出するコーディングチ
    ェック方式。
  2. 【請求項2】 C、C++ソースプログラムからコンパ
    イル時にエラー、ワーニング指摘されない安易に入力し
    がちな似通った形態で異なった処理をする文法を持った
    コーディング箇所を検出し、該当したコーディング箇所
    をファイル名と関数名と関数内の行番号で示し、該当し
    たコーディング箇所が持つ文法に応じたメッセージを付
    加しチェック結果として出力するコーディングチェック
    方式。
  3. 【請求項3】 請求項2記載のコーディングチェック方
    式において、検出した間違いである可能性があるコーデ
    ィング箇所を、前回以前に作成したソースプログラムと
    比較し、前記記載のソースプログラムとの変更部分につ
    いて検出された間違いである可能性のあるコーディング
    箇所だけをチェック結果として出力するコーディング方
    式。
JP2001147205A 2001-05-17 2001-05-17 コーディングチェック方式 Pending JP2002342129A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001147205A JP2002342129A (ja) 2001-05-17 2001-05-17 コーディングチェック方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001147205A JP2002342129A (ja) 2001-05-17 2001-05-17 コーディングチェック方式

Publications (1)

Publication Number Publication Date
JP2002342129A true JP2002342129A (ja) 2002-11-29

Family

ID=18992724

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001147205A Pending JP2002342129A (ja) 2001-05-17 2001-05-17 コーディングチェック方式

Country Status (1)

Country Link
JP (1) JP2002342129A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006092475A (ja) * 2004-09-27 2006-04-06 Hitachi Software Eng Co Ltd ソースコードインスペクションシステム
JP2008262330A (ja) * 2007-04-11 2008-10-30 Hitachi Ltd プログラム誤修正検知方法および装置
JP2009098872A (ja) * 2007-10-16 2009-05-07 Toshiba Corp ソースプログラム解析装置、ソースプログラム解析方法及びコンピュータプログラム
JP2009230667A (ja) * 2008-03-25 2009-10-08 Nec Corp プロパティ生成システムおよびプロパティ検証システム
JP2016133946A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 ソースコードレビュー方法及びそのシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006092475A (ja) * 2004-09-27 2006-04-06 Hitachi Software Eng Co Ltd ソースコードインスペクションシステム
JP2008262330A (ja) * 2007-04-11 2008-10-30 Hitachi Ltd プログラム誤修正検知方法および装置
JP2009098872A (ja) * 2007-10-16 2009-05-07 Toshiba Corp ソースプログラム解析装置、ソースプログラム解析方法及びコンピュータプログラム
JP2009230667A (ja) * 2008-03-25 2009-10-08 Nec Corp プロパティ生成システムおよびプロパティ検証システム
JP2016133946A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 ソースコードレビュー方法及びそのシステム

Similar Documents

Publication Publication Date Title
US11775414B2 (en) Automated bug fixing using deep learning
CN106919612B (zh) 一种上线结构化查询语言脚本的处理方法及装置
CN103257919B (zh) 脚本程序检查方法和装置
CN117009231B (zh) 基于对话式大语言模型的高可靠单元测试自动生成方法及装置
US20130125098A1 (en) Transformation of Computer Programs
US20060005169A1 (en) Software development system and method
CN116089302A (zh) 一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法
US11119740B2 (en) Parsability of code snippets
CN113434385A (zh) 一种针对软件模型检查工具的测试用例自动生成方法和系统
JP2002342129A (ja) コーディングチェック方式
US11366742B2 (en) Automated identification of lines of code related to errors field
EP2535813B1 (en) Method and device for generating an alert during an analysis of performance of a computer application
CN114781330A (zh) 一种基于需求建模的类型检查方法
CN114201177A (zh) 文件生成方法、装置、电子设备、介质和计算机程序产品
JP2008020972A (ja) ソフトウエア解析システム
JPH1173328A (ja) コーディング規約チェックシステム
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
CN111930413B (zh) 一种补丁自动生成方法、装置及系统
CN113485715B (zh) 一种基于数据中台的代码提示方法、系统及数据计算平台
CN118445214B (zh) 基于代码文件修改的测例获取方法、装置、设备、介质及产品
JPH05197561A (ja) コンパイル方式
CN117667711B (zh) 一种产线bug检测方法、装置、系统和存储介质
Savitskii et al. Fast analysis of source code in C and C++
CN111427769A (zh) 一种代码质量检测方法、设备、服务器及可读存储介质
CN118550836A (zh) 一种无需期望结果注入的黑盒测试方法及系统