JP6945434B2 - ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム - Google Patents
ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム Download PDFInfo
- Publication number
- JP6945434B2 JP6945434B2 JP2017241318A JP2017241318A JP6945434B2 JP 6945434 B2 JP6945434 B2 JP 6945434B2 JP 2017241318 A JP2017241318 A JP 2017241318A JP 2017241318 A JP2017241318 A JP 2017241318A JP 6945434 B2 JP6945434 B2 JP 6945434B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- function
- unit
- software development
- argument
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
静的解析ツールは、プログラムを実行せずにソースコードを解析し、コールツリーあるいは品質メトリクスを提供する。コールツリーは、関数同士の参照関係を表す図である。品質メトリクスは、プログラム品質を数値化したものである。また、静的解析ツールは、ソースコードを対象として解析するので、プログラムの実行環境および開発環境に左右されずに解析することができる。
特許文献1には、ソフトウェア開発においてバグを起こすことが比較的多い大域変数のアドレス参照を解析し、参照関係にある変数同士を図表で表示する技術が開示されている。
複数の関数を含むソースコードを分析し、前記複数の関数のうち引数のアドレス渡しを行っている特定関数を抽出するとともに、前記特定関数が連続して引数のアドレス渡しを行っている連続回数を抽出する構造分析部と、
前記連続回数が、前記特定関数により引数のアドレス渡しが行われていることを警告するための警告条件を満たすか否かを監視し、前記連続回数が前記警告条件を満たす場合に、前記特定関数により引数のアドレス渡しが行われていることを警告する警告情報を出力する監視部とを備えた。
***構成の説明***
図1を用いて、本実施の形態に係るソフトウェア開発装置100の構成を説明する。
本実施の形態に係るソフトウェア開発装置100は、ソフトウェア開発環境の機能を有する。
記憶部170には、ソースコード20と、構文解析結果21と、関数リスト22と、関数ツリー23と、警告条件24と、アドレス参照確認表25が記憶されている。
記憶部170は、メモリ921に備えられる。
プロセッサ910は、演算処理を行うIC(Integrated Circuit)である。プロセッサ910の具体例は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
ソフトウェア開発プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、ソフトウェア開発方法は、ソフトウェア開発装置100がソフトウェア開発プログラムを実行することにより行われる方法である。
ソフトウェア開発プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、ソフトウェア開発プログラムは、プログラムプロダクトとして提供されてもよい。
図2を用いて、本実施の形態に係るソフトウェア開発処理S100について説明する。
まず、図3を用いて、本実施の形態に係る警告条件24の例について説明する。
警告条件受付部110は、入力インタフェース930を介して、ソフトウェア開発者といった利用者から、警告を通知する条件を受け付け、記憶部170に警告条件24として記憶する。警告を通知する条件は、引数のアドレス渡しの回数である。すなわち、警告条件受付部110は、引数のアドレス渡し回数を表す値N(自然数)を設定値として、警告条件24を受け付ける。図3の例では、警告条件受付部110は、引数のアドレス渡し回数を表す設定値「3」の入力を受け付け、警告条件24として記憶部170に記憶する。
エディタ部120は、入力インタフェース930を介して、利用者からソースコード200の編集を受け付ける。エディタ部120は、ソースコード200の編集の他に、ソースコード200の記憶部170への記憶、および、ソースコード200の記憶部170からの読出しを行う。
ステップS10において、構文解析部130は、ソースコード20から複数の関数の関数同士の参照関係を構文解析結果21として取得する。具体的には、構文解析部130は、記憶部170に記憶されているソースコード20に対して、字句解析および構文解析を行い、構文解析結果21を生成する。
構文解析結果21は以下の情報を有する。
(1)関数名
(2)関数の仮引数名、仮引数の型
(3)関数の中で定義している変数名、変数の型
(4)変数同士の代入
(5)関数の中で使用している関数名、すなわち参照関数
(6)(5)の関数の実引数名
(7)大域変数の変数名、大域変数の型
図6は、本実施の形態に係る構文解析結果21の例を表す図である。
構文解析結果21は、図5および図6に示すように、リスト形式でも良い。図5および図6の構文解析結果21は図4のソースコード20をリスト化したものである。図5の構文解析結果_大域変数210は、大域変数をリスト化したものである。また、図6の構文解析結果_関数211,212は、関数をリスト化したものである。構文解析結果_大域変数210には上記(7)の情報が格納される。構文解析結果_関数211,212には上記(1)から(6)の情報が格納される。
(8)仮引数参照アドレスは(2−1)仮引数が示す変数のアドレスを表すものである。(9)実引数参照アドレスは、(6)実引数が示す変数のアドレスを表すものである。
(10)参照アドレスはグローバル変数が示すアドレスを表すものである。(8)から(9)の情報により、同じ関数であっても示すアドレスが異なる場合があるので、呼び出す関数1つにつき、構文解析結果_関数211,212のようなリストを1つずつ生成する。つまり、同じ関数が呼び出された場合においても、それぞれ構文解析結果_関数、すなわち関数の構文解析結果21を生成する。
ステップS20において、構造分析部140は、複数の関数を含むソースコード20を分析し、複数の関数のうち引数のアドレス渡しを行っている特定関数を抽出するとともに、特定関数が連続して引数のアドレス渡しを行っている連続回数を抽出する。構造分析部140は、構文解析結果21に基づいて、特定関数と連続回数とを抽出する。つまり、構造分析部140は、構文解析結果21に基づいて、引数のアドレス渡しを行っている関数と、その関数が連続して引数のアドレス渡しを行っている回数とを抽出する構造分析処理を行う。
アドレス渡し判定処理において、アドレス渡し判定部142は、構文解析結果21を用いて参照関係がある関数同士から引数のアドレス渡しを行っている特定関数を判定する。そして、アドレス渡し判定部142は、特定関数が引数のアドレス渡し行っていることを表す情報を関数リスト22に付与する。
階層カウント処理において、階層カウント部143は、関数リスト22に基づいて、特定関数について連続して引数のアドレス渡しを行っている回数を連続回数としてカウントする。
図8は、本実施の形態に係るソースコード20の別例であるソースコード201,202,203,204,205,206を表す図である。
構造分析部140は、構文解析結果21から、図7に示すような関数リスト22を生成する。図7の関数リスト220は、関数同士の呼び出し関係をまとめたものである。図7の関数リスト221は関数同士の呼び出し関係に加え、引数のアドレス渡しを行っているかを表現したものである。関数リストの構成として、1行目に被参照関数、1列目に参照関数を記載し、2行2列目以降に参照関係を表す数値を記載する。ここでは参照していないことを「0」で表し、参照していることを「0以外の数値」で表している。関数リスト221の場合、参照していることを1、参照しており、かつ引数のアドレス渡しを行っていることを−1で表している。すなわち、−1が設定されている関数は、引数のアドレス渡し行っている特定関数である。また、−1を関数リストに設定することは、特定関数が引数のアドレス渡し行っていることを表す情報を関数リスト22に付与することである。
図9は、本実施の形態に係る関数リスト生成処理のフローチャートである。
関数リスト生成部141は、関数リスト生成処理を行う。関数リスト生成部141は、構文解析結果21から(1)関数名と(5)参照関数を抽出し、関数リスト22を生成する。図7の関数リスト220は、図8のソースコードに基づいて生成されている。
ステップS102において、関数リスト生成部141は、図7の関数リスト220に示すように、ステップS101で抽出した全ての関数を1行目と1列目に並べる。
ステップS103において、関数リスト生成部141は、関数リスト220の2行2列目以降の数値部分を構文解析結果_関数の(5)参照関数に応じて入力する。関数リスト220の数値部分は、1列目の関数が2列目以降の関数を参照している場合1を格納し、参照していない場合は0を格納する。図8のソースコードを例にすると、ソースコード201ではmain関数はfuncAを参照しているので1、main関数はfuncA以外の関数を参照していないので0を格納する。
以上の処理で関数リスト220を生成する。
図4および図8のソースコードでは、説明を分かり易くするために、int型で宣言された変数については、「_val」を付しており、int*型で宣言されたポインタ型の変数については、「_addr」を付している。
「int* pa_addr」と宣言された場合、pa_addrはintのポインタ型であることを示す。また、int型で宣言された変数global_valについて、「&global_val」はglobal_valのアドレスを示す。
図10は、本実施の形態に係るアドレス渡し判定処理のフローチャートである。
アドレス渡し判定部142は、構文解析結果21を用いて、関数の中で引数のアドレス渡しを行っているかを確認する。アドレス渡し判定部142は、構文解析結果21に基づいて、複数の関数の各々の引数である変数が参照しているアドレスを設定したアドレス参照確認表25を生成する。そして、アドレス渡し判定部142は、アドレス参照確認表25に基づいて、引数のアドレス渡しを行っている特定関数を判定する。アドレス渡し判定部142は、判定結果に応じて関数リスト22の内容を更新する。引数のアドレス渡しの判定対象は関数リスト22内の全ての関数である。
ステップS111において、アドレス渡し判定部142は、構文解析結果_関数211の(2−1)仮引数名および(2−2)仮引数の型を確認し、仮引数にポインタ記述が存在するか確認する。存在しない場合、処理を終了する。存在する場合はステップS112の処理を行う。
ステップS112において、アドレス渡し判定部142は、引数のアドレス渡しの有無を確認するため、図11に示すようなアドレス参照確認表25を生成する。アドレス参照確認表25は、変数がどの変数のアドレスを参照しているかを記憶するものである。まず、アドレス参照を確認する変数を列挙する。アドレス渡し判定部142は、構文解析結果_関数211の(2−1)仮引数名と(3−1)変数名を抽出し、アドレス参照確認表25の変数列に加える。アドレス渡し判定部142は、(2−1)仮引数名をアドレス参照確認表25に挿入する際には、アドレス参照確認表25の参照アドレス列に仮引数が示している変数のアドレスも入力する。
図4のソースコード200では、funcTestAを使用している関数を記載していないので仮引数pa_addrが示している変数のアドレスが定まらない。ここではfuncTestAの仮引数pa_addrが示しているアドレスをpint_valとして、後の処理を説明する。ここまでの処理を用いて構文解析結果_関数211に対して変数抽出を実施した場合、アドレス参照確認表511が生成できる。
また、構文解析結果_関数211の(4)変数同士の代入の「*pc_addr=global_val」において、変数pc_addrは構文解析結果_関数211より「int*」であることが確認できる。変数global_valは構文解析結果_関数211には存在しない。その場合、変数の探索域を構文解析結果_大域変数210に変更する。構文解析結果_大域変数210で変数global_valは「int」であることが確認できる。よって*pc_addr=global_valはアドレス渡し、すなわちアドレスの代入ではなく、値渡し、すなわち値の代入であることが確認できる。値渡しの場合、アドレス参照確認表25の更新は行わない。
*pc_addr=global_valについてさらに説明する。pcはint型ポインタである。int型ポインタであるpcを「*pc」と記載した場合、参照されるのはpcのアドレスに格納された「値」である。global_valはint型なので、「global_val」と記載した場合、参照されるのはglobal_valに格納された「値」である。よって、これにより*pc_addr=global_valは、値同士の代入であることが確認できる。
図6の構文解析結果_関数211の場合、(6)実引数に記載されているのは変数pc_addrであり、アドレス参照確認表253によるとpc_addrが示しているアドレスはpint_valである。構文解析結果_関数211によると仮引数pa_addrが示しているアドレスもpint_valなので、funcTestAはfuncTestBに引数のアドレス渡しを行っていることが確認できる。よって、アドレス渡し判定部142は、「有」と判定する。実引数pc_addrが示しているアドレスがpint_valであることが確認できたので、構文解析結果_関数211の(9)実引数参照アドレスと構文解析結果_関数212の(8)仮引数参照アドレスにpint_valを入力する。
以上の処理により、参照関数について引数のアドレス渡しを判定する。
図12は、本実施の形態に係る階層カウント処理のフローチャートである。
図13は、本実施の形態に係る関数ツリー23の例を表す図である。
階層カウント部143は、関数リスト22に基づいて、複数の関数の関数同士の参照関係をツリー構造で表現した関数ツリー23を生成する。そして、階層カウント部143は、関数ツリー23と構文解析結果21とに基づいて、関数ツリー23のノードとなる各関数の階層を連続回数としてカウントする。
階層カウント部143は、図13に示すように、関数参照をツリー構造で表現した関数ツリー23を生成し、関数ツリー23のノードとなる各関数に階層を設定する。階層カウント部143は、関数リスト22を基に関数ツリー23を生成する。階層カウント処理について、図12のフローチャートと図7の関数リスト221を用いて説明する。
ステップS132において、階層カウント部143は、参照関係確認関数に指定された関数を関数ツリーの要素として配置する。ここでの「配置」とは関数ツリーの各要素を区別できるような位置情報を振ることを意味する。具体的には、2次元空間上の座標情報を位置情報とし、2次元における横情報をX、縦情報をYとし、座標情報を(X、Y)と表現とする場合、(0、4)あるいは(−1、0)といった情報を参照関係確認関数に振り、2次元空間上に存在する要素同士を区別できるようにする。上記の例は一例であり、関数ツリーという情報を表現できれば位置情報の振り方は問わない。
ステップS137において、階層カウント部143は、参照関係確認関数が参照している関数がないか関数リスト22で確認する。参照している関数がある場合、階層カウント部143は、参照している関数ごとにステップS138の処理を実行する。参照している関数がない場合、階層カウント処理を終了する。参照関係確認関数をfuncAとした場合、funcAは関数リスト221によるとfuncB、funcC、funcDを参照しているので、参照しているそれぞれの関数に対してステップS138の処理を行う。ステップS138の処理を行う順番は問わないものとする。なお、図12のフローチャートには関数リストの左列から右列に向かって参照関数の有無を確認するアルゴリズムを記載しているが、すべての関数の参照関係を確認できるのであれば方法は問わない。
以上の処理により、図13のような関数ツリー23を生成する。階層カウント部143は、生成した関数ツリー23を記憶部170に記憶する。
ステップS131Aにおいて、階層カウント部143は、参照関係確認関数を指定する。階層カウント部143は、参照関係確認関数をデータ記憶領域にプッシュする。参照関係確認関数と同じ関数が存在する場合、ステップS139Aの処理を行う。
ステップS139Aにおいて、階層カウント部143は、ステップS131Aで追加した参照関係確認関数をポップする。
上記のような処理を加えた上で、「funcA→funcB→funcC→funcA→funcB→…」のような構造を処理すると2回目のfuncAで階層カウント処理を中断することができる。
以上のような処理で無限階層カウントを防止する。
ステップS30において、監視部150は、連続回数が、特定関数により引数のアドレス渡しが行われていることを警告するための警告条件24を満たすか否かを監視する。そして、監視部150は、連続回数が警告条件24を満たす場合に、特定関数により引数のアドレス渡しが行われていることを警告する警告情報30を出力する。
具体的には、監視部150は、利用者が設定した警告条件と関数ツリーの中に条件が一致しているものがないか確認する。監視処理は条件一致確認処理ともいう。また、監視部150は、警告条件24と一致している場合は警告情報30を出力する。図3の警告条件24と、図13の関数ツリー23を例に説明する。警告条件24には、「引数のアドレス渡しを3回連続して行った関数を特定関数として検知する」ことが設定されている。図13の関数ツリー23では、引数のアドレス渡しを3回連続行っているのはmainから辿って、funcA、funcC、を経由したfuncBである。よって、監視部150は、funcBを特定関数とする。監視部150は、警告条件24に条件が一致するプログラムを検知すると、出力インタフェース940を介して、ディスプレイといった表示機器に警告情報30を出力する。これにより、警告情報30が利用者に通知される。
<変形例1>
本実施の形態では、表示機器に警告情報を出力している。しかし、利用者が容易に条件一致を確認できるように、表示機器に記憶部170に記憶された関数ツリー23を表示してもよい。また、監視部がN回以上の引数のアドレス渡しを検知した場合、警告をポップアップ表示する、あるいは、関数ツリー要素、すなわち特定関数を強調表示してもよい。その他、利用者が容易に特定関数を確認できるような表示であれば、表示方法は問わない。
以上により、利用者が容易に警告条件一致を確認できるようになる。
ソフトウェア開発装置100がネットワークを介して他の装置と通信する通信装置を備えていてもよい。通信装置は、レシーバとトランスミッタを有する。通信装置は、有線または無線で、LAN、インターネット、あるいは電話回線といった通信網に接続している。通信装置は、具体的には、通信チップまたはNIC(Network Interface Card)である。ソフトウェア開発装置100は、通信装置を介して、外部の装置から警告条件あるいはソースコードを受信してもよい。あるいは、ソフトウェア開発装置100は、通信装置を介して、警告情報を外部の装置に送信してもよい。
本実施の形態では、警告条件受付部110とエディタ部120と構文解析部130と構造分析部140と監視部150とコンパイル部160の機能がソフトウェアで実現される。変形例として、警告条件受付部110とエディタ部120と構文解析部130と構造分析部140と監視部150とコンパイル部160の機能がハードウェアで実現されてもよい。
ソフトウェア開発装置100は、電子回路909、メモリ921、補助記憶装置922、入力インタフェース930、および出力インタフェース940を備える。
電子回路909は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field−Programmable Gate Arrayの略語である。
警告条件受付部110とエディタ部120と構文解析部130と構造分析部140と監視部150とコンパイル部160の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、警告条件受付部110とエディタ部120と構文解析部130と構造分析部140と監視部150とコンパイル部160の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
本実施の形態に係るソフトウェア開発装置100は、静的解析時間を増加させる記述を引数のアドレス渡しとし、ソースコードに含まれる引数のアドレス渡しを行っている関数を抽出する。また、N階層以上連続してアドレス渡しを行っている関数を特定関数とし、利用者に特定関数の是正を通達することで、静的解析時間の増加を抑制する。よって、本実施の形態に係るソフトウェア開発装置100によれば、静的解析ツールの解析時間増加を抑制することができる。
本実施の形態では、主に、実施の形態1と異なる点について説明する。なお、実施の形態1で説明した構成と同様の構成について同一の符号を付し、その説明を省略する。
本実施の形態に係るソフトウェア開発装置100aは、実施の形態1の構成に加え、是正強制部180を備える。是正強制部180は、利用者にソースコードの是正を強制できる機能を有する。是正強制部180は、警告条件24を満たしてしまうソースコード記述がある場合に利用者にソースコードの是正を強制させる。是正を強制させるために、具体的には、新たな関数の実装をさせなくすること、あるいは、コンパイルを実行できなくすることといった機能が挙げられる。
以上により、利用者にソースコードの是正を強制することができる。
本実施の形態では、主に、実施の形態1と異なる点について説明する。なお、実施の形態1で説明した構成と同様の構成について同一の符号を付し、その説明を省略する。
本実施の形態に係るソフトウェア開発装置100bは、実施の形態1の構成に加え、一時保管部190を備える。一時保管部190は、エディタ部により編集されているソースコードを一時的に保管し、利用者のソースコード編集と並行して警告出力を行えるようにする。上述した実施の形態1および2では、利用者がソースコードを記憶部170に保存しない限り、解析対象が記憶部170に存在しないので、解析を始めることができなかった。そこで、本実施の形態では、一時保管部190を追加し、エディタ部120が特定のタイミングでソースコードを保存することで、利用者が意図せずとも解析対象を確保することができ、ソースコード解析から警告出力を行えるようにする。
また、エディタ部120が一時保管部190に保存するタイミングは問わない。具体的には、一定周期でも良いし、利用者によりキーボードの改行を打った時でも良い。
以上により、利用者のソースコード編集と並行して警告出力を行えるようにする。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
Claims (11)
- 複数の関数を含むソースコードを分析し、前記複数の関数のうち引数のアドレス渡しを行っている特定関数を抽出するとともに、前記特定関数が連続して引数のアドレス渡しを行っている連続回数を抽出する構造分析部と、
前記連続回数が、前記特定関数により引数のアドレス渡しが行われていることを警告するための警告条件を満たすか否かを監視し、前記連続回数が前記警告条件を満たす場合に、前記特定関数により引数のアドレス渡しが行われていることを警告する警告情報を出力する監視部と
を備えたソフトウェア開発装置。 - 前記ソフトウェア開発装置は、
前記ソースコードから前記複数の関数の関数同士の参照関係を構文解析結果として取得する構文解析部を備え、
前記構造分析部は、
前記構文解析結果に基づいて、前記特定関数と前記連続回数とを抽出する請求項1に記載のソフトウェア開発装置。 - 前記構造分析部は、
前記構文解析結果に基づいて、前記複数の関数から参照関係にある関数同士を抽出し、前記参照関係にある関数同士を関数リストとして生成する関数リスト生成部と、
前記構文解析結果を用いて前記参照関係がある関数同士から引数のアドレス渡しを行っている前記特定関数を判定し、前記特定関数が引数のアドレス渡し行っていることを表す情報を前記関数リストに付与するアドレス渡し判定部と、
前記関数リストに基づいて、前記特定関数について連続して引数のアドレス渡しを行っている回数を前記連続回数としてカウントする階層カウント部と
を備えた請求項2に記載のソフトウェア開発装置。 - 前記アドレス渡し判定部は、
前記構文解析結果に基づいて、前記複数の関数の各々の引数である変数が参照しているアドレスを設定したアドレス参照確認表を生成し、前記アドレス参照確認表に基づいて前記特定関数を判定する請求項3に記載のソフトウェア開発装置。 - 前記階層カウント部は、
前記関数リストに基づいて、前記複数の関数の関数同士の参照関係をツリー構造で表現した関数ツリーを生成し、前記関数ツリーと前記構文解析結果とに基づいて、前記関数ツリーのノードとなる各関数の階層を前記連続回数としてカウントする請求項4に記載のソフトウェア開発装置。 - 前記構造分析部は、無限に階層をカウントさせる前記複数の関数の構造を検出し、無限カウントを防止する請求項5に記載のソフトウェア開発装置。
- 前記ソフトウェア開発装置は、前記ソースコードの編集を受け付けるエディタ部と、前記エディタ部により編集されている前記ソースコードを一時的に保管する一時保管部とを備え、
前記構文解析部は、前記一時保管部に保管されているソースコードから前記構文解析結果を取得する請求項2から6のいずれか1項に記載のソフトウェア開発装置。 - 前記ソフトウェア開発装置は、表示機器を備え、
監視部は、前記警告情報を前記表示機器に表示する請求項1から7のいずれか1項に記載のソフトウェア開発装置。 - 前記ソフトウェア開発装置は、前記監視部が前記警告情報を出力すると、前記警告情報が解消されるまで前記ソースコードのコンパイルを制限する制限部を備えた請求項1から8のいずれか1項に記載のソフトウェア開発装置。
- 構造分析部が、複数の関数を含むソースコードを分析し、前記複数の関数のうち引数のアドレス渡しを行っている特定関数を抽出するとともに、前記特定関数が連続して引数のアドレス渡しを行っている連続回数を抽出し、
監視部が、前記連続回数が、前記特定関数により引数のアドレス渡しが行われていることを警告するための警告条件を満たすか否かを監視し、前記連続回数が前記警告条件を満たす場合に、前記特定関数により引数のアドレス渡しが行われていることを警告する警告情報を出力するソフトウェア開発方法。 - 複数の関数を含むソースコードを分析し、前記複数の関数のうち引数のアドレス渡しを行っている特定関数を抽出するとともに、前記特定関数が連続して引数のアドレス渡しを行っている連続回数を抽出する構造分析処理と、
前記連続回数が、前記特定関数により引数のアドレス渡しが行われていることを警告するための警告条件を満たすか否かを監視し、前記連続回数が前記警告条件を満たす場合に、前記特定関数により引数のアドレス渡しが行われていることを警告する警告情報を出力する監視処理と
をコンピュータに実行させるソフトウェア開発プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017241318A JP6945434B2 (ja) | 2017-12-18 | 2017-12-18 | ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017241318A JP6945434B2 (ja) | 2017-12-18 | 2017-12-18 | ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019109639A JP2019109639A (ja) | 2019-07-04 |
JP6945434B2 true JP6945434B2 (ja) | 2021-10-06 |
Family
ID=67179822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017241318A Active JP6945434B2 (ja) | 2017-12-18 | 2017-12-18 | ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6945434B2 (ja) |
-
2017
- 2017-12-18 JP JP2017241318A patent/JP6945434B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019109639A (ja) | 2019-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11740876B2 (en) | Method and system for arbitrary-granularity execution clone detection | |
US9256517B1 (en) | Display of aggregated stack traces in a source code viewer | |
JP4148527B2 (ja) | 機能テスト・スクリプト生成装置 | |
US8370816B2 (en) | Device, method and computer program product for evaluating a debugger script | |
US9262132B1 (en) | Incremental local source code analysis | |
CN108304175B (zh) | 代码文件隔离打包方法及装置 | |
US9424163B2 (en) | Exception and debugging behaviors for JavaScript debugging using just my code | |
JP2006185211A (ja) | プログラム解析装置、テスト実行装置、その解析方法及びプログラム | |
CN111124479B (zh) | 配置文件的解析方法、系统及电子设备 | |
WO2018161509A1 (zh) | 条件编译预处理方法、终端及存储介质 | |
WO2019055378A1 (en) | METHOD AND APPARATUS FOR FINDING LONG PROCESSES IN A CODE | |
US20130179867A1 (en) | Program Code Analysis System | |
US9311077B2 (en) | Identification of code changes using language syntax and changeset data | |
JP5303795B2 (ja) | アプリケーションの解析方法、解析システム及び解析プログラム | |
JP2009129127A (ja) | プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体 | |
JP2018169693A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
US8578323B2 (en) | Hierarchical program source management | |
JP6107455B2 (ja) | テストスケジュール決定装置、プログラム | |
JP6945434B2 (ja) | ソフトウェア開発装置、ソフトウェア開発方法およびソフトウェア開発プログラム | |
US8291389B2 (en) | Automatically detecting non-modifying transforms when profiling source code | |
JP5024252B2 (ja) | トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法 | |
CN113190235A (zh) | 一种代码的分析方法、装置、电子终端及存储介质 | |
JP2017151594A (ja) | 支援装置、支援方法及びプログラム | |
CN113076084A (zh) | 资源文件处理方法、装置、设备及存储介质 | |
US20140149970A1 (en) | Optimising a compilation parser for parsing computer program code in arbitrary applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200914 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210721 |
|
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: 20210817 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210914 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6945434 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |