预订演示
前页 后页

创建新的代码矿工数据库

Enterprise Architect的代码分析器、智能感知特征及其代码编辑器的搜索工具均使用代码矿工数据库。

代码矿工数据库是通过A所选语言的语法规则解析源代码文件并将生成的抽象语法树存储在读取优化的数据库中而创建的。一个或多个数据库可以组合成一个代码矿工库。

访问

代码分析器窗口

在代码分析器窗口中,单击工具栏中的菜单按钮 ,然后选择菜单选项“创建数据库”。

执行分析器脚本

打开执行分析器的脚本编辑器窗口,选择页面'代码矿工>库',然后点击'创建'按钮。

创建代码矿工数据库对话框

“创建代码矿工数据库”对话框用于启动解析源代码文件以创建代码矿工数据库的过程。在对话框中,您可以指定进程使用的一系列输入,例如源代码文件夹、语言和宏列表文件,以及输出文件名。对话字段在下表中描述。

字段

描述

也见

使用目录

当所有要处理的源文件都在一个目录下时,选择此选项。

选择此选项时,启用“进程子目录”复选框。

使用目录列表

当您的项目源代码位于多个单独的目录中时,请选择此选项。在这种情况下,您使用“源”字段来指定一个文件,该文件包含一个包含要处理的源代码的目录列表。

进程子目录

此复选框在选择“使用目录”选项时启用。选中后,驻留在指定“源”目录的任何子目录中的源代码文件也将被处理。

该字段用于指定包含将被处理以创建代码矿工数据库的源代码文件的目录(或多个目录)。

When the option '使用Directory' is selected, this field is used to specify the根folder in which to search for源code files.

When the option '使用Directory List' is selected, this field is used to specify a user created file containing a list of path names to the directories that contain the源files to be processed.单击Browse.按钮打开一个“文件选择器”对话框,允许您浏览并选择扩展名为“.ssdirlist”的文件。有关详细信息,请参阅下面的目录列表文件部分。

数据库

此字段指定将创建的代码矿工数据库文件的完整路径名。该文件使用文件扩展名“.cdb”。

这是一个下拉列表,您可以在其中指定正在处理的源代码文件中使用的语言。 Enterprise Architect为多种语言提供“内置”支持。 (有用于解析支持的语言的内置语法)。

还有一个选项可以选择“自定义”语言。如果您选择使用自定义语言,则需要创建自己的语法来支持对该语言的解析。选择“自定义”选项时,将显示字段“语法”字段,允许您指定定义自定义语法的文件。

文件扩展名

该字段列出了一些通常与所选语言的源代码文件相关联的文件扩展名。只有文件扩展名与列表中的文件扩展名匹配的文件才会被解析器处理。您可以添加或删除文件扩展名以满足您的需要。

宏列表

When the language selected is 'C++', the 'Macro List' selection field is displayed.宏列表字段允许您指定一个文件,该文件提供解析器在遇到宏时应跳过的宏列表。

对于 C++ 语言,宏给解析器带来了问题,因为它们隐藏了本地语言结构。将宏的名称添加到宏列表文件并更新数据库通常会清除与该宏相关的所有错误。

有关详细信息,请参阅下面的扩展宏列表文件部分。

语法文件

Sparx Systems为下拉选择列表中列出的所有语言开发了语法。

C++、C#、 Java 、XML 以及 MDGTechnology。

还有一个选项可以选择“自定义”语言。开发自定义语言的用户需要指定该语言的语法规则并将其保存到 nBNF 文件中,以便代码矿工可以正确解析用该语言编写的源代码。 Enterprise Architect的语法编辑器专为此目的而设计。

当您选择“自定义”作为语言时,您应该指定您为该语言创建的语法文件,以便代码矿工可以正确解析您的源代码。

The帮助主题语法框架提供了有关编写帮助语法的详细信息。

语法框架

输出窗口

输出窗口显示解析源代码文件的进度。完成后,它还会显示创建的数据库文件和log文件的名称以及遇到的错误数。

编译/停止按钮

“编译”按钮用于启动处理操作。一旦处理开始,此按钮将变为“停止”按钮,允许用户中止操作。

添加按钮

编译数据库后,可以使用“添加”按钮将该数据库添加到代码矿工库。

可以将多个数据库添加在一起以构建一个涵盖许多源代码项目的库。

注记:从代码分析器窗口打开“创建代码矿工数据库”对话框时,不显示“添加”按钮。

目录列表文件

如果您选择指定目录列表文件,则需要使用文件扩展名“.ssdirlist”创建一个简单的文本文件,其中列出了您希望处理的每个目录的完整路径,每行一个路径。例如:

c:\myprojects\project1\tools\scintilla

c:\myprojects\project2\src

d:\mylibs\lib1\src

如果您希望递归处理列出目录中的子目录,请在该路径前加上感叹号,如下所示:

!d:\mylibs\lib1\src

任何以 # 字符开头的行都被视为注释:

# 包括闪烁

c:\myprojects\project1\tools\scintilla

扩展宏列表文件

对于 C++ 语言,宏给语法带来了问题,因为它们隐藏了本地语言结构。解析器不能不对宏执行替换,因为它们通常是有条件地定义的,并且解析器不知道架构。宏列表文件提供了解析器在遇到宏时应跳过的宏列表。

当您为 C++源代码存储库构建代码矿工数据库时,您可能会看到列出的错误。发生错误时,使用错误log查找并检查导致错误的代码行。这几乎总是标识导致语法失败的宏。将该名称添加到宏列表并更新数据库通常会清除与该宏相关的所有错误。

例如,错误log显示此错误:

C:\ea\EA750\SQLAPITester\SQLAPI\include\asa\sqlfuncs.h,行:12,列:18,意外符号','。

经检查,导致错误的代码行是这样的:

FUNC_INFO( 外部, void , _esqlentry_, sqlstop, (SQLCA *))

(还有许多其他类似的行使用宏“FUNC_INFO”。)

因此,我们编辑默认宏列表文件“AtxAflMacros.nbnf”,添加以下行:

"FUNC_INFO" "(" skipBalanced( "(" , ")" ) ")" |

这一行指示解析器在遇到宏"FUNC_INFO"时应用函数skipBalanced( "(" , ")" ),它有两个参数;在这种情况下,它们是左括号和右括号。因此,指示解析器忽略左括号和右括号之间的所有内容。

保存对宏列表文件的更改并重新编译(更新)数据库后,与宏“FUNC_INFO”有关的所有错误都已消除。

了解更多