2.2. 创建基本 YAML 规则
本节论述了如何创建基本 MTA YAML 规则。假设您已安装了 MTA。有关安装说明,请参阅 MTA CLI 指南。
2.2.1. 创建基本 YAML 规则模板
基于 MTA YAML 的规则有以下基本结构:
when(condition) message(message) tag(tags)
流程
在
/home/<USER&
gt;/ 目录中,创建一个文件,其中包含 YAML 规则的基本语法,如下所示:- category: mandatory description: | <DESCRIPTION TITLE> <DESCRIPTION TEXT> effort: <EFFORT> labels: - konveyor.io/source=<SOURCE_TECH> - konveyor.io/target=<TARGET_TECH> links: - url: <HYPERLINK> title: <HYPERLINK_TITLE> message: <MESSAGE> tag: - <TAG1> - <TAG2> ruleID: <RULE_ID> when: <CONDITIONS>
2.2.2. 创建基本 YAML 规则集模板
如果要对多个类似的规则进行分组,可以通过将其文件放在一个目录中并在目录 root 中创建 ruleset.yaml
文件来为它们创建一个规则集。当您使用- rules
选项将此目录作为输入传递给 MTA CLI 时,MTA 会将目录中的所有文件视为属于 ruleset.yaml
文件中定义的规则集。
2.2.3. 创建 YAML 规则
每个规则文件包含一个或多个 YAML 规则。每个规则都包含元数据、条件和操作。
流程
创建
when
条件。YAML 规则的
when
条件可以是provider
、和
或或
。创建
供应商
条件provider 条件用于定义对特定语言提供程序的搜索查询,并调用提供程序的特定功能。
条件的一般格式为 <
provider_name>.<capability>
。该条件还具有 inner 字段,用于指定搜索的详细信息。创建供应商
条件及其内部字段的方式取决于您使用的供应商以及您调用的功能。下表列出了可用的提供程序及其功能。选择一个供应商及其功能,以满足您要创建的规则的目的。条件的一部分还没有包含任何条件的字段。
供应商 功能 描述 java
引用
找到模式引用,包括注解,带有可选代码位置,用于详细搜索
依赖项
检查应用程序是否有给定依赖项
builtin
xml
使用 XPath 查询搜索 XML 文件
json
使用 JSONPath 查询搜索 JSON 文件
FileContent
使用 RegEx 模式搜索常规文件中的内容
file
查找名称与给定模式匹配的文件
hasTags
检查是否通过标记规则为应用程序创建标签
go
引用
查找模式引用
依赖项
检查应用程序是否有给定依赖项
以下示例显示了使用
引用
能力的java
供应商条件。Example
when: java.referenced:
为
供应商
条件添加合适的字段。下表列出了所有可用的供应商、其功能及其字段。选择属于您选择的供应商和功能的字段。请注意,一些字段是必须的。
供应商 功能 字段 必需? 描述 java
引用
pattern
是
RegEx pattern
位置
否
源代码位置;请参阅下面所有支持的搜索位置列表
annotated
否
注解及其元素(名称和值)
依赖项
名称
是
依赖项的名称
nameregex
否
与名称匹配的正则表达式模式
upperBound
否
匹配小于或等于的版本号
lowerBound
否
匹配大于或等于的版本号
builtin
xml
XPath
是
XPath 查询
命名空间
否
映射到范围向下查询到命名空间
filepaths
否
用于范围搜索的可选文件列表
json
XPath
是
XPath 查询
filepaths
否
用于范围搜索的可选文件列表
FileContent
pattern
是
在内容中匹配的正则表达式模式
filePattern
否
仅在与此模式匹配的文件中搜索
file
pattern
是
查找与此模式匹配的名称的文件
hasTags
这是字符串标签的内联列表。有关标签格式的详情,请参阅 Rule Actions 中的 Tag Actions。
go
引用
pattern
是
RegEx pattern
依赖项
名称
是
依赖项的名称
nameregex
否
与名称匹配的正则表达式模式
upperBound
否
匹配小于或等于的版本号
lowerBound
否
匹配大于或等于的版本号
以下搜索位置可用于范围
java
搜索:- CONSTRUCTOR_CALL
- TYPE
- 继承
- METHOD_CALL
- 注解
- IMPLEMENTS_TYPE
- ENUM_CONSTANT
- RETURN_TYPE
- IMPORT
VARIABLE_DECLARATION
以下示例显示搜索软件包引用的规则的
when
条件。Example
when: java.referenced: location: PACKAGE pattern: org.jboss.*
创建
AND
或OR
条件当
所有子
条件都匹配时,和 条件都匹配。创建和
条件,如下所示:when: and: - java.dependency: name: junit.junit upperbound: 4.12.2 lowerbound: 4.4.0 - java.referenced: location: IMPORT pattern: junit.junit
当任何子条件都匹配时,
或
条件会匹配。创建或
条件,如下所示:when: or: - java.dependency: name: junit.junit upperbound: 4.12.2 lowerbound: 4.4.0 - java.referenced: location: IMPORT pattern: junit.junit
2.2.4. 使用自定义 YAML 规则运行分析
要运行分析,请在 CLI 中使用-- rules
选项。
流程
要在一条规则文件
/home/<USER>/rule.yaml
中使用规则,请运行以下命令:mta-cli analyze --input /home/<USER>/data/ --output /home/<USER>/output/ --rules /home/<USER>/rule.yaml
其中:
-
/home/<USER>/data/
- 源代码或二进制的目录 -
/home/<USER>/output/
- 报告的目录(HTML 和 YAML)
-
-
要使用多个规则文件,您需要将它们放在目录中并添加
ruleset.yaml
文件。然后,目录被视为 规则集,您可以将其作为输入传递给规则
选项。
请注意,如果您要在 CLI 中使用-- target
或-- source
选项,则引擎将仅选择与该目标标签匹配的规则。因此,请确保您在规则上添加了目标或源标签。如需了解更多详细信息,请参阅 保留标签。