JP2010097426A - コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法 - Google Patents

コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法 Download PDF

Info

Publication number
JP2010097426A
JP2010097426A JP2008267803A JP2008267803A JP2010097426A JP 2010097426 A JP2010097426 A JP 2010097426A JP 2008267803 A JP2008267803 A JP 2008267803A JP 2008267803 A JP2008267803 A JP 2008267803A JP 2010097426 A JP2010097426 A JP 2010097426A
Authority
JP
Japan
Prior art keywords
component
input
description format
function
description
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
JP2008267803A
Other languages
English (en)
Inventor
Akira Kanazawa
明 金澤
Takeshi Furuto
健 古戸
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.)
Sumitomo Wiring Systems Ltd
AutoNetworks Technologies Ltd
Sumitomo Electric Industries Ltd
Original Assignee
Sumitomo Wiring Systems Ltd
AutoNetworks Technologies Ltd
Sumitomo Electric Industries 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 Sumitomo Wiring Systems Ltd, AutoNetworks Technologies Ltd, Sumitomo Electric Industries Ltd filed Critical Sumitomo Wiring Systems Ltd
Priority to JP2008267803A priority Critical patent/JP2010097426A/ja
Publication of JP2010097426A publication Critical patent/JP2010097426A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

【課題】コーディングスタイルに従ったソースプログラムの記述をプログラマに対して動的に促すことができるコンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法を提供する。
【解決手段】コーディングスタイルチェックプログラム90は、ソースプログラムを構成する文字、行又は関数等の構成要素の入力完了時点にて、記述済みのソースプログラムが予め設定ファイルに設定されたコーディングスタイルを満たしているかを判定し、コーディングスタイルを満たしていない場合にエラーメッセージを表示すると共に、入力された構成要素の補完を行う。また、ソースプログラムの記述がコーディングスタイルを満たしていない場合に、エラーメッセージを表示するのみでなく、修正候補を一覧表示して選択を受け付け、選択に応じて修正を行う。
【選択図】図1

Description

本発明は、プログラマによるソースプログラムの入力を支援し、定められた記述様式に則したソースプログラムの記述を促すことができるコンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法に関する。
近年、ハードウェアの高機能化及び多機能化に伴って、このハードウェアにて動作するソフトウェア(プログラム)も高機能化及び多機能化している。このため1つのプログラムを一人のプログラマが作成することは困難化しており、1つのプログラムを関数、オブジェクト又はモジュール等の単位で分割して複数のプログラマが作成する場合が多い。複数のプログラマが共同で1つのプログラムを作成するためには、一のプログラマが作成したソースプログラムを他のプログラマが容易に理解できる必要がある。一のプログラマが作成したプログラムのバグ修正を他のプログラマが行う場合、及び、一のプログラマが作成したプログラムを再利用して他のプログラマが新たなプログラムを作成する場合等についても同様である。
このため、近年ではソースプログラムの記述様式(コーディングスタイル)の統一又は標準化が進められており、可読性が高く容易に理解できるソースプログラムが作成されている。コーディングスタイルとは、例えば関数の処理内容を説明するコメントの記述、行の開始位置などを揃えるインデント又は変数名の命名規則等のソースプログラムの可読性を高めるためのものであり、プログラミング言語の文法規則とは異なりコンパイラによってエラーとされるものではない。このため、コーディングスタイルに従ってソースプログラムを記述するか否かは各プログラマの判断に依存するという問題がある。
特許文献1においては、ソースプログラムのプログラミング言語の文法チェックのみでなく、コーディングスタイルのチェックを自動的に行うことができるプログラミング言語処理システムが提案されている。このプログラミング言語処理システムは、ソースプログラムがプログラミング言語の文法及びコーディングスタイルに合致しているか否かを解析し、ソースプログラムにエラーが検出されない場合にはソースプログラムによりオブジェクトプログラムを生成し、ソースプログラムにエラーが検出された場合にはエラーメッセージを出力する。
特開平6−149588号公報
しかしながら、特許文献1に記載のプログラミング言語処理システムは、プログラマがソースプログラムの記述を完了した後、例えばコンパイルの際などにコーディングスタイルのチェックを行う構成である。よって、プログラマはソースプログラムの記述を完了した後で、コーディングスタイルのエラーを修正するためにソースプログラムの記述に戻って作業を行う必要があるため、手間がかかるという問題がある。また、特許文献1に記載のプログラミング言語処理システムは、コーディングスタイルのエラーを検出した場合にエラーメッセージを出力するのみであるため、ソースプログラムの記述に係るプログラマの支援機能としては不十分である。
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、プログラマによるソースプログラムの入力時に、入力されたソースプログラムの構成要素がコーディングスタイルを満たしているか否かを判定し、警告及び補完を行うことにより、動的にプログラマに対してコーディングスタイルに従ったソースプログラムの記述を促すことができるコンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法を提供することにある。
本発明に係るコンピュータプログラムは、コンピュータに、ソースプログラムの入力を受け付けさせるコンピュータプログラムにおいて、コンピュータに、前記ソースプログラムを構成する一の構成要素の入力完了を判定させる入力完了判定ステップと、一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定させる記述様式判定ステップと、前記記述様式を満たしていないと判定した場合に、警告を行わせる警告ステップと、前記一の構成要素に続く構成要素を補完することができるか否かを判定させる補完可否判定ステップと、補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示させる補完候補表示ステップと、前記補完候補の選択を受け付けさせる補完候補選択ステップと、受け付けた補完候補により前記一の構成要素を補完させる補完ステップとを有することを特徴とする。
また、本発明に係るコンピュータプログラムは、コンピュータに、前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示させる修正候補表示ステップと、前記修正候補の選択を受け付けさせる修正候補選択ステップと、受け付けた修正候補により前記一の構成要素を修正させる修正ステップとを更に有することを特徴とする。
また、本発明に係るコンピュータプログラムは、コンピュータに、前記記述様式に係る複数の設定を受け付けさせるステップと、受け付けた複数の設定の優先度を判定させるステップとを更に有し、前記記述様式判定ステップは、優先度が高いと判定された設定に係る記述様式に応じて判定を行わせることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、文字であり、コンピュータに、前記文字が変数の型を示す文字列の最後の文字であるか否かを判定させるステップを更に有し、前記補完候補表示ステップは、前記文字が変数の型を示す文字列の最後の文字である場合に、前記変数の型に続く変数名の接頭字句を補完候補として表示させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、文字又は記号であり、コンピュータに、前記文字又は記号が連続した2つの’?’記号に続く文字又は記号であるか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記文字又は記号が連続した2つの’?’記号に続く文字又は記号である場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、記号であり、コンピュータに、前記記号が連続する2つ目の’/’記号であるか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記一の記号が連続する2つ目の’/’記号である場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、行であり、コンピュータに、前記一の行に変数宣言に係る記述が含まれているか否かを判定させるステップと、前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句であるか否かを判定させるステップとを更に有し、前記記述様式判定ステップは、前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句でない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、行であり、コンピュータに、処理に係る記述が前記行に複数記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、処理に係る記述が前記行に複数記述されている場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、行であり、コンピュータに、関数宣言に係る記述が前記行に含まれているか否かを判定させるステップと、前記関数宣言に係る関数が引数を有さない関数であるか否かを判定させるステップと、前記関数宣言に引数を有さない旨を示す記述が含まれているか否かを判定させるステップとを更に有し、前記記述様式判定ステップは、前記関数宣言に係る関数が引数を有さない関数であり、且つ、前記関数宣言に引数を有さない旨を示す記述が含まれていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、演算式であり、コンピュータに、前記演算式に複数の演算子が含まれているか否かを判定させるステップと、各演算子の演算に係る優先順位が明示されているか否かを判定させるステップとを更に備え、前記記述様式判定ステップは、前記演算式に複数の演算子が含まれており、且つ、各演算子の演算に係る優先順位が明示されていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、条件の成立に応じて行われる処理に係る記述であり、コンピュータに、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、演算式であり、コンピュータに、複数の演算式がコンマで区切られて記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、複数の演算式がコンマで区切られて記述されている場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、関数であり、コンピュータに、前記関数が予め定められた行数を超えて記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記関数が予め定められた行数を超えて記述されている場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、関数であり、コンピュータに、前記関数の宣言の前にコメントが記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記関数の宣言の前にコメントが記述されていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、関数であり、コンピュータに、前記関数に戻り値に係る記述が含まれているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記関数に戻り値に係る記述が含まれていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
また、本発明に係るソースプログラム入力受付装置は、ソースプログラムの入力を受け付けるソースプログラム入力受付装置において、前記ソースプログラムを構成する一の構成要素の入力完了を判定する入力完了判定手段と、一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定する記述様式判定手段と、前記記述様式を満たしていないと判定した場合に、警告を行う警告手段と、前記一の構成要素に続く構成要素を補完することができるか否かを判定する補完可否判定手段と、補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示する補完候補表示手段と、前記補完候補の選択を受け付ける補完候補選択手段と、受け付けた補完候補により前記一の構成要素を補完する補完手段とを備えることを特徴とする。
また、本発明に係るソースプログラム入力受付装置は、前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示する修正候補表示手段と、前記修正候補の選択を受け付ける修正候補選択手段と、受け付けた修正候補により前記一の構成要素を修正する修正手段とを更に備えることを特徴とする。
また、本発明に係るソースプログラム入力受付方法は、ソースプログラムの入力を受け付けるソースプログラム入力受付方法において、前記ソースプログラムを構成する一の構成要素の入力完了を判定し、一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定し、前記記述様式を満たしていないと判定した場合に、警告を行い、前記一の構成要素に続く構成要素を補完することができるか否かを判定し、補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示し、前記補完候補の選択を受け付け、受け付けた補完候補により前記一の構成要素を補完することを特徴とする。
また、本発明に係るソースプログラム入力受付方法は、前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示し、前記修正候補の選択を受け付け、受け付けた修正候補により前記一の構成要素を修正することを特徴とする。
本発明においては、ソースプログラムを構成する構成要素の入力完了を判定する。構成要素とは、例えば文字、記号、字句、行、演算式、条件文、繰返文、変数又は関数等のソースプログラムに記述される様々なものである。構成要素の入力完了時点にて記述済みのソースプログラムが、予め定められたソースプログラムの記述様式(コーディングスタイル)を満たしているかを判定する。これにより、プログラマがソースプログラムをテキストエディタなどで記述しているときにコーディングスタイルのチェックを行うことができ、コーディングスタイルに違反する記述をプログラマが行った場合にはその時点で警告を与えることができる。
また、入力された構成要素に続く構成要素をコーディングスタイルに従って補完することができる場合には、一又は複数の補完候補を表示してプログラマに補完候補を選択させ、選択された補完候補により構成要素を補完する。これにより、プログラマが記述する前にコーディングスタイルを提示し、これに従った構成要素の入力を自動的に行うことができる。
また本発明においては、コーディングスタイルに違反する記述をプログラマが行った場合にこれを警告するのみでなく、この記述をコーディングスタイルを満たす記述に修正した一又は複数の修正候補を表示してプログラマに修正候補を選択させ、選択された修正候補により構成要素を修正する。これによりコーディングスタイルを満たす記述への修正を自動的に行うことができ、プログラマがコーディングスタイルに違反する記述を繰り返すことを防止できる。
また本発明においては、例えばコーディングスタイルに係る設定を設定ファイルなどにプログラマなどが予め記述しておき、これを読み込むことによって、コーディングスタイルの設定を受け付け、受け付けた設定に従ってソースプログラムの記述を判定する。これにより、プログラムを開発するグループ、プロジェクト、組織又は企業などに特有のコーディングスタイルを判定の条件に加えることができる。また、コーディングスタイルに係る複数の設定を受け付けた場合に、複数の設定の優先度を判定し、優先度の高い一の設定に従ってコーディングスタイルの判定を行う。これにより、例えば組織全体でコーディングスタイルを定め、この組織の各部署でそれぞれコーディングスタイルを定め、各部署の各プロジェクトでそれぞれコーディングスタイルを定めるなどして、複数のコーディングスタイルに従った判定を行うことができる。また、複数のコーディングスタイルに相反する内容が含まれる場合に、最も優先度の高いコーディングスタイルに従った判定を行うことができる。
また本発明においては、コーディングスタイルに従って構成要素の補完を行う場合、入力された文字が変数の型を示す文字列の最後の文字であるか否かを調べる。例えば変数型が”unsigned int”の場合、最後の’t’の文字の入力を調べればよい。変数の型を示す文字列の入力が完了した場合、変数型に対応付けて予め定められた接頭字句(例えば”unsigned int”の場合には”ui”又は”*ui”等)を補完候補として表示する。これにより、プログラマは補完候補から接頭字句を選択して自動入力し、その後に個別の変数名を入力することができ、変数名に関するコーディングスタイルを統一することができる。
また本発明においては、連続した2つの’?’記号に続く文字又は記号が入力された場合に、コーディングスタイルを満たしていないと判定する。これにより、C言語などにおいて’{’に代えて”??<”を入力するトリグラフシーケンスの使用をコーディングスタイルとして禁止することができる。
また本発明においては、連続する2つ目の’/’記号が入力された場合に、コーディングスタイルを満たしていないと判定する。これにより、”//”を用いたコメントの記述をコーディングスタイルとして禁止することができる。この場合、”/*”及び”*/”を用いたコメントに自動的に修正してもよい。
また本発明においては、入力された一の行に変数宣言の記述が含まれているか否かを判定し、変数宣言に係る変数の変数名に付された接頭字句が、変数型に応じて定められた接頭字句でない場合に、コーディングスタイルを満たしていないと判定する。これにより、変数名に関するコーディングスタイルを統一することができる。
また本発明においては、処理に係る記述(所謂、ステートメント)が1行に複数記述されている場合に、コーディングスタイルを満たしていないと判定する。1行に複数のステートメントが記述されているとソースプログラムの可読性が低下するが、これを回避することができる。
また本発明においては、入力された一の行に関数宣言の記述が含まれているか否かを判定し、引数を有さない関数の宣言に、引数を有さない旨を示す記述(例えば、C言語などにおいて”void”のキーワード)がなされていない場合に、コーディングスタイルを満たしていないと判定する。関数の引数に関するコーディングスタイルを判定することによって、プログラマが引数の記載を忘れたか又は引数を有さない関数であるかを他のプログラマが迷うことなく判断できる。
また本発明においては、演算式に複数の演算子が含まれており、各演算子の優先順位が明示されていない場合に、コーディングスタイルを満たしていないと判定する。演算子の優先順位は、例えば’(’及び’)’のカッコを用いて明示することができる。これにより、複雑な演算式の可読性を高めることができる。
また本発明においては、条件が成立した場合に行う処理(例えばC言語のif文及びfor文など、条件が成立した場合に行う処理の記述に、処理の範囲を示す一組の文字又は記号(例えば、’(’及び’)’、又は”BEGIN”及び”END”等)が付されていない場合に、コーディングスタイルを満たしていないと判定する。これにより、条件分岐により行う処理又は繰り返し行う処理等の処理範囲を明示することができる。
また本発明においては、複数の演算式がコンマで区切られて記述されている場合、コーディングスタイルを満たしていないと判定する。例えばC言語においては、複数の演算式をコンマで区切って記述することができ(所謂、コンマ式)、記述量を減らすことができるが、プログラムが行う処理の理解が困難化する。そこで、コーディングスタイルとしてコンマ式の使用を禁止することによって、ソースプログラムの可読性を高めることができる。
また本発明においては、関数の記述が予め定められた行数を超えた場合に、コーディングスタイルを満たしていないと判定する。1つの関数の記述が極度に長い場合、この関数の可読性が低下する。そこで、コーディングスタイルとして関数を記述できる行数を制限することによって、ソースプログラムの可読性を高めることができる。
また本発明においては、関数宣言の前にコメントが記述されていない場合に、コーディングスタイルを満たしていないと判定する。関数に付されるコメントは、関数の処理内容を理解する上で貴重な情報であるため、コーディングスタイルとしてコメントの記述を必須とすることにより、関数のデバッグ及び再利用等に有効な情報をプログラマに確実に記載させることができる。コメントの記載内容についてもコーディングスタイルとして規定し、判定してもよい。
また本発明においては、関数の戻り値に係る記述が含まれていない場合に、コーディングスタイルを満たしていないと判定する。例えばC言語などにおいては、return文の有無を判定すればよい。関数の戻り値に関するコーディングスタイルを判定することによって、プログラマが戻り値の記載を忘れたか又は戻り値のない関数であるかを他のプログラマが迷うことなく判断できる。
本発明による場合は、ソースプログラムを構成する構成要素の入力完了時点にて、記述済みのソースプログラムが予め定められたソースプログラムのコーディングスタイルを満たしているかを判定し、コーディングスタイルを満たしていない場合に警告を行うと共に、入力された構成要素に続く補完候補を表示して補完を行う構成とすることにより、コーディングスタイルのチェックを動的に行ってプログラマへ警告を与えることができると共に、コーディングスタイルに応じたソースプログラムの入力を支援することができる。これにより、プログラマはコーディングスタイルに従ったソースプログラムの記述を容易且つ確実に行うことができ、コーディングスタイルの統一又は標準化を確実に行うことができ、ソースプログラムの可読性を高めることができる。よって、ソースプログラムの再利用又はデバッグ等を効率よく行うことができ、プログラムの開発期間の短縮などに貢献できる。
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。図1は、本発明に係るソースプログラム入力受付装置の構成を示すブロック図である。図において1は、汎用のPC(Personal Computer)であり、予めインストールされたコーディングスタイルチェックプログラム90を実行することによって本発明に係るソースプログラム入力受付装置として動作するものである。PC1には、画像を表示するためのディスプレイ2と、ユーザが入力操作を行うためのキーボード3及びマウス4とが接続されている。
PC1は、CPU(Central Processing Unit)11、画像出力部12、メモリ13、入力部14、ディスクドライブ15及びハードディスク16等を備えて構成されている。CPU11は、ハードディスク16に予めインストールされた種々のプログラムを読み出して実行することによって、PC1内の各ハードウェア資源の制御処理及び種々の演算処理等を行うものである。
画像出力部12は、画像信号の授受を行うケーブルを介してディスプレイ2に接続されており、CPU11のプログラム実行により生成された画像データをディスプレイ2の表示に適した画像信号に変換して出力することによって、ディスプレイ2に画像表示を行う。
メモリ13は、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)等のデータ書き換え可能な大容量の記憶素子で構成されている。CPU11は、ハードディスク16からメモリ13にプログラムを読み出して実行すると共に、制御処理及び演算処理等の過程で生成されたデータをメモリ13に記憶しながら処理を行うことができる。
入力部14は、キーボード3及びマウス4をそれぞれ接続するための接続端子を有している。キーボード3及びマウス4は、ユーザによる入力操作を受け付け、入力操作に応じた信号をPC1の入力部14へ入力する。入力部14は、キーボード3及びマウス4から与えられる入力信号に応じて、ユーザによる入力操作の発生及びその操作内容をCPU11へ通知する。これによりCPU11は、ユーザの入力操作に応じた処理を行うことができる。
ディスクドライブ15は、CDROM及びDVDROM等の光ディスク50からデータを読み出して、メモリ13又はハードディスク16へ記憶する。例えばディスクドライブ15は、コーディングスタイルチェックプログラム90などのプログラムが記録された光ディスク50からこれを読み出してハードディスク16へ記憶することによって、コーディングスタイルチェックプログラム90などのプログラムをPC1にインストールすることができる。
ハードディスク16は、大容量の磁気記憶装置であり、OS(Operating System)71、コンパイラ72及びコーディングスタイルチェックプログラム90等の種々のプログラムと、組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93等の種々のデータを記憶している。OS71はPC1のハードウェア資源の管理などを行うためのプログラムであり、コンパイラ72はソースプログラムをCPU11が実行可能なオブジェクトプログラムに変換するためのプログラムである。
コーディングスタイルチェックプログラム90は、プログラマが作成するソースプログラムの記述が予め定められたコーディングスタイルを満たした記述であるかをチェックするプログラムである。コーディングスタイルチェックプログラム90は、ソースプログラムを記述するためのテキストエディタなどと共に実行され、又は、テキストエディタなどの一機能として実現されるものであり、プログラマによるソースプログラムの入力が行われているときに動的にコーディングスタイルのチェックを行うことができる。
組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93は、コーディングスタイルチェックプログラム90によるコーディングスタイルのチェック項目の設定などが記載されたテキストファイルである。コーディングスタイルチェックプログラム90は、これらの設定ファイルを読み込み、設定ファイルにてチェックを行う設定がなされた項目についてコーディングスタイルのチェックを行う。
図2は、設定ファイルの一記述例を示す模式図である。図示の設定ファイルにおいては、例えば変数名の接頭字句に係るコーディングスタイルの設定が記述された”[PREFIX]”の項目と、ソースプログラムに付すコメントに係るコーディングスタイルの設定が記述された”[COMMENT]”の項目と、関数の記述に係るコーディングスタイルの設定が記述された”[FUNCTION]”の項目とが設けてある。
設定ファイルの”[PREFIX]”の項目には、変数の型と、この型の変数の変数名に付す接頭字句との対応が設定される。例えば、”VAR_UNSIGNED_INT_PREFIX, ui”の記述により、”unsigned int”型の変数には接頭字句として”ui”を付すというコーディングスタイルが設定されている。同様にして、”signed int”型の変数には接頭字句として”si”を付し、”unsigned long”型の変数には接頭字句として”ul”を付すという設定がなされている。また例えば、”VAR_GLOBAL_PREFIX, g_”の記述により、グローバル変数には接頭字句として”g_”を付すという設定がなされ、”VAR_ARRAY_PREFIX, a”の記述により、配列の変数には接頭字句として”a”を付すという設定がなされている(図2(1)参照)。
また、一の変数が上記の複数の条件に該当する場合(例えば”unsigned int”型のグローバル変数の配列など)、変数名には複数の接頭字句を付す必要があるが、このときの接頭字句の順序は”PREFIX_ORDER, SCOPE ARRAY TYPE”の記述により設定されている。この例では、変数のスコープ(グローバル変数であるか否か)、配列、変数型の順序で接頭字句が変数名に付される(図2(2)参照)。例えば、”unsigned int”型のグローバル変数の配列は、”g_aui”の接頭字句が付される。なお、これらの”[PREFIX]”の項目で設定された変数の接頭字句は、コーディングスタイルを満たすか否かの判定のみでなく、プログラマによる入力の補完処理を行う際にも用いられる。
設定ファイルの”[COMMENT]”の項目には、コメントに係るコーディングスタイルが設定される。例えば、”LINE_COMMENT_CHECK, TRUE”の記述により、”//”を使用したコメント(所謂、1行コメント)の記述が禁止され、このコメントの使用の有無をチェックする設定がなされている。また例えば、”FUNCTION_COMMENT_CHECK, TRUE”の記述により、関数定義の直前にヘッダとしてコメントを付すというコーディングスタイルが設定され、このコメントが記載されているか否かをチェックする設定がなされている。(図2(3)参照)。これらのチェックを行わない場合には、”TRUE”に代えて”FALSE”と記述すればよい。
設定ファイルの”[FUNCTION]”の項目には、関数の記述に係るコーディングスタイルのチェック内容が設定される。例えば、”MAX_FUNCTION_LINE, 100”の記述により、一つの関数の記述は100行以内とするコーディングスタイルが設定されている。また例えば、”RETURN_CHECK, TRUE”の記述により、関数の戻り値を必ず記載するコーディングスタイルが設定され、”VOID_CHECK, TRUE”の記述により、引数のない関数の宣言にて”void”の記述の省略を禁止するコーディングスタイルが設定されている(図2(4)参照)。
組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93の記述は図2に示すものと同様であってよく、3つの設定ファイルに重複するコーディングスタイルの設定がなされていてもよく、更には相反するコーディングスタイルの設定がなされていてもよい。コーディングスタイルチェックプログラム90は、組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93の3つの設定ファイルを読み込んでコーディングスタイルの設定を取得するが、3つの設定ファイルには予め優先度が付してあり、相反する設定がなされている場合には、優先度の高い設定ファイルに記述された設定を取得する。
例えば、組織設定ファイル91は企業又は会社等の組織全体で統一されたコーディングスタイルを設定するためのファイルであり、プロジェクト設定ファイル92は組織にて行われる一のプロジェクトに特化したコーディングスタイルを設定するためのファイルであり、個人設定ファイル93はプロジェクトに参加するプログラマが個人用のコーディングスタイルを設定するためのファイルである。この場合に、個人設定ファイル93を最も高い優先度とし、組織設定ファイル91を最も低い優先度とすることができ、コーディングスタイルチェックプログラム90は相反する設定がなされた場合には個人設定ファイル93の設定を優先し、次いでプロジェクト設定ファイル92の設定を優先することができる。
PC1において、プログラマはキーボード3又はマウス4を操作してテキストエディタなどを起動し、ソースプログラムの記述を行うことができる。プログラマによって記述されたソースプログラムは、コンパイラ72の実行によってオブジェクトプログラムに変換(コンパイル)され、PC1のCPU11にて実行することができる。本発明に係るコーディングスタイルチェックプログラム90は、テキストエディタと共に起動して、プログラマによるソースプログラムの記述、即ちテキストエディタに対する文字及び記号等の入力を動的に監視し、入力されたソースプログラムの記述が3つの設定ファイルにより設定されたコーディングスタイルを満たしているか否かをチェックする。また、コーディングスタイルチェックプログラム90は、プログラマによる入力を補完することができる場合には、コーディングスタイルに従った補完処理を行う。なお、3つの設定ファイルは、コーディングスタイルチェックプログラム90の起動時に読み込まれる。
図3は、コーディングスタイルのチェック処理の概要を示すフローチャートであり、PC1のCPU11がコーディングスタイルチェックプログラム90を実行することによって行われる処理である。テキストエディタなどの起動に伴ってコーディングスタイルチェックプログラム90を起動したCPU11は、まず、ハードディスク16に予め記憶された組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93の3つの設定ファイルを読み出して(ステップS1)、コーディングスタイルの設定を受け付ける。このときCPU11は、各設定ファイルの優先度を判定して(ステップS2)、相反する設定については優先度の高い設定を受け付ける。
次いで、CPU11は、キーボード3による一の文字(記号などを含む)の入力が完了したか否かを判定する(ステップS3)。文字入力がなされていない場合(S3:NO)、CPU11は、例えばテキストエディタが終了されるなどでコーディングスタイルチェックプログラム90を終了させる指示がテキストエディタ又はOS71等から与えられたか否かを調べる(ステップS4)。CPU11は、終了指示が与えられた場合(S4:YES)、コーディングスタイルチェックプログラム90による処理を終了し、終了指示が与えられていない場合(S4:NO)、ステップS3へ戻り、文字入力又は終了指示がなされるまで待機する。
プログラマによる一の文字入力が完了した場合(S3:YES)、CPU11は、1文字毎のコーディングスタイルチェックを行う(ステップS5)、即ち文字入力が完了した時点におけるソースプログラムが、設定されたコーディングスタイルを満たしているか否かを一の文字の入力毎に行う。詳細は後述するが、文字の入力毎に行うコーディングスタイルのチェックには、例えば変数の接頭字句、トリグラフシーケンス及び1行コメント等のチェックがある。
次いで、CPU11は、文字入力の完了により1行の入力が完了したか否かを判定し(ステップS6)、1行の入力が完了していない場合には(S6:NO)、ステップS3へ戻り、上述の処理を繰り返し行う。1行の入力が完了した場合(S6:YES)、CPU11は、1行毎のコーディングスタイルチェックを行う(ステップS7)、即ち1行の入力が完了した時点におけるソースプログラムが、設定されたコーディングスタイルを満たしているか否かを1行の入力毎に行う。詳細は後述するが、1行の入力毎に行うコーディングスタイルのチェックには、例えば変数の接頭字句、1行当たりのステートメント数及び関数の引数等のチェックがある。
その後、CPU11は、1行の入力完了により一の関数の入力が完了したか否かを判定し(ステップS8)、一の関数の入力が完了していない場合には(S8:NO)、ステップS3へ戻り、上述の処理を繰り返し行う。一の関数の入力が完了した場合(S8:YES)、CPU11は、1関数毎のコーディングスタイルチェックを行う(ステップS9)。詳細は後述するが、関数の入力毎に行うコーディングスタイルのチェックには、例えば関数の行数、コメントの有無及び戻り値の有無等のチェックがある。
コーディングスタイルチェックプログラムを実行するCPU11は、テキストエディタなどへのソースプログラムの入力が行われている間、上記のフローチャートのステップS3〜S9の処理を繰り返し行っており、文字、行又は関数の入力が完了する都度、コーディングスタイルのチェックを行っている。またCPU11は、文字、行又は関数の入力毎にコーディングスタイルのチェックを行うと共に、可能であればコーディングスタイルを満たす入力の補完処理を行う。これらにより、ソースプログラムのコーディングスタイルのチェック及び補完が常時行われるため、プログラマがコーディングスタイルに反したソースプログラムの記述を行うことを防止できる。
次に、文字、行又は関数の入力完了毎に行われるコーディングスタイルチェック処理の詳細について、複数の簡単な例を用いて説明する。図4は、変数名の接頭字句の補完に係る処理を説明するための模式図であり、また図5は、変数名の接頭字句の補完処理の手順を示すフローチャートである。なお、図4及び図5に示す変数名の接頭字句の補完処理は、図3のステップS5に示した1文字毎のコーディングスタイルチェック処理の1つとして行われる。
例えば、プログラマが変数宣言として”unsigned int”の記述を入力するとき、この記述の最後の文字’t’の入力が完了した場合に(図4(a)参照)、コーディングスタイルチェックプログラム90はこの変数型に対応する接頭字句がコーディングスタイルとして設定されているか否かを判定する。変数型に対応する接頭字句が設定されている場合、コーディングスタイルチェックプログラム90は、設定された接頭字句の組み合わせから、使用される可能性がある接頭字句を補完候補として一覧表示する(図4(b)参照)。プログラマはキーボード3又はマウス4を操作して一覧表示された補完候補からいずれか1つを選択することができ、コーディングスタイルチェックプログラム90は選択された補完候補の接頭字句をテキストエディタなどに挿入して補完を行う(図4(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、変数名の接頭字句の補間処理において、まず、入力された一の文字が、変数宣言の記述の(最後の)入力であるか否かを判定し(ステップS21)、変数宣言の記述の入力でない場合には(S21:NO)、処理を終了する。入力された文字が変数宣言の記述である場合(S21:YES)、CPU11は、入力された変数型に対応する接頭字句が設定ファイルにて設定されているか否かを調べることにより、接頭字句の補完候補が存在するか否かを更に判定する(ステップS22)。補完候補が存在しない場合(S22:NO)、CPU11は処理を終了する。
補完候補が存在する場合(S22:YES)、CPU11は、補完候補の接頭字句を一覧表示し(ステップS23)、キーボード3又はマウス4に対する入力操作によっていずれか1つの補完候補の選択を受け付けたか否かを調べる(ステップS24)。補完候補の選択を受け付けていない場合(S24:NO)、CPU11は、ステップS23へ戻り、補完候補の一覧表示を継続して行う。補完候補の選択を受け付けた場合(S24:YES)、CPU11は、選択された補完候補の接頭字句をソースプログラムに挿入することによって、変数の接頭字句を補完し(ステップS25)、処理を終了する。
図6は、トリグラフシーケンスのチェック処理を説明するための模式図であり、また図7は、トリグラフシーケンスのチェック処理の手順を示すフローチャートである。なお、図6及び図7に示すトリグラフシーケンスのチェック処理は、図3のステップS5に示した1文字毎のコーディングスタイルチェック処理の1つとして行われる。
トリグラフシーケンスとは、連続した2つの’?’記号に続けて文字又は記号を入力するものであり、C言語などにおいて’{’に代えて”??<”を入力することができる。コーディングスタイルチェックプログラム90は、連続した”??”に続く3文字目の入力が完了した場合に(図6(a)参照)、トリグラフシーケンスの入力がなされたと判定してエラーメッセージを表示すると共に、これを修正するための修正候補を一覧表示する(図6(b)参照)。プログラマはキーボード3又はマウス4を操作して一覧表示された修正候補からいずれか1つを選択することができ、コーディングスタイルチェックプログラム90は選択された修正候補に従ってテキストエディタに入力されたソースプログラムの修正を行う(図6(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、トリグラフシーケンスのチェック処理において、まず、入力された一の文字が、連続した”??”に続く3文字目の入力であるか否かを判定し(ステップS31)、”??”に続く3文字目でない場合には(S31:NO)、処理を終了する。入力された文字が”??”に続く3文字目の場合(S31:YES)、CPU11は、この入力を修正することができる修正候補が存在するか否かを更に判定する(ステップS32)。修正候補が存在しない場合(S32:NO)、CPU11は、エラーメッセージを表示して(ステップS36)、処理を終了する。
修正候補が存在する場合(S32:YES)、CPU11は、エラーメッセージと共に修正候補を一覧表示し(ステップS33)、キーボード3又はマウス4に対する入力操作によっていずれか1つの修正候補の選択を受け付けたか否かを調べる(ステップS34)。修正候補の選択を受け付けていない場合(S34:NO)、CPU11は、ステップS33へ戻り、エラーメッセージ及び修正候補の一覧表示を継続して行う。修正候補の選択を受け付けた場合(S34:YES)、CPU11は、選択された修正候補に従ってソースプログラムの修正を行い(ステップS35)、処理を終了する。
図8は、1行コメントのチェック処理を説明するための模式図であり、また図9は、1行コメントのチェック処理の手順を示すフローチャートである。なお、図8及び図9に示す1行コメントのチェック処理は、図3のステップS5に示した1文字毎のコーディングスタイルチェック処理の1つとして行われる。
1行コメントとは、C言語などにおいて、連続した2つの’/’記号に続けてコメントを入力するものであり、”//”からその行の最後までがコメントとして扱われる。コーディングスタイルチェックプログラム90は、連続した2つの’/’の2文字目の入力が完了した場合に(図8(a)参照)、1行コメントの入力がなされたと判定してエラーメッセージを表示し(図8(b)参照)、”/*”及び”*/”を用いたコメントへの修正を行う(図8(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、1行コメントのチェック処理において、まず、入力された一の文字が、連続する’/’の2文字目の入力であるか否かを判定し(ステップS41)、’/’の2文字目の入力でない場合には(S41:NO)、処理を終了する。入力された文字が連続する’/’の2文字目の場合(S41:YES)、CPU11は、エラーメッセージを表示する(ステップS42)と共に、ソースプログラムに記述された”//”のコメントを”/*”及び”*/”を用いたコメントに修正して(ステップS43)、処理を終了する。
図10は、変数名の接頭字句のチェック処理を説明するための模式図であり、また図11は、変数名の接頭字句のチェック処理の手順を示すフローチャートである。なお、図10及び図11に示す変数名の接頭字句のチェック処理は、図3のステップS7に示した1行毎のコーディングスタイルチェック処理の1つとして行われる。
コーディングスタイルチェックプログラム90は上述の図4及び図5の接頭字句の補完処理により変数名の補完を行うことができるが、プログラマが補完候補の選択を誤る又は補完後に変数名を変更する等の要因により、変数型に対応した変数名を付すというコーディングスタイルが満たされない場合がある。そこで、コーディングスタイルチェックプログラム90は、ソースプログラムの変数宣言について1行の入力が完了した場合に(図10(a)参照)、変数型と変数名の接頭字句とが予め定められた設定に違反していないかを判定する。変数型と変数名の接頭字句とが適切に対応していない場合、コーディングスタイルチェックプログラム90は、エラーメッセージと共に変数名の修正候補を一覧表示する(図10(b)参照)。プログラマはキーボード3又はマウス4を操作して一覧表示された修正候補からいずれか1つを選択することができ、コーディングスタイルチェックプログラム90は選択された修正候補に従って変数名を修正する(図10(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、変数名の接頭字句のチェック処理において、まず、入力された1行に変数宣言が含まれているか否かを判定し(ステップS51)、変数宣言が含まれていなければ(S51:NO)、処理を終了する。変数宣言が含まれている場合(S51:YES)、CPU11は、変数型に対して変数名の接頭字句が適切であるか否かを判定する(ステップS52)。接頭字句が適切であれば(S52:YES)、CPU11は処理を終了する。
変数名の接頭字句が適切でない場合(S52:NO)、CPU11は、この変数名を修正するための修正候補が存在するか否かを更に判定する(ステップS53)。修正候補が存在しない場合(S53:NO)、CPU11は、エラーメッセージを表示して(ステップS57)、処理を終了する。修正候補が存在する場合(S53:YES)、CPU11は、エラーメッセージと共に修正候補を一覧表示し(ステップS54)、キーボード3又はマウス4に対する入力操作によっていずれか1つの修正候補の選択を受け付けたか否かを調べる(ステップS55)。修正候補の選択を受け付けていない場合(S55:NO)、CPU11は、ステップS54へ戻り、エラーメッセージ及び修正候補の一覧表示を継続して行う。修正候補の選択を受け付けた場合(S55:YES)、CPU11は、選択された修正候補に従って変数名の修正を行い(ステップS56)、処理を終了する。
図12は、1行のステートメント数のチェック処理を説明するための模式図であり、また図13は、1行のステートメント数のチェック処理の手順を示すフローチャートである。なお、図12及び図13に示す変数名の接頭字句のチェック処理は、図3のステップS7に示した1行毎のコーディングスタイルチェック処理の1つとして行われる。
ステートメントとは、一つの処理に関する記述であり、C言語などにおいては’;’記号により区切られる構成要素である。コーディングスタイルチェックプログラム90は、ソースプログラムの1行の入力が完了した場合に(図12(a)参照)、この行にステートメントが複数含まれているか否かを判定する。複数のステートメントが1行に含まれている場合、コーディングスタイルチェックプログラム90は、エラーメッセージを表示すると共に(図12(b)参照)、複数のステートメントを複数の行に分割する(図12(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、ステートメント数のチェック処理において、まず、入力された1行にステートメントが複数含まれているか否かを判定し(ステップS61)、複数のステートメントが含まれていない場合(S61:NO)、即ち1行に1つのステートメントが記述されている場合には、処理を終了する。1行にステートメントが複数含まれている場合(S61:YES)、CPU11は、エラーメッセージを表示する(ステップS62)と共に、1行に含まれる複数のステートメントを、複数の行に分割する修正を行って(ステップS63)、処理を終了する。
図14は、引数のない関数のチェック処理を説明するための模式図であり、また図15は、引数のない関数のチェック処理の手順を示すフローチャートである。なお、図14及び図15に示す引数のない関数のチェック処理は、図3のステップS7に示した1行毎のコーディングスタイルチェック処理の一つとして行われる。
コーディングスタイルチェックプログラム90は、ソースプログラムの1行の入力が完了した場合に(図14(a)参照)、この行に関数宣言が含まれているか否かを判定する。関数宣言が含まれているときに、コーディングスタイルチェックプログラム90は、この関数の引数を調べ、引数がなく、且つ、”void”の記述がない場合にエラーメッセージと修正候補とを一覧表示する(図14(b)参照)。プログラマはキーボード3又はマウス4を操作して一覧表示された修正候補からいずれか1つを選択することができ、コーディングスタイルチェックプログラム90は選択された修正候補に従って関数宣言の記述を修正する(図14(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、引数のない関数のチェック処理において、まず、入力された1行に関数宣言が含まれているか否かを判定し(ステップS71)、関数宣言が含まれていなければ(S71:NO)、処理を終了する。関数宣言が含まれている場合(S71:YES)、CPU11は、この関数の引数がなく、且つ、”void”の記述がないかを判定する(ステップS72)。この関数に引数があるか、又は、引数がなく”void”の記述がある場合(S72:NO)、CPU11は処理を終了する。
関数宣言に係る関数に引数がなく、且つ、”void”の記述がない場合(S72:YES)、CPU11は、この関数宣言を修正するための修正候補が存在するか否かを更に判定する(ステップS73)。修正候補が存在しない場合(S73:NO)、CPU11は、エラーメッセージを表示して(ステップS77)、処理を終了する。修正候補が存在する場合(S73:YES)、CPU11は、エラーメッセージと共に修正候補を一覧表示し(ステップS74)、キーボード3又はマウス4に対する入力操作によっていずれか1つの修正候補の選択を受け付けたか否かを調べる(ステップS75)。修正候補の選択を受け付けていない場合(S75:NO)、CPU11は、ステップS74へ戻り、エラーメッセージ及び修正候補の一覧表示を継続して行う。修正候補の選択を受け付けた場合(S75:YES)、CPU11は、選択された修正候補に従って関数宣言の修正を行い(ステップS76)、処理を終了する。
図16は、関数の行数のチェック処理を説明するための模式図であり、また図17は、関数の行数のチェック処理の手順を示すフローチャートである。なお、図16及び図17に示す関数の行数のチェック処理は、図3のステップS9に示した1関数毎のコーディングスタイルチェック処理の一つとして行われる。
コーディングスタイルチェックプログラム90は、ソースプログラムの1つの関数の入力が完了した場合に(図16(a)参照)、この関数が記述された行数をカウントする。カウントにより得られた行数が予め定められた制限数を超えている場合、コーディングスタイルチェックプログラム90は、エラーメッセージの表示を行う(図16(b)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、関数の行数のチェック処理において、まず、入力された1つの関数の行数をカウントし(ステップS81)、カウント結果の行数が予め定められた制限数を超えたか否かを判定し(ステップS82)、関数の行数が制限数を超えない場合には(S82:NO)、処理を終了する。関数の行数が制限数を超える場合(S82:YES)、CPU11は、エラーメッセージを表示して(ステップS83)、処理を終了する。
図18は、関数のヘッダコメントのチェック処理を説明するための模式図であり、また図19は、関数のヘッダコメントのチェック処理の手順を示すフローチャートである。なお、図18及び図19に示す関数のヘッダコメントのチェック処理は、図3のステップS9に示した1関数毎のコーディングスタイルチェック処理の一つとして行われる。
ヘッダコメントとは、関数の機能及び入出力データ等の情報を記述するコメントであり、関数記述の直前に記載される。コーディングスタイルチェックプログラム90は、ソースプログラムの1つの関数の入力が完了した場合に(図18(a)参照)、この関数記述の直前にヘッダコメントが記載されているか否かを判定する。ヘッダコメントが記載されていない場合、コーディングスタイルチェックプログラム90は、エラーメッセージを表示すると共に(図18(b)参照)、ヘッダコメントのひな型を関数記述の直前に追加する修正を行う(図18(c)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、関数のヘッダコメントのチェック処理において、まず、入力された1つの関数の記述の直前にヘッダコメントが記載されているか否かを判定し(ステップS91)、ヘッダコメントが記載されている場合には(S91:YES)、処理を終了する。ヘッダコメントが記載されていない場合には(S91:NO)、CPU11は、エラーメッセージを表示する(ステップS92)と共に、関数記述の直前にヘッダコメントのひな型を追加する修正を行って(ステップS93)、処理を終了する。
図20は、関数のreturn文のチェック処理を説明するための模式図であり、また図21は、関数のreturn文のチェック処理の手順を示すフローチャートである。なお、図20及び図21に示す関数のreturn文のチェック処理は、図3のステップS9に示した1関数毎のコーディングスタイルチェック処理の一つとして行われる。
C言語などにおいてreturn文は、関数の処理を終了して呼び出し元の処理へ戻すと共に、戻り値を指定するための文である。コーディングスタイルチェックプログラム90は、ソースプログラムの1つの関数の入力が完了した場合に(図20(a)参照)、この関数にreturn文が含まれているか否かを判定する。return文が含まれていない場合、コーディングスタイルチェックプログラム90は、エラーメッセージを表示する(図20(b)参照)。
コーディングスタイルチェックプログラム90を実行するCPU11は、関数のreturn文のチェック処理において、まず、入力された1つの関数にreturn文が含まれているか否かを判定し(ステップS101)、return文が含まれている場合には(S101:YES)、処理を終了する。return文が含まれていない場合には(S101:NO)、CPU11は、エラーメッセージを表示して(ステップS102)、処理を終了する。
以上の構成のPC1及びコーディングスタイルチェックプログラム90においては、ソースプログラムを構成する文字、行又は関数等の構成要素の入力完了時点にて、記述済みのソースプログラムが予め設定ファイルに設定されたコーディングスタイルを満たしているかを判定し、コーディングスタイルを満たしていない場合にエラーメッセージを表示すると共に、入力された構成要素の補完を行う構成とすることにより、プログラマがソースプログラムを入力している際に動的にコーディングスタイルをチェックして警告を与えることができ、プログラマによるソースプログラムの入力を支援することができる。これにより、プログラマはコーディングスタイルに従ったソースプログラムの記述を容易且つ確実に行うことができ、コーディングスタイルの統一又は標準化を確実に行うことができ、ソースプログラムの可読性を高めることができる。
また、ソースプログラムの記述がコーディングスタイルを満たしていない場合に、エラーメッセージを表示するのみでなく、修正候補を一覧表示してプログラマに選択させ、選択に応じて修正を行うことにより、コーディングスタイルを満たす修正方法をプログラマに示すことができ、誤りの修正を確実に行うことができる。
また、組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93等の複数の設定ファイルにコーディングスタイルの設定を記述することができ、相反する設定がなされた場合には優先度の高い設定ファイルの設定に基づいてチェック及び補完等を行うことにより、組織毎、プロジェクト毎及び個人毎等の異なる単位でコーディングスタイルを決定して管理することができる。
なお、本実施の形態においては、汎用のPC1にコーディングスタイルチェックプログラム90をインストールして動作させることにより、PC1を本発明のソースプログラム入力受付装置とする構成としたが、これに限るものではなく、専用のハードウェアとしてソースプログラム入力受付装置を構成してもよい。また、コーディングスタイルチェックプログラム90は、ソースプログラムを記述するためのテキストエディタと共に動作するか又はこのテキストエディタの一機能として動作する構成としたが、これに限るものではなく、例えばプログラムの統合開発環境などの一機能として動作する構成であってもよい。
また、コーディングスタイルチェックプログラム90は、組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93の3つの設定ファイルに設定されたコーディングスタイルを取得する構成としたが、これに限るものではなく、2つ以下の設定ファイルを読み込んでもよく、4つ以上の設定ファイルを読み込んでもよい。また、組織設定ファイル91、プロジェクト設定ファイル92及び個人設定ファイル93の優先順序も一例であって、これに限るものではない。
また、図2に示した設定ファイルの記述は一例であって、これに限るものではない。また、図4及び図6等に示したソースプログラムの記述は一例であって、これに限るものではない。また、これらの図に示したエラーメッセージ、補完候補及び修正候補等も一例であって、これに限るものではない。また、これらの図に示したソースプログラムはC言語、C++言語又はJAVA(登録商標)言語等の記述であるが、これら以外のプログラミング言語で記述されるソースプログラムについても同様に本発明を適用することができる。
また、ソースプログラムの1文字、1行及び1関数の入力毎にコーディングスタイルのチェックを行う構成としたが、これに限るものではなく、その他にカッコを閉じる記号(例えば’]’、’)’又は’}’等の記号)、又はステートメントの終端記号(例えば’;’などの記号)の入力毎にコーディングスタイルのチェックを行う構成としてもよい。また、図4〜図21にコーディングスタイルのチェック、補完及び修正等の例を示したが、コーディングスタイルチェックプログラム90が扱うコーディングスタイルはこれに限るものではなく、同様にしてその他様々なコーディングスタイルのチェックを行うことができる。
(変形例)
以下に、その他のコーディングスタイルのチェック処理について例示する。ただし、コーディングスタイルチェックプログラム90が扱うコーディングスタイルはこれに限るものではない。
図22は、演算の優先順位のチェック処理を説明するための模式図である。C言語などのプログラミング言語においては演算子の優先順位が予め定められているが(例えば、加算’+’より乗算’*’を優先するなど)、論理演算など優先順位がわかりにくいものがあり、優先順位の高い演算をカッコ’(’及び’)’で括ることによって、優先順位を明確にすることができる。そこで、コーディングスタイルチェックプログラム90は、複数の演算子を含む演算式には優先順位を示すカッコを付すコーディングスタイルを設定可能とし、優先順位を示すカッコの有無をチェックする。
演算の優先順位のチェックは、演算式の入力毎に行うか、又は1行毎に行ってもよい。コーディングスタイルチェックプログラム90は、演算式の入力が完了した場合に(図22(a)参照)、入力された演算式の演算の優先順位が明確であるか否かを判定する。演算式に複数(N個)の演算子が含まれており、且つ、(N−1)個の演算子に係る演算がカッコでくくられていない場合に、優先順位が明確でないと判定することができる。優先順位が明確でないと判定した場合、コーディングスタイルチェックプログラム90は、エラーメッセージを表示すると共に、入力された演算子にカッコを付した修正候補を一覧表示する(図22(b)参照)。プログラマはキーボード3又はマウス4を操作して一覧表示された修正候補からいずれか1つを選択することができ、コーディングスタイルチェックプログラム90は選択された修正候補に従って演算式の修正を行う(図22(c)参照)。
図23は、if文のカッコのチェック処理を説明するための模式図である。C言語などのプログラミング言語においては、条件分岐のためのif文を記述することができる。例えば、if文では”if(条件式)”の記述の後に、この条件が成立した場合に行う処理の記述を行うが、条件成立時に行う処理が複数の場合には複数のステートメントを”{”及び”}”のカッコで括る必要がある。逆に、条件成立時に行う処理が1つのステートメントで記述できる処理であればカッコで括る必要はない。しかし、if文の後のステートメントがカッコで括られていない場合には、条件成立時に行う処理の範囲が明確でないため、ソースプログラムの可読性が低下する。そこで、コーディングスタイルチェックプログラム90は、if文に続くステートメントがカッコで括られているか否かを判定する。
if文のカッコのチェックは、例えばステートメントの終端を示す’;’記号の入力毎に行うことができる。コーディングスタイルチェックプログラム90は、if文に続くステートメントの終端記号が入力された場合(図23(a)参照)、このステートメントがカッコで括られているか否かを判定する。カッコで括られていない場合、コーディングスタイルチェックプログラム90は、エラーメッセージを出力し(図23(b)参照)、更にif文に続くステートメントをカッコで括る修正を行う(図23(c)参照)。
図24は、コンマ式のチェック処理を説明するための模式図である。C言語などのプログラミング言語においては、複数の演算式をコンマで区切るコンマ式を記載することができるが、コンマ式の使用はソースプログラムの可読性を低下させる。そこで、コーディングスタイルチェックプログラム90は、コンマ式の使用をコーディングスタイルとして禁止し、コンマ式の使用を判定する。
コンマ式のチェックは、例えばステートメントの終端を示す’;’記号の入力毎に行うことができる。コーディングスタイルチェックプログラム90は、ステートメントの終端記号’;’が入力された場合(図24(a)参照)、このステートメントにコンマ式が含まれているか否かを判定する。コンマ式が含まれている場合、コーディングスタイルチェックプログラム90は、エラーメッセージを表示すると共に、コンマ式を使用しない記載に修正するための修正候補を一覧表示する(図24(b)参照)。プログラマはキーボード3又はマウス4を操作して一覧表示された修正候補からいずれか1つを選択することができ、コーディングスタイルチェックプログラム90は選択された修正候補に従ってコンマ式を用いない記述に修正する(図24(c)参照)。
本発明に係るソースプログラム入力受付装置の構成を示すブロック図である。 設定ファイルの一記述例を示す模式図である。 コーディングスタイルのチェック処理の概要を示すフローチャートである。 変数名の接頭字句の補完に係る処理を説明するための模式図である。 変数名の接頭字句の補完処理の手順を示すフローチャートである。 トリグラフシーケンスのチェック処理を説明するための模式図である。 トリグラフシーケンスのチェック処理の手順を示すフローチャートである。 1行コメントのチェック処理を説明するための模式図である。 1行コメントのチェック処理の手順を示すフローチャートである。 変数名の接頭字句のチェック処理を説明するための模式図である。 変数名の接頭字句のチェック処理の手順を示すフローチャートである。 1行のステートメント数のチェック処理を説明するための模式図である。 1行のステートメント数のチェック処理の手順を示すフローチャートである。 引数のない関数のチェック処理を説明するための模式図である。 引数のない関数のチェック処理の手順を示すフローチャートである。 関数の行数のチェック処理を説明するための模式図である。 関数の行数のチェック処理の手順を示すフローチャートである。 関数のヘッダコメントのチェック処理を説明するための模式図である。 関数のヘッダコメントのチェック処理の手順を示すフローチャートである。 関数のreturn文のチェック処理を説明するための模式図である。 関数のreturn文のチェック処理の手順を示すフローチャートである。 演算の優先順位のチェック処理を説明するための模式図である。 if文のカッコのチェック処理を説明するための模式図である。 コンマ式のチェック処理を説明するための模式図である。
符号の説明
1 PC(コンピュータ、ソースプログラム入力受付装置)
2 ディスプレイ(警告手段、補完候補表示手段)
3 キーボード(補完候補選択手段)
4 マウス(補完候補選択手段)
11 CPU(入力完了判定手段、記述様式判定手段、警告手段、補完可否判定手段、補完候補表示手段、補完候補選択手段、補完手段)
12 画像出力部
13 メモリ
14 入力部
15 ディスクドライブ
16 ハードディスク
50 光ディスク
71 OS
72 コンパイラ
90 コーディングスタイルチェックプログラム(コンピュータプログラム)
91 組織設定ファイル
92 プロジェクト設定ファイル
93 個人設定ファイル

Claims (19)

  1. コンピュータに、ソースプログラムの入力を受け付けさせるコンピュータプログラムにおいて、
    コンピュータに、
    前記ソースプログラムを構成する一の構成要素の入力完了を判定させる入力完了判定ステップと、
    一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定させる記述様式判定ステップと、
    前記記述様式を満たしていないと判定した場合に、警告を行わせる警告ステップと、
    前記一の構成要素に続く構成要素を補完することができるか否かを判定させる補完可否判定ステップと、
    補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示させる補完候補表示ステップと、
    前記補完候補の選択を受け付けさせる補完候補選択ステップと、
    受け付けた補完候補により前記一の構成要素を補完させる補完ステップと
    を有することを特徴とするコンピュータプログラム。
  2. コンピュータに、
    前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示させる修正候補表示ステップと、
    前記修正候補の選択を受け付けさせる修正候補選択ステップと、
    受け付けた修正候補により前記一の構成要素を修正させる修正ステップと
    を更に有することを特徴とする請求項1に記載のコンピュータプログラム。
  3. コンピュータに、
    前記記述様式に係る複数の設定を受け付けさせるステップと、
    受け付けた複数の設定の優先度を判定させるステップと
    を更に有し、
    前記記述様式判定ステップは、優先度が高いと判定された設定に係る記述様式に応じて判定を行わせること
    を特徴とする請求項1又は請求項2に記載のコンピュータプログラム。
  4. 前記一の構成要素は、文字であり、
    コンピュータに、前記文字が変数の型を示す文字列の最後の文字であるか否かを判定させるステップを更に有し、
    前記補完候補表示ステップは、前記文字が変数の型を示す文字列の最後の文字である場合に、前記変数の型に続く変数名の接頭字句を補完候補として表示させること
    を特徴とする請求項1乃至請求項3のいずれか1つに記載のコンピュータプログラム。
  5. 前記一の構成要素は、文字又は記号であり、
    コンピュータに、前記文字又は記号が連続した2つの’?’記号に続く文字又は記号であるか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、前記文字又は記号が連続した2つの’?’記号に続く文字又は記号である場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項4のいずれか1つに記載のコンピュータプログラム。
  6. 前記一の構成要素は、記号であり、
    コンピュータに、前記記号が連続する2つ目の’/’記号であるか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、前記一の記号が連続する2つ目の’/’記号である場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項5のいずれか1つに記載のコンピュータプログラム。
  7. 前記一の構成要素は、行であり、
    コンピュータに、
    前記一の行に変数宣言に係る記述が含まれているか否かを判定させるステップと、
    前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句であるか否かを判定させるステップと
    を更に有し、
    前記記述様式判定ステップは、前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句でない場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項6のいずれか1つに記載のコンピュータプログラム。
  8. 前記一の構成要素は、行であり、
    コンピュータに、処理に係る記述が前記行に複数記述されているか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、処理に係る記述が前記行に複数記述されている場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項7のいずれか1つに記載のコンピュータプログラム。
  9. 前記一の構成要素は、行であり、
    コンピュータに、
    関数宣言に係る記述が前記行に含まれているか否かを判定させるステップと、
    前記関数宣言に係る関数が引数を有さない関数であるか否かを判定させるステップと、
    前記関数宣言に引数を有さない旨を示す記述が含まれているか否かを判定させるステップと
    を更に有し、
    前記記述様式判定ステップは、前記関数宣言に係る関数が引数を有さない関数であり、且つ、前記関数宣言に引数を有さない旨を示す記述が含まれていない場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項8のいずれか1つに記載のコンピュータプログラム。
  10. 前記一の構成要素は、演算式であり、
    コンピュータに、
    前記演算式に複数の演算子が含まれているか否かを判定させるステップと、
    各演算子の演算に係る優先順位が明示されているか否かを判定させるステップと
    を更に備え、
    前記記述様式判定ステップは、前記演算式に複数の演算子が含まれており、且つ、各演算子の演算に係る優先順位が明示されていない場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項9のいずれか1つに記載のコンピュータプログラム。
  11. 前記一の構成要素は、条件の成立に応じて行われる処理に係る記述であり、
    コンピュータに、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されているか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されていない場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項10のいずれか1つに記載のコンピュータプログラム。
  12. 前記一の構成要素は、演算式であり、
    コンピュータに、複数の演算式がコンマで区切られて記述されているか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、複数の演算式がコンマで区切られて記述されている場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項11のいずれか1つに記載のコンピュータプログラム。
  13. 前記一の構成要素は、関数であり、
    コンピュータに、前記関数が予め定められた行数を超えて記述されているか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、前記関数が予め定められた行数を超えて記述されている場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項12のいずれか1つに記載のコンピュータプログラム。
  14. 前記一の構成要素は、関数であり、
    コンピュータに、前記関数の宣言の前にコメントが記述されているか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、前記関数の宣言の前にコメントが記述されていない場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項13のいずれか1つに記載のコンピュータプログラム。
  15. 前記一の構成要素は、関数であり、
    コンピュータに、前記関数に戻り値に係る記述が含まれているか否かを判定させるステップを更に有し、
    前記記述様式判定ステップは、前記関数に戻り値に係る記述が含まれていない場合に、前記記述様式を満たしていないと判定させること
    を特徴とする請求項1乃至請求項14のいずれか1つに記載のコンピュータプログラム。
  16. ソースプログラムの入力を受け付けるソースプログラム入力受付装置において、
    前記ソースプログラムを構成する一の構成要素の入力完了を判定する入力完了判定手段と、
    一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定する記述様式判定手段と、
    前記記述様式を満たしていないと判定した場合に、警告を行う警告手段と、
    前記一の構成要素に続く構成要素を補完することができるか否かを判定する補完可否判定手段と、
    補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示する補完候補表示手段と、
    前記補完候補の選択を受け付ける補完候補選択手段と、
    受け付けた補完候補により前記一の構成要素を補完する補完手段と
    を備えることを特徴とするソースプログラム入力受付装置。
  17. 前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示する修正候補表示手段と、
    前記修正候補の選択を受け付ける修正候補選択手段と、
    受け付けた修正候補により前記一の構成要素を修正する修正手段と
    を更に備えることを特徴とする請求項16に記載のソースプログラム入力受付装置。
  18. ソースプログラムの入力を受け付けるソースプログラム入力受付方法において、
    前記ソースプログラムを構成する一の構成要素の入力完了を判定し、
    一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定し、
    前記記述様式を満たしていないと判定した場合に、警告を行い、
    前記一の構成要素に続く構成要素を補完することができるか否かを判定し、
    補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示し、
    前記補完候補の選択を受け付け、
    受け付けた補完候補により前記一の構成要素を補完すること
    を特徴とするソースプログラム入力受付方法。
  19. 前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示し、
    前記修正候補の選択を受け付け、
    受け付けた修正候補により前記一の構成要素を修正すること
    を特徴とする請求項18に記載のソースプログラム入力受付方法。
JP2008267803A 2008-10-16 2008-10-16 コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法 Pending JP2010097426A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008267803A JP2010097426A (ja) 2008-10-16 2008-10-16 コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008267803A JP2010097426A (ja) 2008-10-16 2008-10-16 コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法

Publications (1)

Publication Number Publication Date
JP2010097426A true JP2010097426A (ja) 2010-04-30

Family

ID=42259059

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008267803A Pending JP2010097426A (ja) 2008-10-16 2008-10-16 コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法

Country Status (1)

Country Link
JP (1) JP2010097426A (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013185098A1 (en) * 2012-06-08 2013-12-12 Massively Parallel Technologies, Inc. System and method for automatic detection of decomposition errors
US8762946B2 (en) 2012-03-20 2014-06-24 Massively Parallel Technologies, Inc. Method for automatic extraction of designs from standard source code
US8959494B2 (en) 2012-03-20 2015-02-17 Massively Parallel Technologies Inc. Parallelism from functional decomposition
US9229688B2 (en) 2013-03-14 2016-01-05 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
US9424168B2 (en) 2012-03-20 2016-08-23 Massively Parallel Technologies, Inc. System and method for automatic generation of software test
JP2017527034A (ja) * 2014-08-27 2017-09-14 ファスー ドット コム カンパニー リミテッドFasoo. Com Co., Ltd ソースコード解析装置、そのためのコンピュータプログラム、及びその記録媒体
US9977655B2 (en) 2012-03-20 2018-05-22 Massively Parallel Technologies, Inc. System and method for automatic extraction of software design from requirements
JP2018097785A (ja) * 2016-12-16 2018-06-21 株式会社東芝 テスト支援装置、テスト支援プログラム
JP2018133081A (ja) * 2017-02-17 2018-08-23 富士通株式会社 ソフトウェアプログラム修復のためのメソッド呼び出し合成
WO2019066143A1 (ko) * 2017-09-29 2019-04-04 한화테크윈주식회사 로봇 제어 장치의 코딩 방법 및 프로그램과 로봇 제어 장치
CN112118474A (zh) * 2019-06-19 2020-12-22 上海哔哩哔哩科技有限公司 视频弹幕的显示方法、系统、计算机设备及可读存储介质
US11636022B2 (en) 2019-04-16 2023-04-25 Samsung Electronics Co., Ltd. Server and control method thereof

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424168B2 (en) 2012-03-20 2016-08-23 Massively Parallel Technologies, Inc. System and method for automatic generation of software test
US8762946B2 (en) 2012-03-20 2014-06-24 Massively Parallel Technologies, Inc. Method for automatic extraction of designs from standard source code
US8959494B2 (en) 2012-03-20 2015-02-17 Massively Parallel Technologies Inc. Parallelism from functional decomposition
US9977655B2 (en) 2012-03-20 2018-05-22 Massively Parallel Technologies, Inc. System and method for automatic extraction of software design from requirements
US9146709B2 (en) 2012-06-08 2015-09-29 Massively Parallel Technologies, Inc. System and method for automatic detection of decomposition errors
WO2013185098A1 (en) * 2012-06-08 2013-12-12 Massively Parallel Technologies, Inc. System and method for automatic detection of decomposition errors
US9229688B2 (en) 2013-03-14 2016-01-05 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
US9395954B2 (en) 2013-03-14 2016-07-19 Massively Parallel Technologies, Inc. Project planning and debugging from functional decomposition
JP2017527034A (ja) * 2014-08-27 2017-09-14 ファスー ドット コム カンパニー リミテッドFasoo. Com Co., Ltd ソースコード解析装置、そのためのコンピュータプログラム、及びその記録媒体
US10496516B2 (en) 2014-08-27 2019-12-03 Sparrow Co., Ltd. Source code analysis device, computer program for same, and recording medium thereof
JP2018097785A (ja) * 2016-12-16 2018-06-21 株式会社東芝 テスト支援装置、テスト支援プログラム
JP2018133081A (ja) * 2017-02-17 2018-08-23 富士通株式会社 ソフトウェアプログラム修復のためのメソッド呼び出し合成
JP7056139B2 (ja) 2017-02-17 2022-04-19 富士通株式会社 ソフトウェアプログラム修復のためのメソッド呼び出し合成
WO2019066143A1 (ko) * 2017-09-29 2019-04-04 한화테크윈주식회사 로봇 제어 장치의 코딩 방법 및 프로그램과 로봇 제어 장치
US11548149B2 (en) 2017-09-29 2023-01-10 Hanwha Co., Ltd. Method for coding robot control device, program, and robot control device
US11636022B2 (en) 2019-04-16 2023-04-25 Samsung Electronics Co., Ltd. Server and control method thereof
CN112118474A (zh) * 2019-06-19 2020-12-22 上海哔哩哔哩科技有限公司 视频弹幕的显示方法、系统、计算机设备及可读存储介质
CN112118474B (zh) * 2019-06-19 2022-09-09 上海哔哩哔哩科技有限公司 视频弹幕的显示方法、系统、计算机设备及可读存储介质

Similar Documents

Publication Publication Date Title
JP2010097426A (ja) コンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法
US9619211B2 (en) Code suggestion in a software development tool
TWI493464B (zh) 用於晚期繫結可程式化輔助的系統與方法
US8819629B2 (en) Automatically generating documentation on application programming interfaces
US8370810B2 (en) Debugging device and debugging method
US20230004368A1 (en) Multi-chip compatible compiling method and device
CN107832059B (zh) 一种基于Makefile的代码静态分析方法和装置
Freeman Essential TypeScript 5
Zakas Maintainable JavaScript: Writing Readable Code
JP4806158B2 (ja) マークアップ内でサブクラスを宣言的に定義し、使用するためのシステムおよび方法
JP2009169864A (ja) コンパイル方法およびコンパイルプログラム
CN108304164B (zh) 一种业务逻辑的开发方法及开发系统
US20110202906A1 (en) Compiling method and compiling program
JP2008276735A (ja) プログラムコード変換装置及びプログラムコード変換方法
CN109491919B (zh) 一种软件测试方法及测试平台
US10521206B2 (en) Supporting compiler variable instrumentation for uninitialized memory references
JP5758311B2 (ja) テストコード生成装置、テストコード生成方法、テストコード生成プログラム
JP2018018197A (ja) ソースコード評価プログラム
JP2007213487A (ja) アスペクト生成方法及び装置
JP2007226358A (ja) アプリケーション生成装置、アプリケーション生成方法、およびアプリケーション生成プログラム
CN112541188B (zh) 阻止应用程序代码被静态分析的方法及装置
JP7163879B2 (ja) データフロー生成装置、その方法、およびそのプログラム
JP2003050722A (ja) プログラム解析システムとプログラム解析方法
JP2012018641A (ja) ソフトウェア開発システム
JP2009015734A (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム