2.2. 基本的な YAML ルールを作成する
このセクションでは、基本的な MTA YAML ルールを作成する方法を説明します。これは、すでに MTA がインストールされていることを前提としています。インストール手順は、MTA の CLI ガイド を参照してください。
2.2.1. 基本的な YAML ルールのテンプレートを作成する リンクのコピーリンクがクリップボードにコピーされました!
MTA YAML ベースのルールの基本構造は、以下のとおりです。
when(condition) message(message) tag(tags)
when(condition)
message(message)
tag(tags)
手順
以下のように、
/home/<USER>/ディレクトリーに YAML ルールの基本構文を含むファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. 基本的な YAML ルールセットのテンプレートを作成する リンクのコピーリンクがクリップボードにコピーされました!
複数の同じようなルールをグループ化する場合は、それらのファイルをディレクトリーに配置し、そのディレクトリーのルートに ruleset.yaml ファイルを作成することで、それらのルールセットを作成できます。このディレクトリーを、--rules オプションを使用して MTA CLI への入力として渡すと、MTA はディレクトリー内のすべてのファイルを ruleset.yaml ファイルで定義されたルールセットに属するものとして処理します。
手順
--rulesオプションを使用してディレクトリー全体を渡す場合は、ruleset.yamlファイルのテンプレートを作成します。name: <RULESET_NAME> description: <RULESET_DESCRIPTION> labels: - key=val
name: <RULESET_NAME>1 description: <RULESET_DESCRIPTION> labels:2 - key=valCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. YAML ルールを作成する リンクのコピーリンクがクリップボードにコピーされました!
各ルールファイルには、1 つ以上の YAML ルールが含まれます。すべてのルールはメタデータ、条件、アクションで構成されています。
手順
when条件を作成します。YAML ルールの
when条件には、provider、and、orを指定できます。provider条件を作成するプロバイダー条件は、特定の言語プロバイダーの検索クエリーを定義し、プロバイダーの特定のケイパビリティーを呼び出すために使用されます。
条件の一般的な形式は
<provider_name>.<capability>です。条件には、検索の詳細を指定するための内部フィールドもあります。provider条件とその内部フィールドを作成する方法は、使用するプロバイダーと呼び出すケイパビリティーによって異なります。以下の表は、利用可能なプロバイダーとそのケイパビリティーを示しています。作成するルールの目的に合ったプロバイダーとケイパビリティーを選択してください。条件のこの部分には、条件のフィールドはまだ含まれていません。
Expand Provider 機能 説明 javareferenced詳細な検索のために、オプションのコード位置を使用してパターンの参照を検索します。
dependencyアプリケーションに指定された依存関係があるか確認します。
builtinxmlXPath クエリーを使用して XML ファイルを検索します。
jsonJSONPath クエリーを使用して JSON ファイルを検索します。
filecontentRegEx パターンを使用して、通常のファイル内のコンテンツを検索します。
file指定されたパターンに一致する名前を持つファイルを検索します。
hasTagsタグ付けルールを通じてアプリケーション用にタグが作成されているか確認します。
Go
referencedパターンの参照を検索します。
dependencyアプリケーションに指定された依存関係があるか確認します。
以下の例は、
referencedケイパビリティーを使用するjavaプロバイダー条件を示しています。例:
when: java.referenced:
when: java.referenced:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
適切なフィールドを
provider条件に追加します。以下の表は、利用可能なプロバイダー、そのケイパビリティー、フィールドをすべて示しています。選択したプロバイダーとケイパビリティーに属するフィールドを選択してください。一部のフィールドは必須であることに注意してください。
Expand Provider 機能 フィールド 必須 ? 説明 javareferencedpatternはい
RegEx パターン
locationいいえ
ソースコードの場所。サポートされているすべての検索場所のリストについては、以下を参照してください。
dependencynameはい
依存関係の名前
nameregexいいえ
名前と一致する RegEx
upperboundいいえ
一致するバージョン番号の下限
lowerboundいいえ
一致するバージョン番号の上限
builtinxmlxpathはい
XPath クエリー
namespaceいいえ
クエリーの範囲を名前空間に絞るためのマップ
filepathsいいえ
検索範囲を絞るためのオプションのファイルリスト
jsonxpathはい
XPath クエリー
filepathsいいえ
検索範囲を絞るためのオプションのファイルリスト
filecontentpatternはい
コンテンツ内で一致する RegEx パターン
filePatternいいえ
このパターンに一致する名前を持つファイル内のみを検索します。
filepatternはい
このパターンに一致する名前を持つファイルを検索します。
hasTags文字列タグのインラインリストです。タグ形式の詳細は、タグアクション を参照してください。
Goreferencedpatternはい
RegEx パターン
dependencynameはい
依存関係の名前
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.*when: java.referenced: location: PACKAGE pattern: org.jboss.*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ANDまたはOR条件を作成します。and条件は、その子条件が すべて 一致する場合に一致します。次のように、and条件を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow or条件は、その子条件の いずれか が一致する場合に一致します。次のように、or条件を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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
mta-cli analyze --input /home/<USER>/data/ --output /home/<USER>/output/ --rules /home/<USER>/rule.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
/home/<USER>/data/- ソースコードまたはバイナリーのディレクトリー。 -
/home/<USER>/output/- レポート (HTML および YAML) のディレクトリー
-
-
複数のルールファイルを使用するには、それらのルールファイルをディレクトリーに配置し、
ruleset.yamlファイルを追加する必要があります。その後、ディレクトリーは ルールセット として扱われ、--rulesオプションに入力として渡すことができます。
CLI で --target または --source オプションを使用する場合、エンジンはそのターゲットのラベルに一致するルールのみを選択することに注意してください。そのため、ルールにターゲットラベルまたはソースラベルが追加されていることを確認する必要があります。詳細は、予約済みラベル を参照してください。