3.3. XML ルール構文


3.3.1. <when> 構文

ルールの when で許可される条件は、GraphOperation を拡張する必要があり、現在、Java クラス、XML ファイル、プロジェクト、およびファイルコンテンツの評価が含まれます。XML ルールは Java ベースのルールアドオンに基づいてモデル化されているため、その動作をより深く理解できるように、関連する Java クラスの JavaDocs へのリンクが提供されています。

完全な 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> syntax

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> 要素属性
属性名タイプ説明

references

CLASS_NAME

一致するパッケージまたはクラス名。ワイルドカード文字を使用できます。この属性は必須です。

注記

パフォーマンス上の理由から、ワイルドカード文字を使用して参照を開始しないでください。たとえば、{web}.apache.xml.{*} の代わりに weblogic.apache.xml.{*} を使用します。

references="weblogic.apache.xml.{*}"

matchesSource

STRING

一致する正確な正規表現。これは、ハードコーディングされた文字列を区別する場合に便利です。この属性は必須です。

matchesSource="log4j.logger"

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME として識別される前の検索からのフィルタリングされた結果から検索クエリーを開始します。

from="MyEjbRule"

in

PATH_FILTER

この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターします。ワイルドカード文字を使用できます。

in="{*}File1"
3.3.1.1.2.2. <javaclass> 子要素
子要素説明

<location>

参照が Java クラスで見つかった場所。場所は、アノテーション、フィールドおよび変数宣言、インポート、およびメソッドを参照できます。有効な値の完全なリストは、TypeReferenceLocation の JavaDoc を参照してください。

<location>IMPORT</location>

<annotation-literal>

アノテーション内のリテラル値に一致します。

以下の例は @MyAnnotation(myvalue="test") で一致します。

<javaclass references="org.package.MyAnnotation">
    <location>ANNOTATION</location>
    <annotation-literal name="myvalue" pattern="test"/>
</javaclass>

この場合、<javaclass> はアノテーション (@MyAnnotation) を参照します。そのため、最上位アノテーションフィルター <annotation-literal>name 属性を指定する必要があります。アノテーションが付いたクラスを参照する <javaclass> が参照される場合、使用される最上位アノテーションフィルターは <annotation-type> になります。

<annotation-type>

特定のアノテーションタイプで一致します。アノテーション要素に対して照合されるサブ条件を指定できます。

以下の例は、@MyAnnotation(myvalue="test") アノテーションが付けられた Calendar フィールド宣言で一致します。

<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>

アノテーション内の配列の項目で一致します。配列インデックスが指定されていない場合は、配列内の任意のアイテムに適用されると条件が一致します。この要素と照合するサブ条件を指定できます。

以下の例は @MyAnnotation(mylist={"one","two"}) で一致しています。

<javaclass references="org.package.MyAnnotation" >
    <location>ANNOTATION</location>
    <annotation-list name="mylist">
        <annotation-literal pattern="two"/>
    </annotation-list>
</javaclass>

この場合、<javaclass> はアノテーション (@MyAnnotation) を参照します。そのため、最上位アノテーションフィルター <annotation-list>name 属性を指定する必要があります。アノテーションが付いたクラスを参照する <javaclass> が参照される場合、使用される最上位アノテーションフィルターは <annotation-type> になります。

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. <xmlfile> 要素属性
属性名タイプ説明

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

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

as="MyEjbRule"

in

PATH_FILTER

この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターを設定するのに使用されます。ワイルドカード文字を使用できます。

in="{*}File1"

from

VARIABLE_NAME

as VARIABLE_NAME として識別される前の検索からのフィルタリングされた結果から検索クエリーを開始します。

from="MyEjbRule"

public-id

PUBLIC_ID

DTD public-id 正規表現。

public-id="public"
3.3.1.2.2.2. <xmlfile> がカスタム関数と 一致 します。

matches 属性は、ルール変数スタックに一致した値の設定など、有用な影響を及ぼす可能性のある組み込みのカスタム XPath 関数をいくつか使用できます。

機能説明

windup:matches()

XPath 式を文字列と照合します。MTR パラメーター化プレースホルダーが含まれている可能性があります。

matches="windup:matches(//foo/@class, '{javaclassname}')"

これは、すべての <foo/> 要素と class 属性に一致し、それぞれの反復についてその値を javaclassname パラメーターに保存します。

3.3.1.2.2.3. <xmlfile> 子要素
子要素説明

<namespace>

XML ファイルで参照される名前空間。この要素には、prefixuri の 2 つの任意の属性が含まれます。

<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>

プロジェクトの依存関係に対してクエリーするために <project> 内で使用されるサブ条件。<artifact> 要素属性は以下で説明されています。

3.3.1.3.2.3. <artifact> 要素属性
属性名タイプ説明

groupId

PROJECT_GROUP_ID

依存関係の <groupId> プロジェクトで一致します。

artifactId

PROJECT_ARTIFACT_ID

依存関係の <artifactId> プロジェクトで一致します。

fromVersion

FROM_VERSION

アーティファクトの下位バージョンバインドを指定します。たとえば 2.0.0.Final です。

toVersion

TO_VERSION

アーティファクトの上位バージョンバインドを指定します。たとえば 2.2.0.Final です。

ルールが検索するアーティファクトを含む 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

String

指定されたパラメーター化された文字列に対してファイルの内容を一致させます。この属性は必須です。

filename

String

提供されるパラメーター化された文字列に対してファイル名を一致させます。

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

as="MyEjbRule"

from

VARIABLE_NAME

as 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. <file> 要素属性
属性名タイプ説明

filename

String

提供されるパラメーター化された文字列に対してファイル名を一致させます。この属性は必須です。

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME として識別される前の検索からのフィルタリングされた結果から検索クエリーを開始します。

以下に例を示します。

from="MyEjbRule"

3.3.1.6. <has-hint> 構文

3.3.1.6.1. 概要

<has-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. <has-hint> 要素属性
属性名タイプ説明

message

String

ヒントを提供されたメッセージ文字列と照合できるようにする任意の引数。

3.3.1.7. <has-classification> 構文

3.3.1.7.1. 概要

<has-classification> 要素を使用して、ファイルまたは行に分類があるかどうかをテストします。これは主に、分類がすでに存在する場合に起動を防止するため、また他の条件が適用されない場合のデフォルト実行のルールを実装するために使用されます。<has-classification> 条件のより詳細な理解は、HasClassification クラスの JavaDoc を参照してください。

3.3.1.7.2. <has-classification> の作成

has-classification 要素は、指定された分類が存在するかどうかを判断するために使用されます。子要素はありません。

3.3.1.7.2.1. <has-classification> 要素属性
属性名タイプ説明

title

String

分類と照合する任意のタイトル。

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. <graph-query> 要素属性
属性名タイプ説明

discriminator

MODEL_TYPE

検索に使用するモデルのタイプ。これは任意の有効なモデルに指定できます。ただし、アーカイブの調査には JarArchiveModel を使用することが推奨されます。この属性は必須です。

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME として識別される前の検索からのフィルタリングされた結果から検索クエリーを開始します。

from="MyEjbRule"
3.3.1.8.2.2. <graph-query> プロパティー
プロパティー名タイプ説明

name

String

選択したモデル内で照合する属性の名前。ファイルベースのモデルを使用する場合は、fileName と一致することが推奨されます。この属性は必須です。

type

property-type

予想されるプロパティーの型 (STRING または BOOLEAN のいずれか) を定義します。

searchType

property-search-type

条件の一致方法を定義します。equals に設定された場合は、完全に一致する必要があります。regex を使用すると、正規表現を使用できます。

3.3.1.9. <dependency> 構文

3.3.1.9.1. 概要

<dependency> 要素を使用して、アプリケーションの POM ファイル内で定義された依存関係を検索し、ターゲットランタイムでサポートされるかどうかを判別します。

以下は、1.6.0 までのバージョンがある org.springframework.boot グループに属するすべてのアーティファクトを確認するルールの例です。

<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 セクションで利用可能な操作には、アプリケーションリソースの分類、移行手順のインラインヒント、移行情報へのリンク、およびプロジェクトラインレポートレポートが含まれます。XML ルールは Java ベースのルールアドオンに基づいてモデル化されているため、その動作をより深く理解できるように、関連する Java クラスの JavaDocs へのリンクが提供されています。

完全な 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. <classification> 要素属性
属性名タイプ説明

title

STRING

このリソースに指定されたタイトル。この属性は必須です。

title="JBoss Seam Components"

effort

BYTE

このリソースに割り当てられた作業量レベル。

effort="2"

category-id

STRING

MTR_HOME/rules/migration-core/core.windup.categories.xml で定義されているカテゴリーへの参照。デフォルトのカテゴリーは mandatoryoptionalpotentialinformation です。

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.3. <hint> 構文

3.3.2.3.1. 概要

<hint> 要素は、コードのセクションの移行方法に関するヒントまたはインライン情報を提供するために使用されます。<hint> アクションについてよく理解するには、Hint クラスの JavaDoc を参照してください。

以下は、ヒントを作成するルールの例です。

<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

STRING

指定された文字列を使用してこのヒントを入力します。この属性は必須です。

title="JBoss Seam Component Hint"

category-id

STRING

MTR_HOME/rules/migration-core/core.windup.categories.xml で定義されているカテゴリーへの参照。デフォルトのカテゴリーは mandatoryoptionalpotentialinformation です。

category-id="mandatory"

in

VARIABLE_NAME

指定された変数によって解決される FileLocationModel に新しいヒントを作成します。

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>

この hint のカスタムタグを定義します。

<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

STRING

レポート内のこの XSLTTransformation のタイトルを設定します。この属性は必須です。

title="XSLT Transformed Output"

/

STRING

指定の参照の変換を新たに作成します。

of="testVariable_instance"

extension

STRING

この XSLTTransformation のエクステンションを設定します。この属性は必須です。

extension="-result.html"

template

STRING

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 を参照してください。

以下は、行項目メッセージを作成するルールの例です。

<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

STRING

行項目メッセージ。

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>

子要素には、when 条件と、アクションの iterationclassificationhintxsltlineitem、および otherwise が含まれます。

3.3.3. <where> 構文

XML ルールの他の要素で使用する、一致するパターンを指定するパラメーターを定義できます。これにより、複雑なマッチング式のパターンを単純化できます。

<where> 要素を使用してパラメーターを定義します。param 属性を使用してパラメーター名を指定し、<matches> 要素を使用してパターンを指定します。このパラメーターは、構文 {<PARAM_NAME>} を使用して、ルール定義の他の場所で参照できます。

完全な XML ルールスキーマ を表示できます。

以下のルール例は、(activeio|activemq) パターンを指定する subpackage という名前のパラメーターを定義します。

<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.* パッケージで一致します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.