第 5 章 覆盖规则
您可以使用 MTR 或者自定义规则覆盖分发的核心规则。例如,您可以更改规则的匹配条件、工作或提示文本。这可以通过复制原始规则,将其标记为规则覆盖,并进行必要的调整。
您可以通过创建一个带有空 <rule> 元素的 <rule>
覆盖来禁用规则。
5.1. 覆盖一个规则
您可以覆盖内核或自定义规则。
流程
复制包含您要覆盖的规则的 XML 文件到自定义规则目录。
自定义规则可以放置在
<MTR_HOME>/rules
,${user.home}/.mtr/rules/
中,或由--userRulesDirectory
命令行参数指定的目录。编辑 XML 文件,使其只包含您要覆盖的规则的
<rule>
元素。注意新规则集中未被新规则集覆盖的规则会正常运行。
- 确保保留相同的规则和规则集 ID。当您复制原始规则 XML 时,这将确保 ID 相匹配。
-
将
<overrideRules>true</overrideRules>
元素添加到 ruleset 元数据。 更新规则定义。
您可以更改规则定义中的任何内容。新规则覆盖其整个原始规则。
以下规则覆盖示例将 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>
当您运行 MTR 时,该规则会用相同的规则 ID 覆盖原始规则。您可以通过查看 Rule Provider Executions Overview 的内容来验证已使用的新规则。