5 監査の出力の使用

Oracle JAF構成をカスタマイズして、必要に応じて出力を調整できます。

監査の出力について

監査の範囲を指定する以外に、Oracle JAF構成プロパティ(filesexcludesseveritygroupsruleNamesruleModsなど)を使用して、出力の形式をカスタマイズすることもできます。

Oracle JAFには、監査レポートの出力をカスタマイズする次のような方法があります。

  • レポートされる問題の形式をproseFormat構成プロパティを使用してカスタマイズできます。title構成プロパティを使用して、カスタム・レポート・タイトルを追加することもできます。

  • formatおよびoutPath構成プロパティを使用して、出力形式をJSONにするように指定できます。その後、このJSONを処理して、必要な出力を作成できます。たとえば、Webで使用するためにHTMLを生成したり、その他の情報を出力に挿入し、作成されたファイルを電子メールで配信したりすることもできます。

ルールの詳細の表示

監査結果のルール名またはルール・メッセージIDを使用して、ルールの説明を取得できます。

デフォルトではJAF構成ファイルのformatプロパティはproseに設定され、ルール名が監査メッセージと一緒に表示されます。ルール名は、prose出力のメッセージIDの後に付いています。
[71, 41]  <oj-list-view> attribute 'selection' is deprecated! 
Use selected attribute instead. [JET-0080 : oj-html-ojattr-deprecated]
ルール名があれば、ojaf --helpを使用してルールの説明を取得できます。
ojaf --help oj-html-ojattr-deprecated

Rule: oj-html-ojattr-deprecated  Severity: major
JET component deprecated attributes should not be used.

または、メッセージIDがわかっていれば、ルール名とルールの説明を取得できます。

ojaf --help JET-0080

Rule: oj-html-ojattr-deprecated  Severity: major
JET component deprecated attributes should not be used.

ノート:

ルールのヘルプを取得するには、アプリケーションのoraclejafconfig.jsonファイルがあるディレクトリでojaf --helpを実行する必要があります。デフォルトでは、これはアプリケーションのルートです。

監査結果にルール名を表示する方法の詳細は、「監査メッセージでのルール名の表示」を参照してください。

監査メッセージのデフォルト形式の切替え

Oracle JAF構成ファイルのオプション・プロパティformatを使用して、監査メッセージ用のデフォルト表示形式を指定します。

JAF構成ファイルのformatプロパティをproseまたはlineに設定すると、監査メッセージのデフォルト表示を2つのスタイルのいずれかに切り替えることができます。prose形式では監査メッセージがレポート・スタイルで表示されますが、line形式では監査メッセージが単一行にフラットに表示されます。

どちらのスタイルでも、「監査メッセージのプレゼンテーションのカスタマイズ」の説明に従って作成したカスタム・テンプレートを適用して、監査メッセージのプレゼンテーションをカスタマイズできます。

デフォルトの表示スタイルを切り替えるには:
  1. レポート・プレゼンテーションでの監査メッセージの表示を有効にするには、oraclejafconfig.jsonファイルのformatプロパティを編集します。
    "format" : "prose"
  2. 単一行としての監査メッセージの表示を有効にするには、oraclejafconfig.jsonファイルのformatプロパティを編集します。
    "format" : "line"

    Microsoft Visual Studio Codeなど特定の環境では、line形式で、Oracle JAF監査メッセージ内に表示されるファイル・パスのハイパーリンクがサポートされることに注意してください。

監査メッセージでのルール名の表示

Oracle JAFで、レポートされた監査メッセージに対応するルール名を付加することができます。そのルール名を使用するとルールの説明を取得できます。

JAF構成ファイルのformatプロパティがprose (デフォルト)に設定されている場合、ルール名が監査メッセージと一緒に表示されます。ルール名が、prose出力のメッセージIDの後に付加されます。
[71, 41]  <oj-list-view> attribute 'selection' is deprecated! 
Use selected attribute instead. [JET-0080 : oj-html-ojattr-deprecated]
ルール名があれば、ojaf --helpを使用してルールの説明を取得できます。
ojaf --help oj-html-ojattr-deprecated

Rule: oj-html-ojattr-deprecated  Severity: major
JET component deprecated attributes should not be used.

または、メッセージIDがわかっていれば、ルール名とルールの説明を確認できます。

ojaf --help JET-0080

Rule: oj-html-ojattr-deprecated  Severity: major
JET component deprecated attributes should not be used.

ノート:

ルールのヘルプを取得するには、アプリケーションのoraclejafconfig.jsonファイルがあるディレクトリでojaf --helpを実行する必要があります。デフォルトでは、これはアプリケーションのルートです。

ルール名が監査メッセージと一緒に表示されるように構成するには:
  1. ルール名を付加できるようにするには、oraclejafconfig.jsonファイルのformatプロパティを編集して、proseを指定するかプロパティを省略してください(デフォルトでprose出力が指定されます)。
    "format" : "prose"

    構成ファイルの出力形式がjsonに設定されると、ルール名は常に出力に含まれます。構成オプションは必要ないことに注意してください。詳細は、「JSON形式での監査メッセージの出力」を参照してください。

  2. 特定のルールのルール名を付加するには、oraclejafconfig.jsonファイルのoptions.ruleNameプロパティを編集します。
    "options" : {
                  "ruleName" : true,
                  ...
                }
  3. または、すべてのルールのルール名を付加するには、oraclejafconfig.jsonファイルのoptions.verboseプロパティを編集して、冗長出力モードを有効にします。
    "options" : {
                  "verbose" : true,
                  ...
                }

    コマンドラインで監査を実行するたびに、冗長出力を有効にすることもできます。

    ojaf -e ...

監査メッセージのプレゼンテーションのカスタマイズ

Oracle JAF構成ファイルのオプションのプロパティproseFormatおよびlineFormatを使用して、レポートされる監査問題のプレゼンテーションを再定義するテンプレートを定義します。

JAF構成ファイルのformatプロパティがproseまたはlineに設定されている場合は、proseFormatおよびlineFormatの各プロパティを使用して、表示される監査問題の形式を指定するカスタムのプレゼンテーション・テンプレートを定義できます。

prose形式の監査メッセージはAudit forというテキストで始まります。

audit_lineformat.pngの説明が続きます
図audit_lineformat.pngの説明

次は、別のテンプレートを使用したline形式の監査メッセージです。

audit_proseformat.pngの説明が続きます
図audit_proseformat.pngの説明

proseFormatを省略すると、Oracle JAFでは、次のように表示されるデフォルト・テンプレート"%pos1 %s : %m"が使用されます。



次のトークンのいずれかを任意の順序で含めた文字列としてプロパティのテンプレートを指定します。JAFによって、実行時に監査メッセージ出力のトークンが置換されます。

監査メッセージのトークン 置換値
%l 行番号のみ。
%c 列番号のみ。
%pos1 大カッコで囲まれたカンマ区切りの行番号と列番号。たとえば: [46, 25]
%pos2 カッコで囲まれたカンマ区切りの行番号と列番号。たとえば: (46, 25)
%s 処理されるルールの重大度レベル。
%m 監査問題メッセージ全文。
%mid 完全な監査メッセージID。たとえば、JET-1234
%p ルール・セットの接頭辞。たとえば、組込みJETルール・セットではJETです。
%n 監査メッセージ番号のみ。たとえば、1234
%r ルール名。
%f ファイル・パス。
カスタム・プレゼンテーション・テンプレートを定義するには:
  1. 監査メッセージのプレゼンテーションのカスタマイズのサポートを有効にするには、oraclejafconfig.jsonファイルのformatプロパティを編集して、proseまたはlineのいずれかを確実に指定します。formatプロパティを省略すると、デフォルトでprose出力が指定されます。
    "format" : "prose"
    または
    "format" : "line"
  2. 出力形式がproseに指定された場合は、oraclejafconfig.jsonファイルのproseFormatプロパティを編集し、表示される監査問題の形式を指定するカスタムのプレゼンテーション・テンプレートを定義します。proseFormatの値は、前述の表に示したトークンを含む文字列です。
    "proseFormat" : "%pos1 %s : %m [%mid]"

    このサンプルでは、トークンによって監査メッセージの最初の4つの置換値が指定されています。含まれているのは、行/列番号の形式、処理ルールの重大度レベル、コロン、監査問題メッセージ、大カッコで囲まれた完全な監査メッセージIDです。

    このテンプレートに基づく出力は、次の監査メッセージのようになります。
    ** Audit for D:/myapp/public_html/content/demo.html
    [46,25] blocker : <oj-bind-if> 'test' attribute : read-only '[[...]]' expression expected [JET-0163]
  3. 出力形式がlineに指定された場合は、oraclejafconfig.jsonファイルのlineFormatプロパティを編集し、表示される監査問題の形式を指定するカスタムのプレゼンテーション・テンプレートを定義します。lineFormatの値は、前述の表に示したトークンを含む文字列です。
    "lineFormat" : "%s  :  %m [%mid]\n → %f: %l:%c"

    このサンプルでは、トークンによって監査メッセージの最初の4つの置換値が指定されています。含まれているのは、処理ルールの重大度レベル、監査問題メッセージ、改行、右矢印、ファイル・パス、行番号、列番号です。

    このテンプレートに基づく出力は、次の監査メッセージのようになります。
    blocker : <oj-bind-if> 'test' attribute : read-only '[[...]]' expression expected [JET-0163]
    -> D:/myapp/public_html/content/demo.html: 46, 25

監査レポートのタイトルの書式設定

Oracle JAF構成のオプションのtitleプロパティを使用して、監査レポートのタイトルを作成できます。

JAF構成ファイルのformatプロパティがprose (デフォルト)に設定されている場合、titleプロパティを使用して、監査出力に表示するタイトル・ヘッダーの書式を設定できます。タイトル定義には、Oracle JETバージョンなどの値をタイトルに挿入するためにトークンを含めることができます。

監査タイトルのトークン 置換値
$jafdate 現在の日付、「Friday Feb 14, 2020」など。
$jaftime 現在の時刻、「8:05am EDT」など。
$jetver Oracle JETバージョン、「8.1.0」など。
%jafver Oracle JAFバージョン、「2.4.0」など。
%jafconfig 監査で使用されるOracle JAF構成ファイルのファイル・パス、「D:\myproject\oraclejafconfig.json」など。
タイトルを構成するには:
  1. 監査レポートのタイトルを書式設定するには、oraclejafconfig.jsonファイルのformatプロパティを編集して、proseを指定するかプロパティを省略してください(デフォルトでprose出力が指定されます)。
    "format" : "prose"

    構成ファイルの出力形式がjsonに設定されると、レポート・タイトルが常に出力に含まれることに注意してください。詳細は、「JSON形式での監査メッセージの出力」を参照してください。

  2. レポート・タイトルを書式設定するには、oraclejafconfig.jsonファイルのtitleプロパティを編集します。マクロを使用してOracle JETバージョンや日時などの値をタイトル文字列に挿入することができます。
    "title" : [
               "+-----------------------------------------------------------+",
               "|                  Some Title for the Audit                 |",
               "+-----------------------------------------------------------+",
               "JET : $jetver  ($jafdate, $jaftime)\n"
              ]

    このサンプルの指定では、監査レポートで除外されるのは、IDがJET-3020のメッセージと、一連のID (JET-2000JET-2010JET-2020など)のメッセージです。

    +-----------------------------------------------------------+
    |                   Some Title for the Audit                |
    +-----------------------------------------------------------+
    JET : 8.1.0  (Friday Feb 14, 2020, 8:05am EDT)
    

JSON形式での監査メッセージの出力

Oracle JAF構成ファイルのオプション・プロパティformatを使用して、監査の出力形式をJSONドキュメントにするように指定します。次にJSONを処理して、必要な出力を作成します。

JAF構成ファイルのプロパティformatjsonに設定すると、監査の出力をJSON形式で生成できます。JAF構成プロパティoutPathを定義して、要望するディレクトリにJSONドキュメントを出力するようにJAFに指示できます。

JSON出力の構造は次のとおりです。

JSONセクション 説明
reported レポートされた問題オブジェクトの配列を含む各監査ファイルのための配列オブジェクト。
summary 検出された問題の数や処理されたファイルの数などのサマリー・データを含むオブジェクト。
run 実行日時やJETバージョン番号など、実行データを含むオブジェクト。
descriptions reportedセクション内の問題についてルール説明を含むオプションのオブジェクト。次で説明するように、JAF構成プロパティruleDescriptionsを使用して構成する必要があります。
fileset 監査で処理されるファイル・セットを含むオプションのオブジェクト。次で説明するように、JAF構成プロパティaddFileListを使用して構成する必要があります。

これは、レポートされる問題の典型的なJSON出力を一部省略したサンプルです。

{
  "reported": [
                {
                  "file": "/tests/rules/oj-html-binding-attr/binding-foreach_FAIL_2.html",
                  "issues": [
                              {
                                "severity": "minor",
                                "msg": "Use of attribute 'id' is meaningless for binding element <oj-bind-for-each>",
                                "msgId": "JET-0015",
                                "position": {
                                              "row": 14,
                                              "col": 12,
                                              "start": 467,
                                              "end": 482
                                            },
                                "rule": "oj-html-binding-attr"
                              }
                           ]
                },
                . . .
              ],
  "summary":  {
                "severities": {
                               "blocker": 0,
                               "severity": 0,
                               "major": 0,
                               "minor": 0,
                               "info": 1
                             },
                "issues": 1,
                "issueFiles": 1,
                "errorFiles": 0,
                "parseErrors": 0,
                "errors": 0,
                "warnings": 1,
                "asserts": 0,
                "files": 1,
                "urls": 0,
                "rulesActive": 64,
                "rulesFired": 41,
                "hooksFired": 15
              },
  "run": {
           "date": "Tues, 14 April 2020 15:52:39 GMT",
           "jetversion": "8.1.0",
           "title" : "Testing",
           "config": "d:\\runAudit\\testing_config.json"
         }
}
出力形式としてJSONを指定するには:
  1. 監査レポートのタイトルを書式設定するには、oraclejafconfig.jsonファイルのformatプロパティを編集してjsonを指定します。
    "format" : "json"
  2. オプションで、カスタムのルール説明をJSON出力に組み込むには、oraclejafconfig.jsonファイルのruleDescriptionプロパティを編集し、値をshortまたはlongに設定します。
    
    "descriptions": {
          "JET-0290": {
                        "long": "...a rule long description.",
                      },
          "JET-3172": {
                        "long": "...a rule long description.",
                      },
          . . .
          }

    このプロパティには、noneallshortまたはlongを指定できます。これによって、出力JSONドキュメントにdescriptionsセクションが追加されます。

  3. オプションで、JSONドキュメントに含めるタイトルを書式設定するには、oraclejafconfig.jsonファイルのtitleプロパティを編集します。
    "title" : [
               "+-----------------------------------------------------------+",
               "|                  Some Title for the Audit                 |",
               "+-----------------------------------------------------------+",
               "JET : $jetver  ($jafdate, $jaftime)\n"
              ]

    マクロを使用してOracle JETバージョンや日時などの値をタイトル文字列に挿入することができます。詳細は、「監査レポートのタイトルの書式設定」を参照してください。

  4. オプションで、JSONドキュメントの出力パスを指定するには、oraclejafconfig.jsonファイルのoutPathプロパティを編集します。
    "outPath" : "myfolder/myreport.json"

    または、outPathを省略し、出力をファイルにリダイレクトできます。これにより、JAFによってstdoutに書き込まれる他の情報もリダイレクトされます。

  5. オプションで、ファイル・セット・リストをJSONドキュメントに付加するには、oraclejafconfig.jsonファイルのaddFileListプロパティを編集します。
    "addFileList" : true

    このオプション・プロパティを使用すると、追加のJSONセクションfilesetがフル・パス名文字列の配列としてJSONドキュメントに現れます。これを使用すると監査されたファイル・セット全体にアクセスできるため、出力JSONからカスタム・レポートを作成するときに役立ちます。