4 監査の微調整

Oracle JAF構成をカスタマイズし、ルール、ルール・グループまたは特定のメッセージIDを無効にすることで、監査対象を絞り込むことができます。監査対象をきめ細かく制御するために、ソース・ファイルにOracle JAFコメントを追加することもできます。

監査ルールの重大度レベルの制限

Oracle JAF構成のオプションのgroupsプロパティを使用して、監査結果を目的のルール重大度レベルに制限します。このプロパティを省略すると、検出されたすべての問題がレポートされます。

severityプロパティによって、監査問題のレポートを制限するルール重大度レベルを指定します。デフォルトでは、Oracle JAFで定義されている重大度は、優先度が高い順に、blockercriticalmajorminorおよびinfoで、説明は次のとおりです。

ノート:

組織がこのリスト以外の重大度レベルに基づいて標準化する方を選ぶ場合、oraclejafconfig.jsonファイルのsevMapプロパティを編集することで、独自の重大度レベルを使用してこれらのレベルを再定義できます。また、ルール(組込みJETルール・セットのルールなど)にはデフォルトの重大度レベルがありますが、別の重大度レベルにマップできます。「監査ルールの重大度レベルの変更」を参照してください。

重大度レベル 説明
blocker 本番環境でのアプリケーションの動作に影響する可能性が高いバグ。コードをすぐに修正する必要があります。
critical 本番環境でアプリケーションの動作に影響を与える確率が低いバグ、またはセキュリティ上の欠陥につながる問題のいずれか。コードをすぐに確認する必要があります。
major 開発者の生産性に大きな影響を与える可能性のある品質の欠陥。たとえば、コードの一部の公開、重複ブロックまたは未使用パラメータです。
minor 開発者の生産性に若干影響を与える可能性のある品質の欠陥。たとえば、行が長すぎないようにしたり、switch文に少なくとも3個のケースを指定したりする必要があります。
info バグでも品質の欠陥でもない検出結果。
ルールの重大度フィルタを指定したり、カスタム重大度レベルをマップするには:
  1. 文字列として重大度フィルタを設定するには、oraclejafconfig.jsonファイルのseverityプロパティを編集します。
    "severity" : "critical",

    比較演算子>>=<および<=を重大度レベルの前に指定できます。たとえば、次の場合は、重大度がminor、major、criticalおよびblockerレベルの問題が表示されます。

    "severity" : ">info",

    これは次のように記述することもできます。

    "severity" : ">=minor",
  2. リストとして重大度フィルタを設定するには、oraclejafconfig.jsonファイルのseverityプロパティを編集します。
    "severity" : ["critical", "blocker"],

監査ルールの重大度レベルの変更

Oracle JAF構成プロパティruleModsseverityルール・プロパティを使用して監査ルールのデフォルトの重大度レベルを再マップしたり、構成プロパティsevMapを使用してデフォルトの重大度レベルを組織で使用する重大度レベルで置き換えます。

ruleMods構成プロパティを使用して、JETの組込みルールなど、構成済のルール・パックで定義されている監査ルールに割り当てられている重大度レベルをオーバーライドできます。また、組織がOracle JAFによって提供される重大度レベル以外のものに基づいて標準化する方を選ぶ場合、sevMapプロパティにユーザー定義のレベルを指定して、デフォルトの重大度レベルを置き換えられます。重大度レベルの詳細は、「監査ルールの重大度レベルの制限」を参照してください。
監査ルールの重大度レベルをカスタマイズするには:
  1. 個々の監査ルールに割り当てられている重大度レベルを再定義するには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、ルールのルール・パック接頭辞(JETはJET組込みルールの接頭辞)を指定し、severityサブプロパティに必要な値を設定します。
    "ruleMods" : {
                   "JET" : {
                             "oj-html-ojattr" : {"severity": "critical"},
                             "oj-html-lib" : {"severity": "major"}
                           }
                 }

    このサンプルは、組込みルールoj-html-ojattrを重大度レベルcriticalとして再分類し、組込みルールoj-hmtl-libを重大度レベルmajorとして再分類します。指定できるデフォルトの重大度レベルは、制限のない順に、infominormajorcriticalblockerです。

  2. 個々の監査ルール・メッセージの重大度レベルを再定義するには、oraclejafconfig.jsonファイルのsevMapプロパティを編集し、sevMsgサブプロパティを指定します。
    "sevMap" : {
                "sevMsg" : {
                             "JET-xxxx", "minor",
                              ...
                            }
                }

    重大度レベル・セットもユーザー定義レベルに再定義される場合(次のsevSetサブプロパティを参照)は、新しい重大度レベルをsevMsgで使用できます。

    "sevMap" : {
                "sevMsg" : {
                              "JET-xxxx", "sev4",
                              ...
                           },
                "sevSet" : {
                              // "sev4" defined here, see below
                           }
               }
  3. デフォルトの重大度レベル・セット全体を再定義するには、oraclejafconfig.jsonファイルのsevMapプロパティを編集し、sevSetサブプロパティを指定します。
    
    "sevMap" : {
                 "sevSet" : {
                              "blocker" :  "sev1",
                              "critical" : "sev2" 
                              "major" :    "sev3"
                              "minor" :    "sev4"
                              "info" ;     "sev5"
                            }
               }

    sevSetを使用して、使用される重大度レベルの数を減らすこともできます。たとえば、重大度レベルの数を2レベルに減らします。

    "sevMap" : {
                 "sevSet" : {
                              "blocker" :  "mustfix",
                              "critical" : "mustfix" 
                              "major" :    "mustfix"
                              "minor" :    "warning"
                              "info" ;     "warning"
                            }
               }

リンクされたコンテンツの監査の抑止

Oracle JAF構成ファイルのオプションのfollowLinksプロパティを使用し、外部のスタイルシートとJavaScript/TypeScriptファイルを参照するHTMLの<link>要素と<script>要素をたどって、それらのファイルを監査するかどうかを制御します。

JAFのデフォルトでは、スタイルシートとJavaScript/TypeScriptファイルを含む外部リンク・ファイルの監査が有効です。外部リンク・ファイルの監査を防ぐには、JAF構成ファイルでfollowLinks設定を無効にする必要がります。
外部リンク・ファイルの監査を抑止するには:
  1. 外部リンク・ファイルから生成される監査メッセージを抑止するには、oraclejafconfig.jsonファイルのfollowLinksプロパティを編集します。
    "followLinks" : false

監査メッセージの抑止

Oracle JAF構成のオプションのmessagesプロパティを使用して、どのメッセージが監査レポートに出力されるかを制御します。このプロパティを省略すると、検出されたすべての問題がレポートされます。

messagesプロパティには2つのサブプロパティrejectacceptがあり、レポートに出力する監査メッセージのリストを調整するために使用できます(特定のメッセージを抑止するか、必要なメッセージのみを返します)。サブプロパティには、フィルタ対象のメッセージIDのリストを指定します。これらのサブプロパティは相互に排他的であるため、指定したリスト内のメッセージIDは重複できません。正規表現とワイルドカード文字を使用してメッセージIDを指定できます。たとえば、"JET-20*"および"JET-3[0-9]+"が有効です。
レポートされる監査メッセージのリストを制御するには:
  1. 特定のメッセージIDのメッセージを抑止するには、oraclejafconfig.jsonファイルのmessagesプロパティを編集し、rejectサブプロパティのリストとしてフィルタで除外するメッセージIDを指定します。
    "messages" : {
                   "reject" : ["JET-3020", "JET-20*"]
                 },

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

  2. 特定のメッセージIDのメッセージのみをレポートするには、oraclejafconfig.jsonファイルのmessagesプロパティを編集し、acceptサブプロパティのリストとしてレポートするメッセージIDを指定します。
    "messages" : {
                   "accept" : ["JET-3020", "JET-2[1-2]+"]
                 },

    このサンプルの指定では、監査レポートに含まれるのは、IDがJET-3020のメッセージと、一連のID (JET-2100JET-2120JET-21xxJET-2200JET-2210JET-22xxなど)のメッセージのみです。

行と列の問題のレポートに使用されるタブ値の調整

Oracle JAF構成のオプションのtabsプロパティを使用して、監査でタブ文字が検出されたときの処理方法を制御します。

デフォルトでは、JAFは1つのタブ文字が4つのスペースを表しているとみなします。アプリケーション・ファイルでこの値を調整する必要がある場合、特定のファイル・タイプ(HTML、JS、CSSおよびJSON)について設定を指定できます。ファイル・タイプごとに、1つのタブ文字で使用されるスペースの数と、個々のタブ・ストップで使用される列値のリストを定義できます。

"tabs" : {
            "html" | "js" | "css" | "json" | "all" : {
                       <tab settting objects per file type>
                    },
         }

タブ文字が検出されたときに1列進めるには、2つのタブ構成スタイルを使用できます。spacesサブプロパティを使用してタブがn個のスペースと等しいとするか、stopsサブプロパティを使用して列が次のタブ・ストップ列に進むようにします。stopsspacesの両方を指定した場合、タブ構成スタイルはタブ・ストップになります。タブが最後のstops位置よりも先に進むとき、JAFは常にspaces値を使用して、次のタブ・ストップ列を計算します。

"tabs" : {
            "html" | "js" | "css" | "json" | "all" : {
                       "spaces" : n,              // declare tab spacing
                       "stops" : [i, j, k, ...]   // declare tab stop columns
                    },
         }
タブの設定を調整するには:
  1. 特定のアプリケーション・ファイル・タイプ(HTML、JS、CSSまたはJSON)内で使用されるタブ・スタイル設定を構成するには、oraclejafconfig.jsonファイルのtabsプロパティを編集します。
    "tabs" : {                          
               "html" : {
                           "spaces" : n                // declare tab spacing
                           "stops" : [i, j, k, ...]    // declare tab stop columns
                        },
               "js" : {
                           "spaces" : n
                           "stops" : [i, j, k, ...]
                        },
               "css" : {
                           "spaces" : n
                           "stops" : [i, j, k, ...]
                        },
               "json" : {
                           "spaces" : n
                           "stops" : [i, j, k, ...]
                        }
             }
    たとえば、次のタブ・スタイル構成のサンプルでは、タブ・ストップが生成される位置は8、12、16、20、24のようになります。これは、両方のプロパティが指定されているためです。
    "tabs" : {
               "html" : {
                          "spaces" : 4, 
                          "stops" : [8, 12]  // generates tab stops at 8, 12, 16, 20, 24 ...
                        },
                ...
             }
  2. すべてのアプリケーション・ファイル・タイプで使用される同じタブ設定を構成するには、oraclejafconfig.jsonファイルのtabsプロパティを編集します。
    "tabs" : {
                "all" : {
                           "spaces" : n,              // declare tab spacing
                           "stops" : [i, j, k, ...]   // declare tab stop columns
                        },
             }

    allサブプロパティをいずれかのファイル・タイプのサブプロパティ(htmljscssおよびjson)と組み合せて使用して、宣言されない他のファイル・タイプのデフォルトを指定することもできます。たとえば、次のエントリでは、タブ1つに対するスペースがHTMLでは5個、他のすべてのファイル・タイプでは3個と見なされます。

    "tabs" : {
               "html" : {"spaces" : 5}, // declares tab spacing for HTML files only
               "all" :  {"spaces" : 3}  // declares tab spacing for all other file types
             }

ファイングレイン監査制御のためのソース・コードのコメント化

Oracle JAFのコメント・コマンドを使用すると、個々のアプリケーション・ファイル内でコードの特定の行またはブロックに対するコンテキスト監査を抑止できます。JAFのコメント・コマンドを使用して、監査結果を絞り込み、レポートされる問題の制御を強化できます。

Oracle JAF構成プロパティcommentstrueに設定すると、ユーザーがソース・コードに挿入するコメントをOracle JAFが解釈できるようになります。JAFでは、次の形式のJAF固有のコマンドのコメントを認識します。

/* <JAFcommand> [optional data]

または

// <JAFcommand> [optional data]

山カッコ(< >)は実際のコマンド名には含まれないこと、また、オプション・データを指定する際の大カッコ([ ])の使用は省略できることに注意してください。

すべてのJAFコメント・コマンドには接頭辞jaf-が付いています。コマンド名は、先頭の/*または//の直後に続ける必要があります。/* jaf-xxx */または// jaf-xxxと指定します。このとき、コマンド名の前に空白を入力できます。

JAFコメント内にプログラム・テキストを入力することはできません。

次の表に、サポートされているJAFコメント・コマンドを示します。

Oracle JAFコメント・コマンド 説明

// jaf-disable-next-line

/* jaf-disable-next-line */

次の文に対して、すべてのJAF監査ルールを無効にします。

// jaf-disable-next-line [rule1, rule2, ...]

/* jaf-disable-next-line [rule1, rule2, ...] */

次の文に対して、指定したJAF監査ルールを無効にします。

// jaf-disable-line

/* jaf-disable-line */

現在の文に対して、すべてのJAF監査ルールを無効にします。

... some statement ; // jaf-disable-line

// jaf-disable-line [rule, rule2, ...]

/* jaf-disable-line [rule, rule2, ...] */

現在の文に対して、指定したJAF監査ルールを無効にします。

// jaf-disable

/* jaf-disable */

ファイルの末尾または次のコメントまで、すべてのJAF監査ルールを無効にします。

/* jaf-disable [rule, rule2, ...] */

// jaf-disable [rule, rule2, ...]

ファイルの末尾または次のコメントまで、指定したJAF監査ルールを無効にします。大カッコとカンマは省略できることに注意してください。

// jaf enable

/* jaf-enable */

すべてのJAF監査ルールを有効にします。

// jaf enable rule1, rule2, ...

/* jaf-enable rule1, rule2, ... */

指定したJAF監査ルールを有効にします。

ソース・コードをコメント化してJAF監査ルールを有効または無効にするには:
  1. コメント化のサポートを有効にするには、oraclejafconfig.jsonファイルのcommentsプロパティを編集します。
    { "comments" : true }
  2. ターゲット・ソース・ファイルで、1つ以上のjaf-disableコメント・コマンドを使用して、ファイルの末尾または次のJAFコメント・コマンドまで、特定のJAF監査ルールを無効にします。
    // jaf-disable rule1
    // jaf-disable rule2
    // jaf-disable rule3

    これは機能的には次と同じです。

    // jaf-disable rule1, rule2, rule3
  3. ソース・ファイルで、1つ以上のjaf-enableコメント・コマンドを使用して、ファイルの末尾または次のJAFコメント・コマンドまで、特定のJAF監査ルールを有効にします。
    // jaf-enable rule1
    // jaf-enable rule2
    // jaf-enable rule3

    これは機能的には次と同じです。

    // jaf-enable rule1, rule2, rule3
  4. ソース・ファイルで、JAFコメント・コマンド(組込みまたは除外)を組み合せて、指定したルールを除くすべてのJAF監査ルールを有効または無効にします。
    // jaf-disable        all rules are disabled after this
    ...
    // jaf-enable rule1        all rules except rule1 are disabled after this
  5. ソース・ファイルで、JAFコメント・コマンド(組込みまたは除外)を組み合せて、現在の行または次の行で、指定したルールを除くすべてのJAF監査ルールを有効または無効にします。
    // jaf-disable
    ...
    // jaf-enable rule1, rule2
    ...
    // jaf-disable-next-line rule3
    ...                                <--  for this code statement, only rule3 is disabled
     
    ...                                <-- all rules disabled except rule1 and rule2