第 5 章 覆盖规则


您可以使用 MTR 或者自定义规则覆盖分发的核心规则。例如,您可以更改规则的匹配条件、工作或提示文本。这可以通过复制原始规则,将其标记为规则覆盖,并进行必要的调整。

您可以通过创建一个带有空 <rule> 元素的 <rule> 覆盖来禁用规则。

5.1. 覆盖一个规则

您可以覆盖内核或自定义规则。

流程

  1. 复制包含您要覆盖的规则的 XML 文件到自定义规则目录。

    自定义规则可以放置在 <MTR_HOME>/rules, ${user.home}/.mtr/rules/ 中,或由 --userRulesDirectory 命令行参数指定的目录。

  2. 编辑 XML 文件,使其只包含您要覆盖的规则的 <rule> 元素。

    注意

    新规则集中未被新规则集覆盖的规则会正常运行。

  3. 确保保留相同的规则和规则集 ID。当您复制原始规则 XML 时,这将确保 ID 相匹配。
  4. <overrideRules>true</overrideRules> 元素添加到 ruleset 元数据。
  5. 更新规则定义。

    您可以更改规则定义中的任何内容。新规则覆盖其整个原始规则。

以下规则覆盖示例将 weblogic 规则集中的 weblogic-02000 规则 的工作量1 改为 3

规则覆盖定义示例

<?xml version="1.0"?>
<ruleset id="weblogic"
    xmlns="http://windup.jboss.org/schema/jboss-ruleset"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd"> 1
    <metadata>
        ...
        <overrideRules>true</overrideRules> 2
    </metadata>
    <rules>
        <rule id="weblogic-02000" xmlns="http://windup.jboss.org/schema/jboss-ruleset"> 3
            <when>
                <javaclass references="weblogic.utils.StringUtils.{*}"/>
            </when>
            <perform>
                <hint effort="3" category-id="mandatory" title="WebLogic StringUtils Usage"> 4
                    <message>Replace with the StringUtils class from Apache Commons.</message>
                    <link href="https://commons.apache.org/proper/commons-lang/" title="Apache Commons Lang"/>
                    <tag>weblogic</tag>
                </hint>
            </perform>
        </rule>
    </rules>
</ruleset>

1
确保 ruleset id 与原始 ruleset id 匹配。
2
<overrideRules>true</overrideRules> 添加到 <metadata> 部分。
3
确保 rule id 匹配原始的 rule id
4
更新的 effort

当您运行 MTR 时,该规则会用相同的规则 ID 覆盖原始规则。您可以通过查看 Rule Provider Executions Overview 的内容来验证已使用的新规则。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.