<< 目次を表示 >> ページ位置: ソースコードの生成と読み込み > コード分析 > コード分析 フレームワーク > コード分析 ライブラリ > コード分析データベースの新規作成 |
Enterprise Architectのコード分析・コードエディタのインテリセンス機能・ファイルの検索機能では、コード分析データベースを利用できます。
コード分析データベースは、選択された言語の文法規則に従ってソースコードファイルを解析し、結果として得られる抽象構文木を読み取りに最適化されたデータベースに格納することで作成されます。 1つまたは複数のデータベースを組み合わせて、コード分析ライブラリを構成できます。
利用手順:
コード分析サブウィンドウ |
コード分析タブで、ツールバーのメニューボタンをクリックし、「データベースの作成」を選択 |
動作解析の設定 |
動作解析の設定の「コード分析」グループの「ライブラリ」で、生成ボタンを押す |
コード分析ライブラリの作成ダイアログ
コード分析データベースの作成ダイアログは、ソースコードファイルを分析してコード分析データベースを作成するために利用します。 ダイアログでは、ソースコードのディレクトリ・プログラム言語・マクロリストファイルなど、プロセスで使用される入力と出力するライブラリファイル名を指定します。 ダイアログ内の項目については、以下の表で説明します。
項目 |
説明 |
ディレクトリを利用 |
処理するすべてのソースファイルが1つのディレクトリに存在する場合は、この項目を選択します。 このオプションを選択すると、チェックボックス「再帰的に処理」が有効になります。 |
ディレクトリ一覧を利用 |
プロジェクトのソースコードが複数の別々のディレクトリに存在する場合は、この項目を選択します。 この場合、「ソース」の欄を利用して、処理対象のソースコードを含むディレクトリのリストを含むファイルを指定します。 |
ソース |
コード分析データベースを作成するために処理されるソースコードファイルを含むディレクトリ(複数可)を指定するために使用します。
「ディレクトリを利用」が選択されている場合、この項目はソースコードファイルを検索する最上位のディレクトリを指定するために利用されます。
「ディレクトリ一覧を利用」が選択されている場合、この項目は、処理するソースファイルを含むディレクトリへのパス名のリストを含むユーザー作成のファイルを指定するために利用されます。 ボタンをクリックすると、ファイルの選択ダイアログが開き、拡張子が「.ssdirlist」のファイルを選択できます。 詳しくは、「ディレクトリ一覧ファイル」の項を参照してください。 |
データベース |
作成されるコード分析データベースファイルのフルパス名を指定します。 ファイル名の拡張子は「.cdb」です。 |
言語 |
処理するソースコードファイルの言語を指定します。 Enterprise Architectが既定で対応している言語がいくつかあり、言語を分析するための文法ルールを保持しています。
また、カスタム言語を選択できます。 カスタム言語を選択した場合には、その言語の分析に対応した独自の文法を作成する必要があります。 カスタム言語を選択すると、「文法ファイル」の欄が表示され、カスタム文法を定義するファイルを指定します。 |
ファイルの拡張子 |
選択した言語のソースコードファイルに一般的に関連付けられているいくつかのファイルの拡張子が表示されます。この項目に一致する拡張子を持つファイルだけが、データベースの作成のために利用されます。必要に応じて、拡張子を追加または削除できます。 |
マクロ一覧 |
選択した言語がC++の場合、「マクロ一覧」が表示されます。 マクロ一覧では、パーサーが無視するマクロのリストを提供するファイルを指定します。
C++言語の場合、マクロの解釈が容易ではなく、パーサーにとって問題となります。 マクロリストファイルにマクロの名前を追加してデータベースを更新すると、そのマクロは処理の対象外となります。
詳細は、後述の「マクロ一覧ファイル」を参照してください。 |
文法ファイル |
Enterprise Architectでは、ドロップダウンリストで選択できる言語の文法ルールを内部に保持しています。
C++・C#・Java・XML・MDGTechnology
カスタム言語を開発する場合には、コード分析ライブラリがその言語で書かれたソースコードを正しく分析できるように、その言語の文法ルールを指定し、nBNFファイルに保存する必要があります。 Enterprise Architectの文法エディタは、この目的のために設計されています。
言語としてカスタムを選択した場合には、その言語で作成した文法ファイルを指定して、コード分析ライブラリが正しくソースコードを解析できるようにしてください。
ヘルプトピックの「コード読み込みの独自定義」では、nBNF文法の書き方について詳しく説明しています。 |
システム出力サブウィンドウ |
システム出力サブウィンドウには、ソースファイルの分析の進捗状況が表示されます。処理が完了すると、データベースファイルの名前とログファイルの情報、および発生したエラーの件数が表示されます。 |
コンパイル/停止 ボタン |
コンパイルボタンは、処理操作を開始するためのボタンです。 処理が開始されると、このボタンは停止ボタンに変わり、ボタンを押すと処理を停止できます。 |
追加ボタン |
データベースがコンパイルされると、追加ボタンを使ってそのデータベースをコード分析ライブラリに追加できます。 複数のデータベースを追加して、多くのソースコードプロジェクトをカバーするライブラリを構築できます。
注意 : コード分析サブウィンドウからこのダイアログを開いた場合、追加ボタンは表示されません。 |
ディレクトリ一覧ファイル
ディレクトリ一覧ファイルを作成する場合は、処理したい各ディレクトリのフルパスを1行に1つずつ記述したテキストファイルを作成し、ファイルの拡張子を「.ssdirlist」にします。 例えば、以下のようになります。
c:\myprojects\project1\tools\scintilla
c:\myprojects\project2\src
d:\mylibs\lib1\src
あるディレクトリ内のサブディレクトリを再帰的に処理したい場合は、パスの前に!マークを付けます。
!d:\mylibs\lib1\src
#文字で始まる行はすべてコメントとして扱われます。
# include scintilla
c:\myprojects\project1\tools\scintilla
C++言語の場合、マクロの解釈が容易ではなく、パーサーにとって問題となります。 マクロは条件付きで定義されていることが多く、パーサーはマクロの置換を行うことができません。 マクロ一覧ファイルは、パーサーがマクロに遭遇したときに無視すべきマクロの一覧を提供します。
C++ソースコードに対してコード分析データベースを作成すると、エラーが表示されることが少なからずあります。 エラーが発生したら、エラーログを使用して、エラーの原因となったコードの行を見つけて調べます。これにより、ほとんどの場合、分析の失敗の原因となっているマクロが特定されます。 その名前をマクロの一覧に追加してデータベースを更新すると、通常、そのマクロに関連するすべてのエラーが解決します。
例えば、エラーログが以下のような内容とします。
C:\ea\EA750\SQLAPITester\SQLAPI\include\asa\sqlfuncs.h, line:12, col:18, Unexpected symbol ','.
調査の結果、エラーの前後の行で、次の行が問題であると推測できました。
FUNC_INFO( extern, void, _esqlentry_, sqlstop, (SQLCA *))
(このマクロ 'FUNC_INFO' は他にも利用されていて、同様に分析エラーになっているとします。)
そこで、マクロ一覧ファイル 'AtxAflMacros.nbnf' を作成し、以下の内容を追加します。
"FUNC_INFO" "(" skipBalanced("(", ")") ")" |
この行は、パーサーがマクロ「FUNC_INFO」に遭遇したときに、skipBalanced("(", ")")という関数を適用するように指示しています。この関数は、2つのパラメータを取りますが、この場合は、開始と終了の括弧です。 この関数は2つのパラメータを取ります。
マクロ一覧ファイルの変更を保存し、データベースを再作成すると、マクロ「FUNC_INFO」に関連するすべてのエラーが解消されます。
参照: