14 リファレンス: カスタム監査ルールのコンテキスト・オブジェクト・メソッド

このリファレンスを使用して、カスタム監査ルールで作成するルール・パック・マネージャ、ルール問題およびルール・レポータのインスタンスを介してアクセスできる機能の詳細を取得します。

監査ルール・クラス 説明

ルール・パック・クラスのメソッド

作成するルール・パック・マネージャ・インスタンスには、ルール・パック・データにアクセスするためのメソッドが用意されています。

ルール問題クラスのメソッド

作成するルール問題インスタンスには、報告された問題のプロパティを設定するためのメソッドが用意されています。

ルール・レポータ・クラスのメソッド

作成するルール・レポータ・インスタンスには、報告された問題を処理するためのメソッドが用意されています。

ルール・パック・クラスのメソッド

ルール・パック・マネージャ・インスタンスは、ルール・パック・データにアクセスするためのメソッドを提供します。

Oracle JAFルール・パック・マネージャには次のメソッドが用意されており、Ruleコンテキスト・オブジェクトから取得したRulePackオブジェクトのインスタンスに対してコールできます。

メソッド 説明
getPackInfo()

ルール・パックのサマリー情報の読取り専用のコピーを含むオブジェクトを返します。

プロパティには、pathprefixtitleversionenabledstatusがあります。

getRuleCustomOptions(string ruleName, string packPrefix)

ルールのカスタム・オプションの読取り専用コピーを含むオブジェクトを返します。つまり、JAFシステム・ルール・オプションではなく、ユーザーにより指定されたオプションです。

どちらの引数もオプションです。packPrefixが省略された場合は、現在のルール・パックとみなされます。ruleNameが省略された場合は、コール元のルールのオプションが返されます。

getRuleCustomOption(string property, string ruleName, string packPrefix)

ルールの指定されたカスタム・オプション・プロパティ値を返します。見つからない場合はnullを返します。

ruleNameおよびpackPrefix引数はオプションです。packPrefixが省略された場合は、現在のルール・パックとみなされます。ruleNameが省略された場合は、コール元のルールのオプション・プロパティが返されます。

getRuleOptions(string ruleName, string prefix)

ルールのオプションの読取り専用コピーを含むオブジェクトを返します。

どちらの引数もオプションです。prefixが省略された場合は、現在のルール・パックと見なされます。ruleNameが省略された場合は、コール元のルールのオプションが返されます。

getRuleOption(string property, string name, string prefix)

ルールの指定されたルール・オプション・プロパティを返します。

引数nameおよびprefixはオプションです。prefixが省略された場合は、現在のルール・パックと見なされます。ruleNameが省略された場合は、コール元のルールのオプション・プロパティが返されます。

getPrefix() ルール・パックの接頭辞である文字列を返します。
setRuleOptions(string ruleName, Object options)

コール元のルール・パック内のルールのオプションを設定します。

rulename引数はオプションです。省略された場合は、コール元のルールのオプションが更新されます。

optionsは、適用するプロパティ/値を含むオブジェクトです。

オプションが正常に適用されている場合はtrueを、それ以外の場合はfalseを返します。

isRuleEnabled(string ruleName, string prefix)

指定されたルールが現在有効な場合、trueを返します。

prefix引数はオプションで、省略された場合は、ルールはコール元のルール・パック内にあるものと見なされます。

isRuleDisabled(string ruleName, string prefix)

指定されたルールが現在無効になっている場合、trueを返します。

prefixはオプションで、省略された場合は、ルールはコール元のルール・パック内にあるものと見なされます。

disableRule(string ruleName)

コール元のルール・パックの指定されたルールを無効にします。

ルールが無効化された(またはすでに無効化されていた)場合はtrueを返します。rulename名が無効であるか、ルールが登録されていない場合はfalseを返します。

enableRule(string ruleName)

コール元のルール・パックの指定されたルールを有効にします。

ルールが有効化された(またはすでに有効化されていた)場合はtrueを返します。rulename名が無効であるか、ルールが登録されていない場合はfalseを返します。

ノート: 現在のリリースでは、以前に(起動時)ロードしたルールのみを再度有効化できます。つまり、なんらかの理由で初期化中にルールが破棄され、そのregister()メソッドが呼び出されていない場合、enableRule()は成功しません。

getRuleCount() コール元のルール・パック内に定義されているルールの数を返します。
getEnabledRuleCount() コール元のルール・パック内で現在有効なルールの数を返します。
getRuleList() コール元のルール・パック内のルール名のリストを返します。
getEnabledRuleList() コール元のルール・パック内で現在有効なルールの名前の配列リストを返します。
getRule() コール元のルール・パック内のルールのインスタンスを返し、エクスポートされたメソッドをコールできるようにします。
getExtension() setExtension()で指定されたルール・パック固有のデータを返します。
setExtension(* data)

getExtension()を使用して取得できるルール・パック固有データを設定します。通常、setExtension()はルール・パックのstartupRPフック・ルールで使用されます。

dataは任意のデータ型で、これを使用してルールに有用な任意のデータ、ライブラリなどを参照できます。

sendMsg(string ruleName, ...data)

コール元と同じパック内の特定のルールのonMsg()メソッドにデータ・メッセージを送信します。

dataは任意の数の引数を表します。これらの引数は、配列としてonMsg()に提示されます:

onMsg(Object sender, *[] data);

ここで、senderは次の形式のオブジェクトです:
{
  sender : <string>, // the sending ruleName
  regType : <string> // the register() type of the calling rule
}

onMsg()によって返された値を返します。

ルールでは、データ・メッセージをそのルール自体に送信できないことに注意してください(競合状態を緩和するため)。

broadcastMsg(string[] ruleNames, ...data)

コール元と同じパックにあるルールのリストのonMsg()メソッドにデータ・メッセージを送信します。

ruleNamesがnullの場合、データは、エクスポートされたonMsg()メソッドを使用して現在有効なすべてのルールにブロードキャストされます。

onMsg()が呼び出されたルールの数を返します。

dataの形式については、sendMsg()を参照してください。

getInfo()
JAFインスタンスに関するその他の情報を、文字列として次のプロパティを持つオブジェクトとして返します。
  • version: "major:minor:patch"としてフォーマットされたバージョン
  • description: JAFインスタンスの説明
  • packageVer: "major:minor:patch"としてフォーマットされた、JAFが構築されたJETコード・ベース
  • platform: JAFインスタンスが起動されたプラットフォーム

ルール問題クラスのメソッド

Issueオブジェクトを作成し、提供されているOracle JAF Issueクラスのメソッドを使用して、レポートされた問題のプロパティを設定できます。

Oracle JAF Issueクラスには、監査ルールの登録済イベント・リスナー関数内で作成するIssueオブジェクトのプロパティの設定に使用できる次のコンストラクタおよびセッター・メソッドが用意されています。

Issueクラスの一般的な使用方法では、コンストラクタ・メソッドをコールして、問題の説明やオプションのメッセージIDなどの詳細を含むIssueインスタンスを作成します:
var myIssue = new context.Issue(msg [, messageID]);

ルールの重大度はルール定義から取得されますが、これはIssue.setSeverity()を使用してルール内でオーバーライドできます。

メソッド 説明
constructor(string msg [, string id])

msg—(オプション)問題の説明である文字列。

id—(オプション)オプションのメッセージIDである文字列。これは監査出力にppp-nnnnとして表示されます。pppはルール・パックの接頭辞で、nnnnはメッセージIDです。

setId(string id)

メッセージIDのID部分を設定します。

id—メッセージ番号の末尾にあるIDである文字列。たとえば、Id1234でルールの接頭辞がABCの場合、メッセージ番号はABC-1234と表示されます。

setPosition(number line, number column, number startIndex, number endIndex)

または

setPosition(Object pos)

レポートされるメッセージまたはJSONに表示される監査対象ファイルの行番号または列番号をオーバーライドします。

line—監査対象データ内の行番号。

column—監査対象データ内の列番号。

startIndex—(オプション)監査対象データの開始位置。

endIndex—(オプション)監査対象データの終了位置。

line/columnにはnullを指定できます。この場合、行と列はJAFによってstartIndexから計算されます。

また、次のように、オブジェクトとして指定することもできます:

issue.setPosition(pos);

ここで、posは次の形式のオブジェクトです:

line—行番号。

column—列番号。

startIndexまたはstart—開始インデックス。

endIndexまたはend—終了インデックス。

posオブジェクトは、ルールによって構築されるか、DomUtils.getAttribPosition()DomUtils.getAttribValuePosition()またはCssUtils.getPosition()からの戻り値です。

setSeverity(string severity) 問題の重大度を設定します(rules.jsonファイルで定義されたルール重大度、または構成プロパティruleModsで変更された重大度をオーバーライドします。infominormajorcriticalblockerのいずれかです。
setMsgKey(string id) 問題のメッセージIDを設定します。これにより、ルール・パックのmsgid.jsonファイル(存在する場合)から取得されたメッセージ・キーがオーバーライドされます。
setMsgEx(Object)

問題に関する拡張メッセージ情報オブジェクトを設定します。これは、出力がproseでない場合にのみ意味があります。これは通常、監査メッセージ文字列から抽出された情報を簡単にアクセスできる形式で提供して、出力オブジェクトを使用する際に監査メッセージを解析する必要をなくすために使用されます。また、ルールが提供する追加の詳細で問題を補強するために使用することもできます。このメソッドによって提供されるオブジェクトは、出力JSONまたはメッセージ・オブジェクトにプロパティmsgExとして追加されます。JAFでは、オブジェクトのコンテンツを使用または検査しません。

setReportedFilePath(string filepath)

指定されたファイル・パスを、問題が報告されるファイル・パスとして設定します。これは、以前に監査されたファイルのルールパック・ライフサイクル・リスナー(例: closedownRP)によって問題が報告される状況で使用するように設計されています。問題が作成されるときにファイルは実際には監査されないため、問題は自動的にファイル・パスを報告できません。この方法を使用すると、ルールパックは報告目的で特定のファイル・パスを問題に関連付けることができます。

ノート: これは通常の監査サイクル・ルールには必要ありません。

ルール・レポータ・クラスのメソッド

Reporterオブジェクトを作成し、提供されているOracle JAF Reporterクラスのメソッドを使用して、レポートされた問題を処理できます。

Oracle JAF Reporterクラスには、監査ルールの登録済イベント・リスナー関数でReporterインスタンスに渡したIssueオブジェクトのレポートの処理に使用できる次のメソッドが用意されています。

Reporterインスタンスの典型的な使用方法は、addIssue()メソッドをコールすることです:
context.reporter.addIssue(myIssue, context);
メソッド 説明
addIssue(Object issue, Object context [, string severity])

レポートするIssueオブジェクトを追加します。

issuenew context.Issue(...)で作成されたIssueオブジェクト。

context—ルールに渡されるコンテキスト・オブジェクト。

severity—(オプション)ルールでルール重大度をオーバーライドできます。informinormajorcriticalblockerのいずれかです。

clearIssues()

現在のファイルのReporterインスタンスに追加されているすべての問題を削除します。

getCount() 現在のファイルのReporterインスタンスに追加されている問題の現在の数を返します。
getFormat() 現在の出力形式(proseまたはjson)を返します。