2.2. 创建基本 YAML 规则


这部分论述了如何创建基本 MTA YAML 规则。假设您已安装了 MTA。有关安装说明,请参阅 MTA CLI 指南

2.2.1. 创建基本 YAML 规则模板

基于 MTA YAML 的规则有以下基本结构:

when(condition)
 message(message)
 tag(tags)
Copy to Clipboard Toggle word wrap

流程

  1. /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>
    Copy to Clipboard Toggle word wrap

2.2.2. 创建基本 YAML 规则集模板

如果要对多个类似的规则进行分组,您可以通过将其文件放在目录中,并在目录的根目录中创建 ruleset.yaml 文件,为它们创建一个规则集。当您使用 --rules 选项将此目录作为输入传递给 MTA CLI 时,MTA 会将该目录中的所有文件视为属于 ruleset.yaml 文件中定义的规则集。

流程

  1. 如果要使用 --rules 选项传递整个目录,请为 ruleset.yaml 文件创建一个模板:

    name: <RULESET_NAME> 
    1
    
    description: <RULESET_DESCRIPTION>
    labels: 
    2
    
      - key=val
    Copy to Clipboard Toggle word wrap
    1
    名称在提供的规则集中必须是唯一的。
    2
    ruleset 标签由属于规则集的所有规则继承。

2.2.3. 创建 YAML 规则

每个规则文件包含一个或多个 YAML 规则。每个规则都包含元数据、条件和操作。

流程

  1. 创建 when 条件。

    YAML 规则的 when 条件可以是 provider

    1. 创建 供应商 条件

      提供程序条件用于定义特定语言提供程序的搜索查询,并调用提供程序的特定功能。

      条件的一般格式为 < provider_name>.<capability>。该条件也具有内部字段来指定搜索的详细信息。创建 供应商 条件及其内部字段的方式取决于您使用的供应商以及您调用的功能。

      下表列出了可用的供应商及其功能。选择适合您要创建的规则用途的供应商及其功能。这个条件部分不包含任何条件的字段。

      Expand
      供应商功能描述

      java

      referenced

      查找带有可选代码位置的模式引用以了解详细搜索

      依赖项

      检查应用程序是否有给定依赖项

      builtin

      xml

      使用 XPath 查询搜索 XML 文件

      json

      使用 JSONPath 查询搜索 JSON 文件

      FileContent

      使用 RegEx 模式搜索常规文件中的内容

      file

      查找名称与指定模式匹配的文件

      hasTags

      通过标记规则检查是否为应用程序创建标签

      Go

      referenced

      查找模式的引用

      依赖项

      检查应用程序是否有给定依赖项

      以下示例显示了使用 引用 功能的 java 供应商条件。

      Example

      when:
        java.referenced:
      Copy to Clipboard Toggle word wrap
  2. 供应商 条件中添加合适的字段。

    下表列出了所有可用的供应商、它们的功能及其字段。选择属于您选择的供应商和功能的字段。请注意,一些字段是必需的。

    Expand
    供应商功能字段必需?描述

    java

    referenced

    pattern

    正则表达式模式

    位置

    源代码位置;请查看以下以了解所有支持的搜索位置列表

    依赖项

    name

    依赖项的名称

    nameregex

    与名称匹配的正则表达式模式

    upperBound

    匹配大于或等于的版本号

    lowerBound

    匹配大于或等于的版本号

    builtin

    xml

    XPath

    XPath 查询

    命名空间

    将查询范围到命名空间的映射

    filepaths

    要缩减搜索的文件可选列表

    json

    XPath

    XPath 查询

    filepaths

    要缩减搜索的文件可选列表

    FileContent

    pattern

    在内容中匹配的正则表达式模式

    filePattern

    仅搜索名称与此模式匹配的文件

    file

    pattern

    查找具有与此模式匹配的文件

    hasTags

    这是字符串标签的内联列表。有关标签格式的详情,请参阅 Tag Action

    Go

    referenced

    pattern

    正则表达式模式

    依赖项

    name

    依赖项的名称

    nameregex

    与名称匹配的正则表达式模式

    upperBound

    匹配大于或等于的版本号

    lowerBound

    匹配大于或等于的版本号

    以下搜索位置可用于范围 java 搜索:

    • CONSTRUCTOR_CALL
    • TYPE
    • 继承
    • METHOD_CALL
    • 注解
    • IMPLEMENTS_TYPE
    • ENUM_CONSTANT
    • RETURN_TYPE
    • IMPORT
    • VARIABLE_DECLARATION

      以下示例显示了搜索软件包引用的规则 的时间 条件。

      Example

      when:
        java.referenced:
          location: PACKAGE
          pattern: org.jboss.*
      Copy to Clipboard Toggle word wrap
  3. 创建 ANDOR 条件

    • 当其 所有子 条件都匹配时,和 条件都匹配。创建 条件,如下所示:

      when:
        and:
        - java.dependency:
            name: junit.junit
            upperbound: 4.12.2
            lowerbound: 4.4.0
        - java.referenced:
            location: IMPORT
            pattern: junit.junit
      Copy to Clipboard Toggle word wrap
    • 当其任何子条件都匹配时, 条件匹配。创建 条件,如下所示:

      when:
        or:
        - java.dependency:
            name: junit.junit
            upperbound: 4.12.2
            lowerbound: 4.4.0
        - java.referenced:
            location: IMPORT
            pattern: junit.junit
      Copy to Clipboard Toggle word wrap

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
    Copy to Clipboard Toggle word wrap

    其中:

    • /home/<USER>/data/ - 源代码或二进制的目录
    • /home/<USER>/output/ - 报告的目录(HTML 和 YAML)
  • 要使用多个规则文件,您需要将它们放在目录中,并添加 ruleset.yaml 文件。然后,该目录被视为 规则集,您可以将其作为输入传递给 --rules 选项。

请注意,如果您要在 CLI 中使用 --target--source 选项,引擎将只选择与该目标标签匹配的规则。因此,请确保已在规则上添加了目标或源标签。如需了解更多详细信息,请参阅 保留标签

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat