JP2010140408A - Source code converting device - Google Patents
Source code converting device Download PDFInfo
- Publication number
- JP2010140408A JP2010140408A JP2008318346A JP2008318346A JP2010140408A JP 2010140408 A JP2010140408 A JP 2010140408A JP 2008318346 A JP2008318346 A JP 2008318346A JP 2008318346 A JP2008318346 A JP 2008318346A JP 2010140408 A JP2010140408 A JP 2010140408A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- node
- source
- programming language
- conversion
- 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
Links
Images
Abstract
Description
本発明は、コンピュータプログラムの分析、特に、ソースコードの分析を支援するための技術に関する。 The present invention relates to a technique for supporting analysis of a computer program, and in particular, analysis of a source code.
企業や公共施設などの運用を支える業務システム、いわゆるエンタープライズシステム(Enterprise System)は、今や、大小さまざまな組織の基盤として導入されている。業務システムは、ノード端末やデータベースから得られるデータを集計、蓄積、解析、加工した上でより付加価値の高い情報を出力する。業務システムを構成するプログラムファイルの数は、数十万、時には数百万にも及ぶことがある。業務システムは複雑化する組織マネジメントをより効率化するために発展を続けている。 Business systems that support the operation of companies and public facilities, so-called enterprise systems, are now being introduced as the foundations of large and small organizations. The business system aggregates, accumulates, analyzes, and processes data obtained from node terminals and databases, and outputs information with higher added value. The number of program files that make up a business system may reach hundreds of thousands and sometimes millions. Business systems continue to evolve to make more complex organizational management more efficient.
業務システムは、開発時だけでなく保守作業時・再構築時においてもソースコードの検査・修正を必要とする。ソースコードの解析を支援するために、さまざまなソフトウェア解析ツール(以下、単に「解析ツール」とよぶ)が提供されている。
業務システムに含まれるソースコードは、COBOL(COmmon Business Oriented Language)とよばれるプログラミング言語で記述されることが多い。しかし、COBOLには派生が多い。たとえば、日立製作所が提供するCOBOL(以下、「日立COBOL」とよぶ)には他のベンダーが提供するCOBOLにはない独自部分が含まれている。IBM(International Business Machines)が提供するCOBOL(以下、「IBM・COBOL」とよぶ)についても同様である。このため、あるベンダーがIBM・COBOL用に有用な解析ツールを提供していても、日立COBOLで記述されたソースコードを解析できない、という事態が生じる。従来、こういった状況においては、
1.ユーザが、解析対象となるソースコードを日立COBOLからIBM・COBOLに書き直す。
2.日立COBOL用の解析ツールを自作する。
といった対応策が採られることが多かった。
The source code included in the business system is often written in a programming language called COBOL (COmmon Business Oriented Language). However, there are many derivations in COBOL. For example, COBOL provided by Hitachi, Ltd. (hereinafter referred to as “Hitachi COBOL”) includes a unique part that is not found in COBOL provided by other vendors. The same applies to COBOL provided by IBM (International Business Machines) (hereinafter referred to as “IBM COBOL”). For this reason, even if a certain vendor provides a useful analysis tool for IBM and COBOL, a situation occurs in which the source code described in Hitachi COBOL cannot be analyzed. Traditionally, in this situation,
1. The user rewrites the source code to be analyzed from Hitachi COBOL to IBM / COBOL.
2. Create an analysis tool for Hitachi COBOL.
Such countermeasures were often taken.
本発明は、本発明者による上記課題認識に基づいて完成された発明であり、その主たる目的は、あるプログラミング言語で記述されたソースコードを別のプログラミング言語によるソースコードに変換するための技術を提供することにある。 The present invention has been completed on the basis of recognition of the above problems by the present inventor, and its main object is to provide a technique for converting source code described in one programming language into source code in another programming language. It is to provide.
本発明のある態様は、ソースコード変換装置に関する。
この装置は、第1のプログラミング言語で記述されたソースコードである第1ソースコードから、第1ソースコードの論理構造を基本ノードの集合体により示す第1構文モデルを生成し、第2のプログラミング言語において使用可能な構成要素に対応するノードである変換先ノードに基本ノードを変換することにより、第1ソースコードの論理構造を変換先ノードの集合体により示す第2構文モデルを生成し、第2構文モデルに含まれる変換先ノードとその構造にしたがって、第2のプログラミング言語で記述されたソースコードとしての第2ソースコードを生成する。
One embodiment of the present invention relates to a source code conversion apparatus.
The apparatus generates a first syntax model indicating a logical structure of the first source code by a set of basic nodes from the first source code which is a source code described in the first programming language, and performs the second programming. By converting a basic node to a conversion destination node that is a node corresponding to a component that can be used in the language, a second syntax model indicating the logical structure of the first source code by an aggregate of conversion destination nodes is generated, and The second source code as the source code described in the second programming language is generated according to the conversion destination node and its structure included in the two syntax model.
ここでいう第1のプログラミング言語と第2のプログラミング言語は、日立COBOLとIBM・COBOLのように、同系統のプログラミング言語でありながら細部において異なるプログラミング言語であってもよい。あるいは、COBOLとJAVA(登録商標)、COBOLとC++、JAVA(登録商標)とC++のように、別系統のプログラミング言語であってもよい。 Here, the first programming language and the second programming language may be programming languages of the same type but different in details, such as Hitachi COBOL and IBM COBOL. Alternatively, different programming languages such as COBOL and JAVA (registered trademark), COBOL and C ++, JAVA (registered trademark) and C ++ may be used.
なお、以上に示した各構成要素の任意の組み合わせ、本発明を方法、システム、記録媒体、コンピュータプログラムにより表現したものもまた、本発明の態様として有効である。 It should be noted that any combination of the above-described components, and the present invention expressed by a method, system, recording medium, and computer program are also effective as an aspect of the present invention.
本発明によれば、あるプログラミング言語で記述されたソースコードを別のプログラミング言語で記述されたソースコードに変換しやすくなる。 ADVANTAGE OF THE INVENTION According to this invention, it becomes easy to convert the source code described in one programming language into the source code described in another programming language.
図1は、ソースコードの言語変換過程を示す模式図である。
本実施例においては、日立COBOLで記述されたソースコード(以下、「日立ソース200」とよぶ)をIBM・COBOLで記述されたソースコード(以下、「IBMソース202」とよぶ)に変換する過程を例として説明する。
FIG. 1 is a schematic diagram showing a language conversion process of source code.
In the present embodiment, a process of converting source code described in Hitachi COBOL (hereinafter referred to as “Hitachi
ソースコードの言語変換を実現するための主たる機能は3つあり、それぞれ、パーサ(parser)、プロセッサ(processor)、ライタ(writer)とよぶ。各機能は、解析処理、変換処理、生成処理をそれぞれ担当する。
解析処理(S1):まず、第1ソースコードとして日立ソース200を取得し、パーサが構文解析し、第1の構文モデルとしての抽象構文木(以下、「AST(Abstract Syntax Tree)」とよぶ)を生成する。ASTは、演算子やそのオペランドといったソースコードの構成要素にノードを対応づけた木構造として形成される。ASTは、一般的なコンパイラやインタプリタで採用されている既存技術の応用により生成できる。日立ソース200のように変換元となるソースコードを「変換元ソース」、変換元ソースから生成されるASTを「変換元AST」、変換元ASTに含まれるノードを「基本ノード」、または、「変換元ノード」とよぶ。変換元ASTは、変換元ソースの言語構造に対応したASTであってもよいし、他のプログラミング言語、たとえば、標準的なCOBOLの言語構造に対応した標準モデルとしてのASTであってもよい。解析処理については、図3に関連して詳述する。
There are three main functions for realizing language conversion of the source code, which are called a parser, a processor, and a writer, respectively. Each function is in charge of analysis processing, conversion processing, and generation processing.
Analysis process (S1): First, Hitachi
変換処理(S2):プロセッサは、変換元ASTを、第2ソースコードとしてのIBMソース202に対応したASTに変換する。IBMソース202のように変換先となるソースコードを「変換先ソース」、変換先ソースのために生成されるASTを「変換先AST」、変換先ASTに含まれるノードを「変換先ノード」とよぶ。第2構文モデルとしての変換先ASTは、変換先ソースの言語構造に対応する。変換処理については、図3および図4に関連して詳述する。
Conversion process (S2): The processor converts the conversion source AST into an AST corresponding to the IBM
生成処理(S3):ライタは、変換先ASTから変換先ソースであるIBMソース202を生成する。生成処理については、図4に関連して詳述する。
以上に示したように、変換元ソースである日立ソース200から変換元ASTを生成し、変換元ASTから変換先ASTを生成し、変換先ASTから変換先ソースであるIBMソース202を生成することにより、日立ソース200がIBMソース202に変換される。
Generation process (S3): The writer generates an IBM
As described above, the conversion source AST is generated from the Hitachi
言語変換処理を実現するためには、1.変換元ソースから変換元ASTを生成するためのルール(以下、「第1ASTルール」とよぶ)、2.変換元ASTから変換先ASTを生成するためのルール(以下、「第2ASTルール」とよぶ)、3.変換先ASTから変換先ソースを生成するためのルール(以下、「ソース生成ルール」とよぶ)の3種類のルールが必要である。各種のプログラミング言語についてこれらのルールをライブラリとして提供することにより、さまざまなプログラミング言語間における言語変換処理が実現される。 In order to realize language conversion processing, 1. 1. Rules for generating conversion source AST from conversion source (hereinafter referred to as “first AST rule”); 2. rules for generating the conversion destination AST from the conversion source AST (hereinafter referred to as “second AST rule”); Three types of rules are required: a rule for generating a conversion source from the conversion destination AST (hereinafter referred to as “source generation rule”). By providing these rules as a library for various programming languages, language conversion processing between various programming languages is realized.
図2は、ソースコード処理装置100の機能ブロック図である。
ここに示す各ブロックは、ハードウェア的には、コンピュータのCPUをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
ソースコード処理装置100は、図1に示したパーサ、プロセッサ、ライタの機能を担う装置である。本実施例においては、ソースコード処理装置100の主たる機能は、コンピュータ上のソフトウェアとして実現されるものとして説明する。より具体的には、本実施例におけるソースコード処理装置100の各機能は、主として、JAVA(登録商標)やScalaにより記述され、JVM(Java Virtual Machine)上において実行されるコンピュータプログラムにより実現される。
FIG. 2 is a functional block diagram of the source
Each block shown here can be realized in hardware by an element such as a CPU of a computer or a mechanical device, and in software it is realized by a computer program or the like. Draw functional blocks. Therefore, those skilled in the art will understand that these functional blocks can be realized in various forms by a combination of hardware and software.
The source
ソースコード処理装置100は、UI(ユーザインタフェース)部110、データ処理部120およびデータ保持部140を含む。
UI部110は、ユーザインタフェース処理を担当する。データ処理部120は、UI部110やデータ保持部140から取得されたデータを元にして各種のデータ処理を実行する。データ処理部120は、UI部110とデータ保持部140との間のインタフェースの役割も果たす。データ保持部140は、各種データを保持するための記憶領域である。
The source
The
UI部110:
UI部110は、入力部112と出力部116を備える。入力部112は、ユーザの各種入力を検出したり、ファイル等のデータを外部装置から取得する。出力部116は、各種情報を表示したり、ファイル等のデータを外部装置に送信する。入力部112は、コード取得部114を含む。コード取得部114は、図1の日立ソース200のような変換元ソースを取得する。出力部116は、コード出力部118を含む。コード出力部118は、図1のIBMソース202のような変換先ソースを出力する。
UI unit 110:
The
データ処理部120:
データ処理部120は、第1構文モデル生成部122、第2構文モデル生成部124、コード生成部126、検査部128および注釈ノード設定部130を含む。第1構文モデル生成部122は、第1ASTルール152を含む。第1構文モデル生成部122は、第1ASTルール152を参照して、変換元ソースから変換元ASTを生成する。第2構文モデル生成部124は、第2ASTルール154を含む。第2構文モデル生成部124は、第2ASTルール154を参照して、変換元ASTから変換先ASTを生成する。コード生成部126は、ソース生成ルール156を含む。コード生成部126は、ソース生成ルール156を参照して、変換先ASTから変換先ソースを生成する。
Data processing unit 120:
The
検査部128は、変換元AST、あるいは、変換先ASTのノードを走査して、所定の「検出条件」に合致する箇所を特定する。検査部128は、コーディングルール158を含む。検出条件の全部または一部は、コーディングルール158として定義される。検出条件については、図5以降に関連して詳述する。注釈ノード設定部130は、検出条件に合致する箇所が検出されたとき、「注釈ノード」をASTに設定する。注釈ノード設定部130は、注釈ノード設定ルール160を含む。注釈ノード設定ルール160には、検出条件と注釈ノードが対応づけられている。ある検出条件に合致する箇所が検出されたとき、どのような注釈ノードを設定すべきか、はこの注釈ノード設定ルール160に設定されている。注釈ノードの設定の詳細については、図6以降に関連して詳述する。検出条件と注釈ノードは、ASTを対象として所定のコーディングルールが守られているか、プログラミング構造的に不適切な記載箇所がないか、を判断するために導入される。
The
データ保持部140:
データ保持部140は、第1構文モデル保持部142と第2構文モデル保持部144を含む。第1構文モデル保持部142は、第1構文モデル生成部122が生成した変換元ASTを保持する。第2構文モデル保持部144は、第2構文モデル生成部124が生成した変換先ASTを保持する。
Data holding unit 140:
The
解析処理(S1)、すなわち、パーサとしての機能は、主として、入力部112と第1構文モデル生成部122により実現される。変換処理(S2)、すなわち、プロセッサとしての機能は、主として、第2構文モデル生成部124により実現される。生成処理(S3)、すなわち、ライタとしての機能は、主として、コード生成部126や出力部116により実現される。
The analysis process (S1), that is, the function as a parser is mainly realized by the
ソースコード処理装置100は、変換元ソースを変換先ソースに言語変換する「ソースコード変換装置」としての機能のほかに、検出条件を設定することにより、ソースコードの記述内容を検査する「ソースコード検査装置」としての機能も備える。以下、「ソースコード変換装置」としての機能と「ソースコード検査装置」としての機能を分けて説明する。
The source
[ソースコード変換装置としての機能]
図3は、日立ソース200から変換元ASTを生成する過程を説明するための模式図である。
同図に示す日立ソース200は、変数「A」と変数「B」を比較対象とし、「AとBが共に1」という条件が成立するときには、変数「FLAG」に文字列「Y」を設定し、それ以外のときには変数「FLAG」に文字列「N」を設定する、という内容を示している。1行目の構文「EVALUATE A B」は、「A」と「B」を比較対象とする、という処理内容を示している。
[Function as a source code converter]
FIG. 3 is a schematic diagram for explaining the process of generating the conversion source AST from the
The
コード取得部114が日立ソース200を取得すると、第1構文モデル生成部122は、まず、構文「EVALUATE A B」を取得する。この構文の構成要素は、「EVALUATE」、「A」、「B」である。第1構文モデル生成部122は、まず、第1ASTルールに基づき、「EVALUATE」に対応する変換元ノードEvaluateStatement206を設定し、「EVALUATE」の変数リスト宣言に対応する変換ノードEvaluateTagList208を設定する。構成要素とは、ソースコードに記述されている変数や定数、宣言や関数といったステートメントであり、ノードとはそれらの構成要素に対応づけられるASTの要素である。ノードの中には、EvaluateStatement206のように、ソースコード中において明示的に記述されている構成要素に対応して設定されるノードもあれば、EvaluateTagList208のように、EvaluateStatement206のような他ノードに付随して設定されるノードもある。
When the
「EVALUATE」の引数「A」、「B」に対応して、Expression:"A"210とExpression:"B"212という2つのノードがEvaluateTagList208の子ノードとして設定される。更に、引数「A」、「B」の並置を示すためのノード「None214」も設定される。日立ソース200では、「EVALUATE A B」のように引数をそのまま並べて書くことができるが、IBMソース202では、「EVALUATE A ALSO B」のように引数「A」、「B」の間に「ALSO」という構成要素が記述される。日立ソース200から変換元AST204を生成するときには、Expression:"A"210とExpression:"B"212だけでなく、None214というノードも設定される。より具体的には、「EVALUATE」という表現に対しては、EvaluateStatement206、EvaluateTagList208および引数に対応するノードと引数をつなぐためのノード(None214)が第1ASTルールにおいて対応づけられている。第1構文モデル生成部122はこの第1ASTルールにしたがって、「EVALUATE」という表現に対応してしかるべき変換元ノードを組み立てる。
変換元AST204が標準的・統一的な構文モデルであるならば、変換元ソースのプログラミング言語ごとに第1ASTルールを用意すれば、任意の変換元ソースから標準的な構文モデルとしての変換元AST204を生成できる。
Corresponding to the arguments “A” and “B” of “EVALUATE”, two nodes of Expression: “A” 210 and Expression: “B” 212 are set as child nodes of
If the
図4は、変換元ASTから変換先AST、IBMソース202を生成する過程を説明するための模式図である。
まず、第2構文モデル生成部124は、変換元AST204から変換先AST220を生成する。変換先ソースであるIBMソース202では、「EVALUATE A ALSO B」のように「EVALUATE」の引数は構成要素「ALSO」によってつなげられる。そこで、第2構文モデル生成部124は、変換元AST204の変換元ノードNone214を、変換先ノードALSO222に変換する。変換元ノードと変換先ノードの対応づけは、プログラミング言語ごとに第2ASTルールとして設定されている。第2構文モデル生成部124はこの第2ASTルールにしたがって変換元AST204から変換先AST220を生成する。
変換元AST204が標準的・統一的な構文モデルであるならば、変換先ソースのプログラミング言語ごとに第2ASTルールを用意すれば、任意の変換先ASTへの変換が可能となる。
FIG. 4 is a schematic diagram for explaining a process of generating the conversion destination AST and the
First, the second syntax
If the
コード生成部126は、各変換先ノードごとにIBMソース202の該当構成要素を特定し、特定した構成要素を変換先AST220の構造にしたがって組み立てる。このようなルールは、ソース生成ルールとして定義されている。こうして、ALSO表現を含まない日立ソース200からALSO表現を含むIBMソース202が生成される。この結果、IBM・COBOL用の解析ツールにより日立ソース200を解析可能となる。
The
IBMソース202を変換元ソース、日立ソース200を変換先ソースとする場合にも基本的な考え方は同様である。IBMソース202から変換元ASTを作るときには、構成要素「ALSO」からノード「ALSO222」を設定する。変換元ASTを日立COBOL用の変換先ASTに変換するときには、ALSO222はNone214に変換される。あるいは、ALSO222に対応するノードを変換先ASTには設定しないとしてもよい。いずれにしても、変換先ASTにおいて、ALSO222に対応するノードが無効化されればよい。コード生成部126は、None214に対応する構成要素を日立ソース200に記述しない。このような処理方法により、IBMソース202の「EVALUATE A ALSO B」は、日立ソース200においては「EVALUATE A B」として表現されることになる。
ここでは、日立ソース200とIBMソース202の違いの例としてALSO222の有無を挙げたが、このほかのさまざまな言語間の差異についても、第1ASTルール、第2ASTルールおよびソース生成ルールを適切に定義することにより変換可能となる。
The basic concept is the same when the
Here, the presence or absence of ALSO 222 was given as an example of the difference between
[ソースコード検査装置としての機能]
図5は、「int num,iNumber」という変数宣言文から生成されるASTを示す図である。
検査対象となるASTは、変換元ASTであっても変換先ASTであってもよい。ここでは、変換元ASTを対象として検査を実行するとして説明する。検査の内容はユーザが任意に設定できる。たとえば、業務システムの開発・保守について、以下のようなコーディングルールを設定したとする。
R1.int型の変数名は、文字「i」から始まること
R2.変数宣言においては、1回の型宣言で複数の変数を定義しないこと
R3.変数名は4文字以上であること
[Function as a source code inspection device]
FIG. 5 is a diagram showing an AST generated from a variable declaration statement “int num, iNumber”.
The AST to be inspected may be the conversion source AST or the conversion destination AST. Here, a description will be given assuming that the inspection is performed on the conversion source AST. The contents of the inspection can be arbitrarily set by the user. For example, assume that the following coding rules are set for business system development and maintenance.
R1. Int type variable names must begin with the letter “i” R2. In variable declaration, do not define multiple variables in a single type declaration. R3. Variable name must be at least 4 characters long
コーディングルールの制定は、ソースコードの可読性を高めたり、修正ミスを防ぐ上で重要である。特に、複数のソフトウェアエンジニアが関わる大規模な業務システムの開発において適切なコーディングルールを制定することは重要である。 Establishing coding rules is important for improving the readability of source code and preventing correction errors. In particular, it is important to establish appropriate coding rules in the development of large-scale business systems involving multiple software engineers.
同図の宣言文「int num,iNumber」において、変数「num」は、その先頭文字が「n」であるため、上記のルールR1を満たしていない。また、一つのint型宣言で「num」と「iNumber」という2つの変数をまとめて定義しているため、ルールR2も満たしていない。更に、変数「num」の文字数は3文字しかないため、ルールR3も満たしていない。ソースコード処理装置100は、コーディングルールが実際に守られているか、また、コーディングルールが守られていない箇所はどこか、を検査できる。
In the declaration statement “int num, iNumber” in the figure, the variable “num” does not satisfy the rule R1 because the first character is “n”. Further, since two variables “num” and “iNumber” are defined together in one int type declaration, the rule R2 is not satisfied. Furthermore, since the variable “num” has only three characters, the rule R3 is not satisfied. The source
同図に示すAST230は、宣言文「int num,iNumber」に対応する。第1構文モデル生成部122は、変数の宣言文に出会うと、まず、第1ASTルールに基づき、LocalVariableDeclaration232をAST230に設定する。子ノードとして、int型を示すノードであるIntType234と変数リストを示すノードであるVariableDeclarators236が設定される。変数「num」、変数「iNumber」に対しては、VariableDeclarator238とIdentifier:"num"240、VariableDeclarator242とIdentifier:"iNumber"244がそれぞれ設定されている。
The
図6は、ルールR1に対応して注釈ノードが設定されたAST230を示す図である。
検査部128には、上述したルールR1〜R3が検出条件として設定される。検査部128は、まず、ルールR1「int型の変数名は、文字「i」から始まること」に違反している変数ノードをAST230から検索する。検査部128は、AST230を走査して、IntType234を見つけると、その親ノードであるLocalVariableDeclaration232の子ノードの中からidentifierノードを探し、変数名をチェックする。変数「num」はルールR1に違反している。注釈ノード設定部130はIdentifier:"num"240に注釈ノード250を設定する。
FIG. 6 is a diagram showing the
In the
注釈ノード設定部130は、最終的に、AST230中の注釈ノード250を収集し、リスト化して出力部116に出力させる。また、コード生成部126は、注釈ノード250を含むAST230からソースコードを生成してもよい。コード生成部126はソースコード中において、注釈ノード250の対応する箇所に注釈内容を示すコメントを付記してもよい。
The annotation
図7は、更に、ルールR2、R3に対応して注釈ノードが設定されたときのAST230を示す図である。
検査部128は、次に、ルールR2「変数宣言においては、1回の型宣言で複数の変数を定義しないこと」に違反している箇所を検索する。検査部128は、AST230を走査して、LocalVariableDeclaration232を見つけると、その子ノードの中からidentifierノードを探し、宣言されている変数の数をチェックする。ステートメント「int num,iNumber」はルールR2に違反している。注釈ノード設定部130はVariableDeclarators236に注釈ノード254を設定する。
FIG. 7 is a diagram showing the
Next, the
検査部128は、ルールR3「変数名は4文字以上であること」に違反している箇所を検索する。検査部128は、AST230を走査して、LocalVariableDeclaration232を見つけると、その子ノードの中からidentifierノードを探し、宣言されている変数の文字数をチェックする。変数「num」はルールR3に違反しているため、注釈ノード設定部130はIdentifier:"num"240に注釈ノード252を設定する。
The
検出条件は、コーディングルールに関わる条件に限らない。たとえば、コンピュータプログラムの構造として満たされるべき条件を検出条件として設定してもよい。以下、2例を示す。 The detection condition is not limited to the condition related to the coding rule. For example, a condition that should be satisfied as the structure of the computer program may be set as the detection condition. Two examples are shown below.
例1.特定の処理の開始時に記載されるステートメントと終了時に記載されるべきステートメントの確認
たとえば、C++の場合、「new」演算子によりメモリの動的確保がなされる。メモリを解放する演算子は「delete」である。new演算子で確保したメモリは、使用後には、deleteによって解放しなければならない。また、「open」演算子によりファイルディスクリプタを開いたあとは、「close」演算子により同ファイルディスクリプタを閉じなければならない。このように、「メモリの動的確保」や「ファイルディスクリプタの使用」といった特定の処理の前後においては、所定のステートメントが一対として記述されなければならない。以下、newやopenのように特定の処理の開始時に記述されるべき構成要素を「開始要素」、終了時に記述されるべき構成要素を「終了要素」とよぶ。1つのソースファイルにおいては開始要素と終了要素の数は同数となるべきである。開始要素に対応するノードを「先端ノード」、終了要素に対応するノードを「終端ノード」とよぶことにすると、ASTにおいては、先端ノードの数と終端ノードの数は同数となるべきである。
このような観点から、ソースコード処理装置100は先端ノードと終端ノードに基づいてプログラム構造上の不備がないかを検査してもよい。
Example 1. Confirmation of statements to be described at the start and end of a specific process For example, in the case of C ++, memory is dynamically allocated by a “new” operator. The operator that releases the memory is “delete”. Memory allocated with the new operator must be freed with delete after use. In addition, after opening the file descriptor by the “open” operator, the file descriptor must be closed by the “close” operator. Thus, a predetermined statement must be described as a pair before and after specific processing such as “dynamic memory allocation” and “use of file descriptor”. Hereinafter, a component to be described at the start of a specific process such as new or open is referred to as a “start element”, and a component to be described at the end is referred to as an “end element”. In one source file, the number of start elements and end elements should be the same. If the node corresponding to the start element is called “front end node” and the node corresponding to the end element is called “end node”, in AST, the number of front end nodes and the number of end nodes should be the same.
From this point of view, the source
ここでは、openを開始要素、closeを終端要素として説明する。まず、検査部128はASTを走査し、openに対応する先端ノードを検出すると、先端ノード数をインクリメントする。また、closeに対応する終端ノードを検出すると、終端ノード数をインクリメントする。ASTの全ノードを走査したとき、先端ノード数と終端ノード数が同数でなかったときには、ソースコードの記述に欠陥があるのかもしれない。先端ノード数が終端ノード数よりも多いときには、開いたまま閉じられていないファイルディスクリプタが存在する可能性がある。このような場合、注釈ノード設定部130その旨を警告するための注釈ノードを設定する。
Here, open will be described as a start element and close as an end element. First, when the
例2.オーバーライドの範囲の確認
あるclassAにおいてそのメンバ関数method1()を定義したとする。このクラスを継承するclassBは、独自にメンバ関数method1()を定義しなくても、classAのメンバ関数method1()を自らのメンバ関数として提供できる。いわば、classBはclassAのメンバ関数を借用することになる。classA.method1()をコールしたときに実行される処理内容と、classB.method1()をコールしたときに実行される処理内容は全く同じとなる。したがって、classAに定義されているmethod1()の内容を修正すると、classA.method1()だけでなく、classB.method1()の挙動も変化する。
Example 2. Confirming the override range Assume that classA defines its member function method1 (). ClassB, which inherits this class, can provide the member function method1 () of classA as its own member function without defining its own member function method1 (). In other words, classB borrows the member function of classA. The processing content executed when classA.method1 () is called is exactly the same as the processing content executed when classB.method1 () is called. Therefore, when the contents of method1 () defined in classA are modified, not only classA.method1 () but also behavior of classB.method1 () changes.
一方、classBにおいて、独自に、同名のmethod1()を再定義してもよい。これをオーバーライド(override)とよぶ。この場合、classA.method1()をコールしたときに実行される処理内容はclassAのmethod1()により定義され、classB.method1()をコールしたときに実行される処理内容はclassBのmethod1()により定義される。classAとclassBは、同名のインタフェースmethod1()を提供しつつ、その処理内容をclassAとclassBで異ならせることができる。オーバーライドというプログラミングテクニックは、classBのmethod1()と、classAのmethod1()の処理内容がほとんど同じでありながら若干異なる場合に利用されることが多い。 On the other hand, method1 () with the same name may be redefined independently in classB. This is called override. In this case, the processing content executed when classA.method1 () is called is defined by classA method1 (), and the processing content executed when classB.method1 () is called is determined by classB method1 (). Defined. classA and classB can provide different methods of classA and classB while providing interface method1 () with the same name. The programming technique of override is often used when the processing contents of method1 () of classB and method1 () of classA are almost the same but slightly different.
classBでmethod1()を再定義、すなわち、オーバーライドしている場合、classA.method1()の内容を修正すると、当然ながらclassA.method1()の挙動は変化するが、classB.method1()の挙動は変化しない。classA.method1()の内容の修正にあわせて、classB.method1()も変化させたい場合には、classB.method1()にも、同様の修正を忘れずに施す必要がある。
このような観点から、ソースコード処理装置100は、各クラスのメンバ関数について、そのオーバーライドされている箇所を特定することにより、ソースコード解析を支援する。
If method1 () is redefined in classB, that is, if you override classA.method1 (), the behavior of classA.method1 () will of course change, but the behavior of classB.method1 () It does not change. If you want to change classB.method1 () along with the modification of classA.method1 (), remember to make the same modification to classB.method1 ().
From this point of view, the source
具体的には、検査部128は、まず、classAを継承しているサブクラス群を特定し、これらのサブクラスにおいて定義されるメンバ関数を検索する。そして、この中からmethod1()という名前のメンバ関数を特定する。classAのサブクラスにおいてmethod1()が定義されていれば、ここでオーバーライドとなっていることがわかる。注釈ノード設定部130は該当箇所に注釈ノードを設定する。classAのmethod1()を修正したときには、このようにして設定された注釈ノードを確認することにより、修正すべきかもしれないメンバ関数の場所を特定できる。
Specifically, the
注釈ノード設定部130は、最終的に、注釈ノード群をリスト化する。このリストには、注釈ノードの内容、注釈ノードが所属するソースファイル名、行番号、桁位置、行テキスト、親ノード名等、注釈ノードの位置を示す情報も含まれることが好ましい。ユーザは、この注釈ノードのリストにより、膨大なソースコードの中から重点的に確認すべき箇所を把握できるため、ソースコードの開発・保守が容易となる。
The annotation
以上、実施例に基づいて、ソースコード処理装置100を説明した。
ソースコード処理装置100は、「第1ASTルール」、「第2ASTルール」、「ソース生成ルール」を用意すれば、さまざまなプログラミング言語で記述されたソースコードを別のプログラミング言語で記述されたソースコードに変換できる。このため、さまざまなプログラミング言語が混在する業務システムにさまざまな解析ツールを適用しやすくなる。ソースコード同士を直接変換するのではなく、ソースコードの論理構造を反映させたAST同士の変換であるため、変換元ソースの論理構造を変換先ソースに反映させやすくなる。
The source
If the source
また、検出条件にしたがってASTから該当箇所を特定し、注釈コードを設定することにより、ソースコードの解析が容易となる。ソースコードのテキスト検索ではなく、ソースコードの論理構造を反映するASTを対象とした検査であるため、膨大なソースコードの中から、コーディングルール違反をしている箇所やコーディングミスの可能性がある箇所を適確に見つけ出しやすくなる。 Further, by identifying the corresponding part from the AST according to the detection condition and setting the annotation code, the source code can be easily analyzed. Since this is not a text search of the source code but an AST that reflects the logical structure of the source code, there is a possibility of coding rule violations or coding mistakes from a huge amount of source code. This makes it easier to find the location accurately.
以上、本発明について実施例をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。 The present invention has been described based on the embodiments. The embodiments are exemplifications, and it will be understood by those skilled in the art that various modifications can be made to combinations of the respective constituent elements and processing processes, and such modifications are within the scope of the present invention. .
以上の実施の形態および変形例から把握される発明のいろいろな態様をすでに特許請求の範囲に記載したものも含むかたちにて以下に例示する。ソースコード検査装置に関連し、以下の発明が認識される。 Various aspects of the invention ascertained from the above embodiments and modifications will be exemplified below, including those already described in the claims. The following inventions are recognized in connection with the source code inspection apparatus.
A1.ソースコードを取得するコード取得部と、
前記ソースコードの構成要素に対応するノードを抽出し、前記ソースコードにおける前記構成要素の配置にしたがって前記ノードを構造化することにより、前記ソースコードの論理構造を前記ノードの集合体により示す構文モデルを生成する構文モデル生成部と、
前記構文モデルにおける各ノードを走査し、前記ソースコードの構成要素についてあらかじめ設定されている検出条件に合致する箇所を特定する検査部と、
前記特定された箇所に注釈を示すノードである注釈ノードを設定する注釈ノード設定部と、
を備えることを特徴とするソースコード検査装置。
A1. A code acquisition unit for acquiring source code;
A syntax model that shows a logical structure of the source code by a collection of nodes by extracting nodes corresponding to the components of the source code and structuring the nodes according to the arrangement of the components in the source code. A syntax model generation unit for generating
An inspection unit that scans each node in the syntax model and identifies a location that matches a detection condition set in advance for the component of the source code;
An annotation node setting unit for setting an annotation node that is a node indicating an annotation at the specified location;
A source code inspection apparatus comprising:
A2.前記検査部は、所定の命名規則に適合しない名称の変数に対応するノードに前記注釈ノードを設定することを特徴とするA1に記載のソースコード検査装置。 A2. The source code inspection apparatus according to A1, wherein the inspection unit sets the annotation node to a node corresponding to a variable whose name does not conform to a predetermined naming rule.
A3.前記検査部は、更に、所定の処理の開始時に記述されるべき構成要素に対応する先端ノードと、前記所定の処理の終了時に記述されるべき構成要素に対応する終端ノードを特定し、先端ノードの数と終端ノードの数が同数となっているかを判定し、
前記注釈ノード設定部は、前記先端ノードの数と前記終端ノードの数が同数となっていないときには、更に、前記先端ノードと前記終端ノードに関するコーディングルールが満たされていない旨を示す注釈ノードを設定することを特徴とするA1または2に記載のソースコード検査装置。
A3. The inspection unit further specifies a leading node corresponding to a component to be described at the start of a predetermined process and a terminal node corresponding to a component to be described at the end of the predetermined process, and the leading node The number of nodes and the number of terminal nodes are the same,
The annotation node setting unit further sets an annotation node indicating that a coding rule relating to the leading node and the terminal node is not satisfied when the number of the leading nodes and the number of the terminal nodes are not the same. The source code inspection apparatus according to A1 or 2, wherein:
A4.前記検査部は、第1のクラスにおいて定義されている第1のメンバ関数が、前記第1のクラスを継承する第2のクラスにおいて定義されている第2のメンバ関数によりオーバーライド(override)されているかを判定し、
前記注釈ノード設定部は、前記第2のメンバ関数が前記第1のメンバ関数をオーバーライドしているとき、前記第2のメンバ関数に対応するノードに前記注釈ノードを設定することを特徴とするA1から3のいずれかに記載のソースコード検査装置。
A4. In the checking unit, a first member function defined in a first class is overridden by a second member function defined in a second class that inherits the first class. Whether or not
The annotation node setting unit sets the annotation node to a node corresponding to the second member function when the second member function overrides the first member function. 4. The source code inspection device according to any one of 3 to 4.
A5.ソースコードを取得する処理と、
前記ソースコードの構成要素に対応するノードを抽出し、前記ソースコードにおける前記構成要素の配置にしたがって前記ノードを構造化することにより、前記ソースコードの論理構造を前記ノードの集合体により示す構文モデルを生成する処理と、
前記構文モデルにおける各ノードを走査し、前記ソースコードの構成要素についてあらかじめ設定されている検出条件に合致する箇所を特定する処理と、
前記特定された箇所に注釈を示すノードである注釈ノードを設定する処理と、
をコンピュータに実行させることを特徴とするソースコード検査プログラム。
A5. Processing to get the source code,
A syntax model that shows a logical structure of the source code by a collection of nodes by extracting nodes corresponding to the components of the source code and structuring the nodes according to the arrangement of the components in the source code. Processing to generate
A process of scanning each node in the syntax model and identifying a location that matches a detection condition set in advance for the constituent elements of the source code;
A process of setting an annotation node that is a node indicating an annotation at the specified location;
A source code inspection program characterized by causing a computer to execute.
100 ソースコード処理装置、 110 UI部、 112 入力部、 114 コード取得部、 116 出力部、 118 コード出力部、 120 データ処理部、 122 第1構文モデル生成部、 124 第2構文モデル生成部、 126 コード生成部、 128 検査部、 130 注釈ノード設定部、 140 データ保持部、 142 第1構文モデル保持部、 144 第2構文モデル保持部、 200 日立ソース、 202 IBMソース、 204 変換元AST、 220 変換先AST。 100 source code processing device, 110 UI unit, 112 input unit, 114 code acquisition unit, 116 output unit, 118 code output unit, 120 data processing unit, 122 first syntax model generation unit, 124 second syntax model generation unit, 126 Code generation unit, 128 checking unit, 130 annotation node setting unit, 140 data holding unit, 142 first syntax model holding unit, 144 second syntax model holding unit, 200 Hitachi source, 202 IBM source, 204 source AST, 220 conversion AST ahead.
Claims (5)
前記第1ソースコードの構成要素に対応するノードを基本ノードとして抽出し、前記第1ソースコードにおける前記構成要素の配置にしたがって前記基本ノードを構造化することにより、前記第1ソースコードの論理構造を前記基本ノードの集合体により示す第1構文モデルを生成する第1構文モデル生成部と、
第2のプログラミング言語において使用可能な構成要素に対応するノードである変換先ノードに前記基本ノードを変換することにより、前記第1ソースコードの論理構造を前記変換先ノードの集合体により示す第2構文モデルを生成する第2構文モデル生成部と、
前記第2構文モデルに含まれる前記変換先ノードとその構造にしたがって、前記第2のプログラミング言語において使用可能な構成要素を配列することにより、前記第2のプログラミング言語で記述されたソースコードとしての第2ソースコードを生成するコード生成部と、
を備えることを特徴とするソースコード変換装置。 A code acquisition unit for acquiring source code described in a first programming language as first source code;
A logical structure of the first source code is obtained by extracting a node corresponding to a component of the first source code as a basic node and structuring the basic node according to an arrangement of the component in the first source code. A first syntax model generation unit for generating a first syntax model indicating the basic node by an aggregate of the basic nodes;
A second that indicates the logical structure of the first source code by a collection of the conversion destination nodes by converting the basic node into a conversion destination node that is a node corresponding to a component usable in the second programming language. A second syntax model generation unit for generating a syntax model;
By arranging the components that can be used in the second programming language according to the transformation destination node and its structure included in the second syntax model, the source code described in the second programming language is used as the source code described in the second programming language. A code generator for generating a second source code;
A source code conversion device comprising:
前記第1ソースコードの構成要素に対応するノードを基本ノードとして抽出し、前記第1ソースコードにおける前記構成要素の配置にしたがって前記基本ノードを構造化することにより、前記第1ソースコードの論理構造を前記基本ノードの集合体により示す第1構文モデルを生成する処理と、
第2のプログラミング言語において使用可能な構成要素に対応するノードである変換先ノードに前記基本ノードを変換することにより、前記第1ソースコードの論理構造を前記変換先ノードの集合体により示す第2構文モデルを生成する処理と、
前記第2構文モデルに含まれる前記変換先ノードとその構造にしたがって、前記第2のプログラミング言語において使用可能な構成要素を配列することにより、前記第2のプログラミング言語で記述されたソースコードとしての第2ソースコードを生成する処理と、
をコンピュータに実行させることを特徴とするソースコード変換プログラム。 A process of acquiring source code described in a first programming language as first source code;
A logical structure of the first source code is obtained by extracting a node corresponding to a component of the first source code as a basic node and structuring the basic node according to an arrangement of the component in the first source code. Generating a first syntax model that represents a set of basic nodes as follows:
A second that indicates the logical structure of the first source code by a collection of the conversion destination nodes by converting the basic node into a conversion destination node that is a node corresponding to a component usable in the second programming language. Processing to generate a syntax model;
By arranging the components that can be used in the second programming language according to the transformation destination node and its structure included in the second syntax model, the source code described in the second programming language is used as the source code described in the second programming language. Processing to generate the second source code;
A source code conversion program for causing a computer to execute.
前記第1ソースコードの構成要素に対応するノードを基本ノードとして抽出し、前記第1ソースコードにおける前記構成要素の配置にしたがって前記基本ノードを構造化することにより、前記第1ソースコードの論理構造を前記基本ノードの集合体により示す第1構文モデルを生成するステップと、
第2のプログラミング言語において使用可能な構成要素に対応するノードである変換先ノードに前記基本ノードを変換することにより、前記第1ソースコードの論理構造を前記変換先ノードの集合体により示す第2構文モデルを生成するステップと、
前記第2構文モデルに含まれる前記変換先ノードとその構造にしたがって、前記第2のプログラミング言語において使用可能な構成要素を配列することにより、前記第2のプログラミング言語で記述されたソースコードとしての第2ソースコードを生成するステップと、
を含むことを特徴とするソースコード変換方法。 Obtaining a source code described in a first programming language as a first source code;
A logical structure of the first source code is obtained by extracting a node corresponding to a component of the first source code as a basic node and structuring the basic node according to an arrangement of the component in the first source code. Generating a first syntax model that represents a set of basic nodes;
A second that indicates the logical structure of the first source code by a collection of the conversion destination nodes by converting the basic node into a conversion destination node that is a node corresponding to a component usable in the second programming language. Generating a syntax model;
By arranging the components that can be used in the second programming language according to the transformation destination node and its structure included in the second syntax model, the source code described in the second programming language is used as the source code described in the second programming language. Generating a second source code;
A source code conversion method comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008318346A JP2010140408A (en) | 2008-12-15 | 2008-12-15 | Source code converting device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008318346A JP2010140408A (en) | 2008-12-15 | 2008-12-15 | Source code converting device |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010140408A true JP2010140408A (en) | 2010-06-24 |
Family
ID=42350478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008318346A Pending JP2010140408A (en) | 2008-12-15 | 2008-12-15 | Source code converting device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010140408A (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012032890A1 (en) * | 2010-09-09 | 2012-03-15 | 株式会社日立製作所 | Source code conversion method and source code conversion program |
WO2012057170A1 (en) * | 2010-10-27 | 2012-05-03 | 株式会社日立製作所 | Method of converting source code and source code conversion program |
JP2014016914A (en) * | 2012-07-11 | 2014-01-30 | Fujitsu Ltd | Extended language specification information providing method, extended language specification information providing program, and compiling device |
CN103617046A (en) * | 2013-12-12 | 2014-03-05 | 用友软件股份有限公司 | Method and device for scanning and extracting resources to be translated in target system source codes |
WO2015141150A1 (en) * | 2014-03-19 | 2015-09-24 | 日本電気株式会社 | Source code generation device, source code generation method, and recording medium |
KR101770292B1 (en) * | 2014-11-27 | 2017-08-22 | 주식회사 엘지씨엔에스 | Computer-executable model reverse engineering method and apparatus performing the same |
KR20180115921A (en) * | 2017-04-14 | 2018-10-24 | 박태영 | Conversion method of programming language |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01175036A (en) * | 1987-12-29 | 1989-07-11 | Fujitsu Ltd | Source selection type conversion system for source converter |
JPH0281230A (en) * | 1988-09-19 | 1990-03-22 | Hitachi Ltd | Syntex analysis and languaging processing system |
JP2007140845A (en) * | 2005-11-17 | 2007-06-07 | Hitachi Ltd | Program management method and program transition assistance apparatus |
JP2008165342A (en) * | 2006-12-27 | 2008-07-17 | Hitachi Software Eng Co Ltd | Source code creating method, device and program |
JP2008250914A (en) * | 2007-03-30 | 2008-10-16 | Canon Software Inc | Program correcting device, method and program |
-
2008
- 2008-12-15 JP JP2008318346A patent/JP2010140408A/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01175036A (en) * | 1987-12-29 | 1989-07-11 | Fujitsu Ltd | Source selection type conversion system for source converter |
JPH0281230A (en) * | 1988-09-19 | 1990-03-22 | Hitachi Ltd | Syntex analysis and languaging processing system |
JP2007140845A (en) * | 2005-11-17 | 2007-06-07 | Hitachi Ltd | Program management method and program transition assistance apparatus |
JP2008165342A (en) * | 2006-12-27 | 2008-07-17 | Hitachi Software Eng Co Ltd | Source code creating method, device and program |
JP2008250914A (en) * | 2007-03-30 | 2008-10-16 | Canon Software Inc | Program correcting device, method and program |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012059026A (en) * | 2010-09-09 | 2012-03-22 | Hitachi Ltd | Source code conversion method and source code conversion program |
WO2012032890A1 (en) * | 2010-09-09 | 2012-03-15 | 株式会社日立製作所 | Source code conversion method and source code conversion program |
US9027002B2 (en) | 2010-10-27 | 2015-05-05 | Hitachi, Ltd. | Method of converting source code and source code conversion program |
WO2012057170A1 (en) * | 2010-10-27 | 2012-05-03 | 株式会社日立製作所 | Method of converting source code and source code conversion program |
CN103140838A (en) * | 2010-10-27 | 2013-06-05 | 株式会社日立制作所 | Method of converting source code and source code conversion program |
CN103140838B (en) * | 2010-10-27 | 2015-06-17 | 株式会社日立制作所 | Method of converting source code |
JP5659238B2 (en) * | 2010-10-27 | 2015-01-28 | 株式会社日立製作所 | Source code conversion method and source code conversion program |
JP2014016914A (en) * | 2012-07-11 | 2014-01-30 | Fujitsu Ltd | Extended language specification information providing method, extended language specification information providing program, and compiling device |
CN103617046A (en) * | 2013-12-12 | 2014-03-05 | 用友软件股份有限公司 | Method and device for scanning and extracting resources to be translated in target system source codes |
CN103617046B (en) * | 2013-12-12 | 2017-05-24 | 用友网络科技股份有限公司 | Method and device for scanning and extracting resources to be translated in target system source codes |
WO2015141150A1 (en) * | 2014-03-19 | 2015-09-24 | 日本電気株式会社 | Source code generation device, source code generation method, and recording medium |
JPWO2015141150A1 (en) * | 2014-03-19 | 2017-04-06 | 日本電気株式会社 | Source code generation apparatus, source code generation method, and recording medium |
US10360006B2 (en) | 2014-03-19 | 2019-07-23 | Nec Corporation | Source code generation device, source code generation method, and recording medium |
KR101770292B1 (en) * | 2014-11-27 | 2017-08-22 | 주식회사 엘지씨엔에스 | Computer-executable model reverse engineering method and apparatus performing the same |
CN107148615A (en) * | 2014-11-27 | 2017-09-08 | 乐金信世股份有限公司 | Computer executable model reverse engineering approach and device |
KR20180115921A (en) * | 2017-04-14 | 2018-10-24 | 박태영 | Conversion method of programming language |
KR101952328B1 (en) * | 2017-04-14 | 2019-02-26 | 박태영 | Conversion method of programming language |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN103092761B (en) | Method and device of recognizing and checking modifying code blocks based on difference information file | |
CN109033843B (en) | Java file dependency analysis method and module for distributed static detection system | |
US20070277163A1 (en) | Method and tool for automatic verification of software protocols | |
US8434062B2 (en) | Enhancing source code debugging and readability using visual symbols | |
US8423971B2 (en) | Generating an application software library | |
US20150026666A1 (en) | Analysis system, analysis method, and computer program product | |
JP2010140408A (en) | Source code converting device | |
JP2010504572A (en) | Generation of transition systems used in model checking | |
CN110543427A (en) | Test case storage method and device, electronic equipment and storage medium | |
Sánchez et al. | Tandem: A taxonomy and a dataset of real-world performance bugs | |
Haitzer et al. | DSL-based support for semi-automated architectural component model abstraction throughout the software lifecycle | |
CN115292058A (en) | Service scene level service topology generation method and device and electronic equipment | |
Liuying et al. | Test selection from UML statecharts | |
JP2010140407A (en) | Source code inspection device | |
Tekin et al. | A graph mining approach for detecting identical design structures in object-oriented design models | |
Samuel et al. | A novel test case design technique using dynamic slicing of UML sequence diagrams | |
Rahman et al. | A DSL for importing models in a requirements management system | |
US9703576B2 (en) | Aspect scoping in a modularity runtime | |
EP2535813B1 (en) | Method and device for generating an alert during an analysis of performance of a computer application | |
Ishio et al. | Mining coding patterns to detect crosscutting concerns in Java programs | |
CN114691197A (en) | Code analysis method and device, electronic equipment and storage medium | |
Zhang et al. | A new semantic annotation approach for software vulnerability source code | |
WO2016085213A1 (en) | Computer-executable model reverse engineering method and apparatus | |
Bisanz | Pattern-based smell detection in TTCN-3 test suites |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110310 |
|
A977 | Report on retrieval |
Effective date: 20121016 Free format text: JAPANESE INTERMEDIATE CODE: A971007 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121113 |
|
A02 | Decision of refusal |
Effective date: 20130312 Free format text: JAPANESE INTERMEDIATE CODE: A02 |