第5章 ルールのオーバーライド
MTA で (またはカスタムルールでも)、配布されるコアルールをオーバーライドできます。たとえば、ルールに一致する条件、作業、またはヒントテキストを変更できます。これは、元のルールのカスタムコピーを作成し、それをルールオーバーライドとしてマークし、必要な調整を行うことで行われます。これと同じ方法でルールを無効にすることもできます。
5.1. ルールのオーバーライド
次の手順を使用して、ルールをオーバーライドできます。
オーバーライドするルールが含まれる XML ファイルをカスタムの rules ディレクトリーにコピーします。
カスタムルールは、
RHAMT_HOME/rules
、${user.home}/.rhamt/rules/
、または--userRulesDirectory
コマンドライン引数で指定されたディレクトリーのいずれかに配置できます。XML ファイルを編集し、オーバーライドするルールの
<rule>
要素のみを保持します。新しいルールセットでオーバーライドされていない元のルールセットのルールは、通常どおり実行されることに注意してください。
- 同じルールとルールセット ID を保持するようにしてください。元のルール XML をコピーすると、ID が一致します。
-
<overrideRules>true</overrideRules>
エントリーをルールセットメタデータに追加します。 必要に応じてルールを調整します。
ルール定義では、すべてを変更することができます。このルールは元のルール全体をオーバーライドします。
以下は、オーバーライドされたルールの例です。ルールセットメタデータの <overrideRules>true</overrideRules>
要素に注意してください。ルールとルールセット ID は元のものと一致します。このルールのオーバーライドにより、必要な作業が 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"> <metadata> ... <overrideRules>true</overrideRules> </metadata> <rules> <rule id="weblogic-02000" xmlns="http://windup.jboss.org/schema/jboss-ruleset"> <when> <javaclass references="weblogic.utils.StringUtils.{*}"/> </when> <perform> <hint effort="3" category-id="mandatory" title="WebLogic StringUtils Usage"> <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>
<?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">
<metadata>
...
<overrideRules>true</overrideRules>
</metadata>
<rules>
<rule id="weblogic-02000" xmlns="http://windup.jboss.org/schema/jboss-ruleset">
<when>
<javaclass references="weblogic.utils.StringUtils.{*}"/>
</when>
<perform>
<hint effort="3" category-id="mandatory" title="WebLogic StringUtils Usage">
<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>
MTA を実行すると、ルール ID が一致する元のルールの代わりにこのルールが使用されるようになります。Rule Provider Executions Overview の内容を確認して、新規ルールが使用されていることを確認できます。