3.3. XML 规则语法
3.3.1. <when>
语法
在一个规则的 when
部分中允许的条件需要扩展 GraphOperation,当前包括对 Java 类、XML 文件、项目和文件内容的评估。因为在基于 Java 的规则附加组件后对 XML 规则建模,因此会提供到 JavaDocs 链接到相关 Java 类的链接,以便更好地了解它们的行为。
完整的 XML 规则模式位于:http://windup.jboss.org/schema/windup-jboss-ruleset.xsd.
以下小节描述了更多常见的 XML when
规则条件。
- <javaclass> 条件语法
- <xmlfile> 条件语法
- <project> 条件语法
- <filecontent> 条件语法
- <file> 条件语法
- <has-hint> 条件语法
- <has-classification> 条件语法
- <graph-query> 条件语法
- <dependency> 条件语法
默认情况下,如果提供了对于一个 when
规则条件时,则必须满足规则匹配的所有条件。
3.3.1.1. <javaclass> 语法
3.3.1.1.1. 概述
使用 <javaclass>
元素查找导入、方法、变量声明、注释、类实施和其他与 Java 类相关的项目。要更好地了解 <javaclass>
条件,请参阅 JavaClass 类的 JavaDoc。
以下是测试特定于 WebLogic 的 Apache XML 软件包的规则示例:
<rule id="weblogic-03000"> <when> <javaclass references="weblogic.apache.xml.{*}" /> </when> <perform> <hint title="WebLogic Specific Apache XML Package" effort="1" category-id="mandatory"> <message> Code using this package should be replaced with code using the org.apache.xml package from [Apache Xerces](http://xerces.apache.org/). </message> </hint> </perform> </rule>
3.3.1.1.2. 构造 <javaclass> 元素
3.3.1.1.2.1. <javaclass> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
参考 | CLASS_NAME | 要匹配的软件包或类名称。可以使用的通配符。此属性是必需的。 注意
出于性能原因,在启动引用时不应该使用通配符。例如,使用 references="weblogic.apache.xml.{*}" |
matchesSource | 字符串 | 完全匹配的确切正则表达式。这可用于区分硬编码的字符串。此属性是必需的。 matchesSource="log4j.logger" |
as | VARIABLE_NAME |
分配到该规则的变量名称,以便它可以在以后的处理中用作参考。请参见以下的 as="MyEjbRule" |
from | VARIABLE_NAME |
使用之前由其 from="MyEjbRule" |
in | PATH_FILTER | 过滤与此正则表达式匹配的输入文件(正则表达式)命名模式。可以使用的通配符。 in="{*}File1" |
3.3.1.1.2.2. <javaclass> 子元素
子元素 | 描述 |
---|---|
<location> | 在 Java 类中找到参考的位置。位置可以参考注解、字段和变量声明、导入和方法。有关有效值的完整列表,请查看 TypeReferenceLocation 的 JavaDoc 。 <location>IMPORT</location> |
<annotation-literal> | 匹配注解中的字面值。
以下示例匹配 <javaclass references="org.package.MyAnnotation"> <location>ANNOTATION</location> <annotation-literal name="myvalue" pattern="test"/> </javaclass>
请注意,在这种情况下, |
<annotation-type> | 匹配特定注解类型。您可以提供与注解元素匹配的子条件。
以下示例将匹配 <javaclass references="java.util.Calendar"> <location>FIELD_DECLARATION</location> <annotation-type pattern="org.package.MyAnnotation"> <annotation-literal name="myvalue" pattern="test"/> </annotation-type> </javaclass> |
<annotation-list> | 匹配注解中数组中的项目。如果没有指定数组的索引,则只在条件应用到数组中的所有项时才匹配。您可以提供与这个元素匹配的子条件。
以下示例将匹配 <javaclass references="org.package.MyAnnotation" > <location>ANNOTATION</location> <annotation-list name="mylist"> <annotation-literal pattern="two"/> </annotation-list> </javaclass>
请注意,在这种情况下, |
3.3.1.2. <xmlfile> 语法
3.3.1.2.1. 概述
使用 <xmlfile>
元素在 XML 文件中找到信息。要更好地了解 <xmlfile>
条件,请参阅 XmlFile 类的 JavaDoc。
以下是一个测试 XML 文件的示例:
<rule id="<UNIQUE_RULE_ID>"> <when> <xmlfile matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']"> <namespace prefix="w" uri="http://java.sun.com/xml/ns/javaee"/> </xmlfile> </when> <perform> <hint title="Title for Hint from XML"> <message>Container Auth</message> </hint> <xslt description="Example XSLT Conversion" extension="-converted-example.xml" template="/exampleconversion.xsl"/> </perform> </rule>
3.3.1.2.2. 构建一个 <xmlfile> 元素
3.3.1.2.2.1. <javaclass> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
matches | XPATH | 在一个 XML 文件条件上匹配 matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']" |
xpathResultMatch | XPATH_RESULT_STRING | 返回匹配指定正则表达式的结果 <xmlfile matches="//foo/text()" xpathResultMatch="Text from foo."/> |
as | VARIABLE_NAME |
分配到该规则的变量名称,以便它可以在以后的处理中用作参考。请参见以下的 as="MyEjbRule" |
in | PATH_FILTER | 过滤与此正则表达式匹配的输入文件(正则表达式)命名模式。可以使用的通配符。 in="{*}File1" |
from | VARIABLE_NAME |
使用之前由其 from="MyEjbRule" |
public-id | PUBLIC_ID | DTD public-id 正则表达式。 public-id="public" |
3.3.1.2.2.2. <xmlfile> matches
自定义函数
matches
属性可以使用几个内置自定义 XPath 功能,该功能可能具有有用的副作用,例如对规则变量堆栈设置匹配值。
功能 | 描述 |
---|---|
| 针对字符串匹配 XPath 表达式,可能包含 MTR 参数化占位符。 matches="windup:matches(//foo/@class, '{javaclassname}')"
这将匹配所有 |
3.3.1.2.2.3. <xmlfile> 子元素
子元素 | 描述 |
---|---|
<namespace> |
XML 文件中引用的命名空间。此元素包含两个可选属性: <namespace prefix="abc" uri="http://maven.apache.org/POM/4.0.0"/> |
3.3.1.3. <project> 语法
3.3.1.3.1. 概述
使用 <project>
元素查询 Maven POM 文件以获取项目特征。要更好地了解 <project>
条件,请参阅 Project 类的 JavaDoc。
以下是一个规则的示例,该规则将检查 2.0.0.Final 和 2.2.0.Final 之间的 JUnit 依赖项版本。
<rule id="UNIQUE_RULE_ID"> <when> <project> <artifact groupId="junit" artifactId="junit" fromVersion="2.0.0.Final" toVersion="2.2.0.Final"/> </project> </when> <perform> <lineitem message="The project uses junit with the version between 2.0.0.Final and 2.2.0.Final"/> </perform> </rule>
3.3.1.3.2. 构建 <project> 元素
3.3.1.3.2.1. <project> 元素属性
<project>
元素用于与项目的 Maven POM 文件匹配。您可以使用此条件来查询项目的依赖项。它本身没有任何属性。
3.3.1.3.2.2. <project> 子元素
子元素 | 描述 |
---|---|
<artifact> |
|
3.3.1.3.2.3. <artifact> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
groupId | PROJECT_GROUP_ID |
匹配依赖项的项目 |
artifactId | PROJECT_ARTIFACT_ID |
匹配依赖项的项目 |
fromVersion | FROM_VERSION |
指定工件的低版本边界。例如 |
toVersion | TO_VERSION |
指定工件的高边界。例如 |
可以验证 POM 文件中的元素,该文件包含规则正在搜索的工件。这可以通过使用可选的 <location>
元素来实现。以下示例显示了在 POM 文件的 <plugins>
元素中搜索工件的规则。
有效的位置列表如下:
- DEPENDENCY_MANAGEMENT
- DEPENDENCIES
- PLUGIN_MANAGEMENT
- PLUGINS
- PARENT
3.3.1.4. <filecontent> 语法
3.3.1.4.1. 概述
使用 <filecontent>
元素在文件中查找字符串或文本,例如: Properties 文件中的一行。要更好地了解 <filecontent>
条件,请参阅 FileContent 类的 JavaDoc。
3.3.1.4.2. 构建 <filecontent> 元素
3.3.1.4.2.1. <filecontent> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
pattern | 字符串 | 将文件内容与提供的参数化字符串匹配。此属性是必需的。 |
filename | 字符串 | 将文件名与提供的参数化字符串匹配。 |
as | VARIABLE_NAME |
分配到该规则的变量名称,以便它可以在以后的处理中用作参考。请参见以下的 as="MyEjbRule" |
from | VARIABLE_NAME |
使用之前由其 from="MyEjbRule" |
3.3.1.5. <file> 语法
3.3.1.5.1. 概述
使用 <file>
元素查找具有特定名称的文件是否存在,例如: ibm-webservices-ext.xmi
文件。要更好地了解 <file>
条件,请参阅 File 类的 JavaDoc。
3.3.1.5.2. 构造 <file> 元素
3.3.1.5.2.1. <javaclass> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
filename | 字符串 | 将文件名与提供的参数化字符串匹配。此属性是必需的。 |
as | VARIABLE_NAME |
分配到该规则的变量名称,以便它可以在以后的处理中用作参考。请参见以下的 as="MyEjbRule" |
from | VARIABLE_NAME |
使用之前由其 Example: from="MyEjbRule" |
3.3.1.6. <has-hint> 语法
3.3.1.6.1. 概述
使用 <has-hint>
元素测试某个文件或行是否已关联了 hint。它主要用于防止存在提示时触发,或者在没有其他条件时为默认执行实施规则。要更好地了解 <has-hint>
条件,请参阅 HasHint 类的 JavaDoc。
以下是一条规则,它检查是否存在用于 IBM JMS 目的地消息的提示,如果不包含它。
<rule id="websphere-jms-eap7-03000"> <when> <javaclass references="{package}.{prefix}{type}Message" /> </when> <perform> <iteration> <when> <not> <has-hint /> </not> </when> <perform> <hint title="IBM JMS destination message" effort="1" category-id="mandatory"> <message> JMS `{package}.{prefix}{type}Message` messages represent the actual data passed through JMS destinations. This reference should be replaced with the Java EE standard API `javax.jms.{type}Message`. </message> <link href="https://docs.oracle.com/javaee/7/tutorial/jms-concepts003.htm#sthref2271" title="Java EE 7 JMS Tutorial - Message API" /> <tag>jms</tag> <tag>websphere</tag> </hint> </perform> </iteration> </perform> <where param="type"> <matches pattern="(Text|Stream|Object|Map|Bytes)?" /> </where> <where param="prefix"> <matches pattern="(JMS|MQe|MQ)" /> </where> <where param="package"> <matches pattern="com.ibm(\..*)?\.jms" /> </where> </rule>
3.3.1.6.2. 构造 <has-hint>
<has-hint>
元素用于判断文件或行是否存在提示。它没有任何子元素。
3.3.1.6.2.1. <artifact> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
message | 字符串 | 可选参数允许您将提示与提供的消息字符串匹配。 |
3.3.1.7. <has-classification> 语法
3.3.1.7.1. 概述
使用 <has-classification>
元素测试文件或行是否具有分类。它主要用于防止 classification 已存在时触发,或者在没有其他条件时为默认执行实施规则。要更好地了解 <has-classification>
条件,请参阅 HasClassification 类的 JavaDoc。
3.3.1.7.2. 构造 <has-classification>
has-classification
元素用于判断是否存在指定的分类。它没有任何子元素。
3.3.1.7.2.1. <has-classification> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
title | 字符串 | 与分类匹配的可选标题。 |
3.3.1.8. <graph-query> 语法
3.3.1.8.1. 概述
使用 <graph-query>
元素搜索生成的任何元素图表。这个元素主要用于搜索特定的存档。要更好地了解 <graph-query>
条件,请参阅 QueryHandler 类的 JavaDoc。
以下是一个规则示例,用于测试来确定是否找到了任何 ehcache
软件包。
<rule id="embedded-cache-libraries-01000"> <when> <graph-query discriminator="JarArchiveModel"> <property name="fileName" searchType="regex">.*ehcache.*\.jar$</property> </graph-query> </when> <perform> <classification title="Caching - Ehcache embedded library" category-id="cloud-mandatory" effort="5"> <description> The application embeds an Ehcache library. Cloud readiness issue as potential state information that is not persisted to a backing service. </description> </classification> <technology-tag level="INFORMATIONAL">Ehcache (embedded)</technology-tag> </perform> </rule>
3.3.1.8.2. 构造一个 <graph-query>
3.3.1.8.2.1. <artifact> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
discriminator | MODEL_TYPE |
用于搜索的模态类型这可以是任何有效的模型,但建议使用 |
as | VARIABLE_NAME |
分配到该规则的变量名称,以便它可以在以后的处理中用作参考。请参见以下的 as="MyEjbRule" |
from | VARIABLE_NAME |
使用之前由其 from="MyEjbRule" |
3.3.1.8.2.2. <graph-query> 属性
属性名称 | 类型 | 描述 |
---|---|---|
name | 字符串 |
在所选模型中要匹配的属性名称。当使用任何基于文件的模型时,建议在 |
type | property-type |
定义预期的属性类型,可以是 |
searchType | property-search-type |
定义如何匹配条件。如果设置为 |
3.3.1.9. <dependency> 语法
3.3.1.9.1. 概述
使用 <dependency>
元素搜索在应用程序的 POM 文件中定义的依赖项,以确定目标运行时是否支持它们。
以下是一个规则,它可检查属于 org.springframework.boot
组的所有工件(最多为 1.6.0)的规则。
<rule id="springboot-00001"> <!-- rule condition, when it could be fired --> <when> <dependency groupId="org.springframework.boot" artifactId="{*}" toVersion="1.6.0" /> </when> <!-- rule operation, what to do if it is fired --> <perform> <hint title="Unsupported version of Spring Boot" effort="3" category-id="mandatory"> <message>Spring Boot has to be updated to Spring Boot 2.0 before being able to be migrated to a version supported by Red Hat Runtimes</message> <link href="https://access.redhat.com/articles/3349341" title="RHOAR Spring Boot Supported Configurations" /> <link href="https://access.redhat.com/articles/3348731" title="RHOAR Component Details Overview" /> <link href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide" title="Spring Boot 2.0 Migration Guide" /> </hint> </perform> </rule>
3.3.2. <perform>
语法
在规则的 perform
部分可用的操作包括应用资源分类,以及迁移步骤的线提示、迁移信息的链接和项目行报告。因为在基于 Java 的规则附加组件后对 XML 规则建模,因此会提供到 JavaDocs 链接到相关 Java 类的链接,以便更好地了解它们的行为。
您可以查看 完整的 XML 规则模式。
以下小节描述了比较常见的 XML 规则执行操作。
3.3.2.1. <classification> 语法
3.3.2.1.1. 概述
<classification>
元素用于识别或分类与规则匹配的应用程序资源。它提供报告中显示的标题、工作量级别,还可提供有关如何迁移此资源分类的其他信息的链接。要更好地了解 <classification>
条件,请参阅 Classification 类的 JavaDoc。
以下是将资源分类为 WebLogic EAR 应用部署描述符文件的规则示例。
<rule id="XmlWebLogicRules_10vvyf"> <when> <xmlfile as="default" matches="/*[local-name()='weblogic-application']"></xmlfile> </when> <perform> <iteration> <classification title="Weblogic EAR Application Descriptor" effort="3"/> </iteration> </perform> </rule>
3.3.2.1.2. <has-classification> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
title | 字符串 | 给此资源的标题。此属性是必需的。 title="JBoss Seam Components" |
effort | BYTE | 分配给此资源的工作量程度。 effort="2" |
category-id | 字符串 |
对 category-id="mandatory" |
的 | VARIABLE_NAME | 为所给的引用创建新分类。 of="MySeamRule" |
3.3.2.1.3. <classification> 子元素
子元素 | 描述 |
---|---|
<link> | 为其他信息提供链接 URI 和文本标题。 <classification title="Websphere Startup Service" effort="4"> <link href="http://docs.oracle.com/javaee/6/api/javax/ejb/Singleton.html" title="EJB3.1 Singleton Bean"/> <link href="http://docs.oracle.com/javaee/6/api/javax/ejb/Startup.html" title="EJB3.1 Startup Bean"/> </classification> |
<tag> | 为分类提供额外的自定义信息。 <tag>Seam3</tag> |
<description> | 此资源的描述。 <description>JBoss Seam components must be replaced</description> |
3.3.2.2. <link> 语法
3.3.2.2.1. 概述
<link>
元素用于分类或提示,以提供信息内容的链接。要更好地了解 <link>
条件,请参阅 Link 类的 JavaDoc。
以下是创建其他信息链接的规则示例。
<rule id="SeamToCDIRules_2fmb"> <when> <javaclass references="org.jboss.seam.{*}" as="default"/> </when> <perform> <iteration> <classification title="SEAM Component" effort="1"> <link href="http://www.seamframework.org/Seam3/Seam2ToSeam3MigrationNotes" title="Seam 2 to Seam 3 Migration Notes"/> <link href="http://docs.jboss.org/weld/reference/latest/en-US/html/example.html" title="JSF Web Application Example"/> <link href="http://docs.jboss.org/weld/reference/latest/en-US/html/contexts.html" title="JBoss Context Documentation"/> <link href="http://www.andygibson.net/blog/tutorial/cdi-conversations-part-2/" title="CDI Conversations Blog Post"/> </classification> </iteration> </perform> </rule>
3.3.2.2.2. <javaclass> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
href | URI | 所引用链接的 URI。 href="https://access.redhat.com/articles/1249423" |
title | 字符串 | 链接的标题。 title="Migrate WebLogic Proprietary Servlet Annotations" |
3.3.2.3. <hint> 语法
3.3.2.3.1. 概述
<hint>
原始提供了有关如何迁移代码部分的提示或内联信息。要更好地了解 <hint>
条件,请参阅 Hint 类的 JavaDoc。
以下是一个测试 XML 文件的示例:
<rule id="WebLogicWebServiceRules_8jyqn"> <when> <javaclass references="weblogic.wsee.connection.transport.http.HttpTransportInfo.setUsername({*})" as="default"> <location>METHOD</location> </javaclass> </when> <perform> <iteration> <hint title="Proprietary web-service" category-id="mandatory" effort="3"> <message>Replace proprietary web-service authentication with JAX-WS standards.</message> <link href="http://java-x.blogspot.com/2009/03/invoking-web-services-through-proxy.html" title="JAX-WS Proxy Password Example"/> </hint> </iteration> </perform> </rule>
3.3.2.3.2. <hint> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
title | 字符串 | 使用指定字符串替换此提示。此属性是必需的。 title="JBoss Seam Component Hint" |
category-id | 字符串 |
对 category-id="mandatory" |
in | VARIABLE_NAME | 在由给定变量解析的 FileLocationModel 中创建一个新的 Hint。 in="Foo" |
effort | BYTE | 分配给此资源的工作量程度。 effort="2" |
3.3.2.3.3. <hint> 子元素
子元素 | 描述 |
---|---|
<message> | 描述迁移提示的消息。 <message>EJB 2.0 is deprecated</message> |
<link> | 识别或分类信息内容的链接。 <link href="http://docs.oracle.com/javaee/6/api/" title="Java Platform, Enterprise Edition 6 API Specification" /> |
<tag> |
为这个 <tag>Needs review</tag> |
<quickfix> | 包含在满足规则条件时,MTR 插件使用的信息来执行快速修复。 <quickfix name="slink-qf" type="REPLACE"> <replacement>h:link</replacement> <search>s:link</search> </quickfix> |
3.3.2.4. <xslt> 语法
3.3.2.4.1. 概述
<xslt>
元素指定了如何转换 XML 文件。要更好地了解 <xslt>
条件,请参阅 XSLTTransformation 类的 JavaDoc。
以下是定义 XSLT 操作的规则示例。
<rule id="XmlWebLogicRules_6bcvk"> <when> <xmlfile as="default" matches="/weblogic-ejb-jar"/> </when> <perform> <iteration> <classification title="Weblogic EJB XML" effort="3"/> <xslt title="JBoss EJB Descriptor (Windup-Generated)" template="transformations/xslt/weblogic-ejb-to-jboss.xsl" extension="-jboss.xml"/> </iteration> </perform> </rule>
3.3.2.4.2. <xslt> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
title | 字符串 | 设置报告中此 XSLTTransformation 的标题。此属性是必需的。 title="XSLT Transformed Output" |
的 | 字符串 | 为给定参考创建新转换。 of="testVariable_instance" |
extension | 字符串 | 设置此 XSLTTransformation 的扩展。此属性是必需的。 extension="-result.html" |
模板 | 字符串 | 设置 XSL 模板。此属性是必需的。 template="simpleXSLT.xsl" |
effort | BYTE | 转型所需的工作量水平。 |
3.3.2.4.3. <xslt> 子元素
子元素 | 描述 |
---|---|
<xslt-parameter> | 指定 XSLTTransformation 参数作为属性值对 <xslt-parameter property="title" value="EJB Transformation"/> |
3.3.2.5. <lineitem> 语法
3.3.2.5.1. 概述
<lineitem>
元素对应用程序提供常规的迁移要求,例如需要替换弃用的库,或需要解决潜在的类加载问题。此信息显示在项目或应用程序概览页面中。要更好地了解 <lineitem>
条件,请参阅 LineItem 类的 JavaDoc。
以下是创建 lineitem 消息的规则示例。
<rule id="weblogic_servlet_annotation_1000"> <when> <javaclass references="weblogic.servlet.annotation.WLServlet" as="default"> <location>ANNOTATION</location> </javaclass> </when> <perform> <hint effort="1"> <message>Replace the proprietary WebLogic @WLServlet annotation with the Java EE 6 standard @WebServlet annotation.</message> <link href="https://access.redhat.com/articles/1249423" title="Migrate WebLogic Proprietary Servlet Annotations" /> <lineitem message="Proprietary WebLogic @WLServlet annotation found in file."/> </hint> </perform> </rule>
3.3.2.5.2. <lineitem> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
message | 字符串 | 一个 lineitem 信息。 message="Proprietary code found." |
3.3.2.6. <iteration> 语法
3.3.2.6.1. 概述
<iteration>
元素指定迭代规则中定义的隐式或显式变量。要更好地了解 <iteration>
条件,请参阅 Iteration 类的 JavaDoc。
以下是执行迭代的规则示例。
<rule id="jboss-eap5-xml-19000"> <when> <xmlfile as="jboss-app" matches="/jboss-app"/> <xmlfile as="jboss-app-no-DTD" matches="/jboss-app" public-id=""/> </when> <perform> <iteration over="jboss-app"> <classification title="JBoss application Descriptor" effort="5"/> </iteration> <iteration over="jboss-app-no-DTD"> <classification title="JBoss application descriptor with missing DTD" effort="5"/> </iteration> <iteration over="jboss-app-no-DTD"> <xslt title="JBoss application descriptor - JBoss 5 (Windup-generated)" template="transformations/xslt/jboss-app-to-jboss5.xsl" extension="-jboss5.xml"/> </iteration> </perform> </rule>
3.3.2.6.2. <iteration> 元素属性
属性名称 | 类型 | 描述 |
---|---|---|
over | VARIABLE_NAME | 迭代此 VARIABLE_NAME 标识的条件。 over="jboss-app" |
3.3.2.6.3. <iteration> 子元素
子元素 | 描述 |
---|---|
<iteration> |
子元素包括 |
3.3.3. <where>
语法
您可以定义用于指定在 XML 规则的其他元素中使用的匹配模式的参数。这有助于简化复杂匹配表达式的模式。
使用 <where>
元素来定义参数。使用 param
属性指定参数名,使用 <matches>
元素提供特征。然后可以使用 {<PARAM_NAME>}
语法在规则定义中引用此参数。
您可以查看 完整的 XML 规则模式。
以下的示例规则定义了一个名为 subpackage
的参数,它指定 (activeio|activemq)
的特征。
<rule id="generic-catchall-00600"> <when> <javaclass references="org.apache.{subpackage}.{*}"> </javaclass> </when> <perform> ... </perform> <where param="subpackage"> <matches pattern="(activeio|activemq)" /> </where> </rule>
由 subpackage
定义的特征然后会在 <javaclass>
references
属性中别替换。这会导致规则与 org.apache.activeio.*
和 org.apache.activemq.*
软件包匹配。