2.2. 基本的な YAML ルールを作成する


このセクションでは、基本的な MTA YAML ルールを作成する方法を説明します。これは、すでに MTA がインストールされていることを前提としています。インストール手順は、MTA CLI ガイド を参照してください。

2.2.1. 基本的な YAML ルールのテンプレートを作成する

MTA YAML ベースのルールの基本構造は、以下のとおりです。

when(condition)
 message(message)
 tag(tags)

手順

  1. 以下のように、/home/<USER>/ ディレクトリーに YAML ルールの基本構文を含むファイルを作成します。

    - category: mandatory
      description: |
       <DESCRIPTION TITLE>
       <DESCRIPTION TEXT>
      effort: <EFFORT>
      labels:
      - konveyor.io/source=<SOURCE_TECH>
      - konveyor.io/target=<TARGET_TECH>
      links:
     - url: <HYPERLINK>
       title: <HYPERLINK_TITLE>
      message: <MESSAGE>
      tag:
      - <TAG1>
      - <TAG2>
      ruleID: <RULE_ID>
      when:
       <CONDITIONS>

2.2.2. 基本的な YAML ルールセットのテンプレートを作成する

複数の同じようなルールをグループ化する場合は、それらのファイルをディレクトリーに配置し、そのディレクトリーのルートに ruleset.yaml ファイルを作成することで、それらのルールセットを作成できます。このディレクトリーを、--rules オプションを使用して MTA CLI への入力として渡すと、MTA はディレクトリー内のすべてのファイルを ruleset.yaml ファイルで定義されたルールセットに属するものとして処理します。

手順

  1. --rules オプションを使用してディレクトリー全体を渡す場合は、ruleset.yaml ファイルのテンプレートを作成します。

    name: <RULESET_NAME> 1
    description: <RULESET_DESCRIPTION>
    labels: 2
      - key=val
    1
    名前は、指定されたルールセット内で一意である必要があります。
    2
    ルールセットのラベルは、そのルールセットに属するすべてのルールに継承されます。

2.2.3. YAML ルールを作成する

各ルールファイルには、1 つ以上の YAML ルールが含まれます。すべてのルールはメタデータ、条件、アクションで構成されています。

手順

  1. when 条件を作成します。

    YAML ルールの when 条件には、providerandor を指定できます。

    1. provider 条件を作成する

      プロバイダー条件は、特定の言語プロバイダーの検索クエリーを定義し、プロバイダーの特定のケイパビリティーを呼び出すために使用されます。

      条件の一般的な形式は <provider_name>.<capability> です。条件には、検索の詳細を指定するための内部フィールドもあります。provider 条件とその内部フィールドを作成する方法は、使用するプロバイダーと呼び出すケイパビリティーによって異なります。

      以下の表は、利用可能なプロバイダーとそのケイパビリティーを示しています。作成するルールの目的に合ったプロバイダーとケイパビリティーを選択してください。条件のこの部分には、条件のフィールドはまだ含まれていません。

      プロバイダー機能説明

      java

      referenced

      詳細な検索の場合は、オプションのコード位置を指定して、アノテーションを含むパターンの参照を検索します。

      dependency

      アプリケーションに指定された依存関係があるか確認します。

      builtin

      xml

      XPath クエリーを使用して XML ファイルを検索します。

      json

      JSONPath クエリーを使用して JSON ファイルを検索します。

      filecontent

      RegEx パターンを使用して、通常のファイル内のコンテンツを検索します。

      file

      指定されたパターンに一致する名前を持つファイルを検索します。

      hasTags

      タグ付けルールを通じてアプリケーション用にタグが作成されているか確認します。

      Go

      referenced

      パターンの参照を検索します。

      dependency

      アプリケーションに指定された依存関係があるか確認します。

      以下の例は、referenced ケイパビリティーを使用する java プロバイダー条件を示しています。

      例:

      when:
        java.referenced:
  2. 適切なフィールドを provider 条件に追加します。

    以下の表は、利用可能なプロバイダー、そのケイパビリティー、フィールドをすべて示しています。選択したプロバイダーとケイパビリティーに属するフィールドを選択してください。一部のフィールドは必須であることに注意してください。

    プロバイダー機能Field必須 ?説明

    java

    referenced

    pattern

    はい

    RegEx パターン

    location

    いいえ

    ソースコードの場所。サポートされているすべての検索場所のリストは、以下を参照してください。

    annotated

    いいえ

    アノテーションとその要素 (名前と値)

    dependency

    name

    はい

    依存関係の名前

    nameregex

    いいえ

    名前と一致する RegEx

    upperbound

    いいえ

    一致するバージョン番号の下限

    lowerbound

    いいえ

    一致するバージョン番号の上限

    builtin

    xml

    xpath

    はい

    XPath クエリー

    namespace

    いいえ

    クエリーの範囲を名前空間に絞るためのマップ

    filepaths

    いいえ

    検索範囲を絞るためのオプションのファイルリスト

    json

    xpath

    はい

    XPath クエリー

    filepaths

    いいえ

    検索範囲を絞るためのオプションのファイルリスト

    filecontent

    pattern

    はい

    コンテンツ内で一致する RegEx パターン

    filePattern

    いいえ

    このパターンに一致する名前を持つファイル内のみを検索します。

    file

    pattern

    はい

    このパターンに一致する名前を持つファイルを検索します。

    hasTags

    文字列タグのインラインリストです。タグ形式の詳細は、ルールアクションタグアクション を参照してください。

    Go

    referenced

    pattern

    はい

    RegEx パターン

    dependency

    name

    はい

    依存関係の名前

    nameregex

    いいえ

    名前と一致する RegEx

    upperbound

    いいえ

    一致するバージョン番号の下限

    lowerbound

    いいえ

    一致するバージョン番号の上限

    次の検索場所を使用して、java 検索の範囲を絞ることができます。

    • CONSTRUCTOR_CALL
    • TYPE
    • INHERITANCE
    • METHOD_CALL
    • ANNOTATION
    • IMPLEMENTS_TYPE
    • ENUM_CONSTANT
    • RETURN_TYPE
    • IMPORT
    • VARIABLE_DECLARATION

      以下の例は、パッケージの参照を検索するルールの when 条件を示しています。

      例:

      when:
        java.referenced:
          location: PACKAGE
          pattern: org.jboss.*
  3. AND または OR 条件を作成します。

    • and 条件は、その子条件が すべて 一致する場合に一致します。次のように、and 条件を作成します。

      when:
        and:
        - java.dependency:
            name: junit.junit
            upperbound: 4.12.2
            lowerbound: 4.4.0
        - java.referenced:
            location: IMPORT
            pattern: junit.junit
    • or 条件は、その子条件の いずれか が一致する場合に一致します。次のように、or 条件を作成します。

      when:
        or:
        - java.dependency:
            name: junit.junit
            upperbound: 4.12.2
            lowerbound: 4.4.0
        - java.referenced:
            location: IMPORT
            pattern: junit.junit

2.2.4. カスタム YAML ルールを使用して分析を実行する

分析を実行するには、CLI で --rules オプションを使用します。

手順

  • 単一のルールファイル (/home/<USER>/rule.yaml) 内のルールを使用するには、次のコマンドを実行します。

    mta-cli analyze --input /home/<USER>/data/ --output /home/<USER>/output/ --rules /home/<USER>/rule.yaml

    ここでは、以下のようになります。

    • /home/<USER>/data/ - ソースコードまたはバイナリーのディレクトリー。
    • /home/<USER>/output/ - レポート (HTML および YAML) のディレクトリー
  • 複数のルールファイルを使用するには、それらのルールファイルをディレクトリーに配置し、ruleset.yaml ファイルを追加する必要があります。その後、ディレクトリーは ルールセット として扱われ、--rules オプションに入力として渡すことができます。

CLI で --target または --source オプションを使用する場合、エンジンはそのターゲットのラベルに一致するルールのみを選択することに注意してください。そのため、ルールにターゲットラベルまたはソースラベルが追加されていることを確認する必要があります。詳細は、予約済みラベル を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.