3 Oracle JETアプリケーションに対する監査の実行

デフォルトのOracle JAF構成に変更を加えずに監査を実行することも、様々な構成プロパティをカスタマイズして監査の動作を変更することもできます。

コマンドラインを使用したアプリケーションの監査

ojaf --initコマンドを使用してOracle JAFを構成した場合は、「コマンド・プロンプト」ウィンドウで監査を実行できます。

JETアプリケーションで、「コマンド・プロンプト」ウィンドウを開き、ルート・ディレクトリで引数を指定せずにJAFコマンドを使用して、HTML、JS、CSSおよびJSONのすべてのファイルに対して、アプリケーション全体の現在のJAF構成に基づいた監査を実行します。

ojaf

完全なコマンドライン構文には、オプションのフラグと、オプションのディレクトリ・パスまたはファイル・パス(あるいは両方)の引数のスペース区切りリストが含まれます。

ojaf [ <flags> ] [ <files>]

監査の実行は、コマンドライン・インタフェースでコマンドを呼び出すディレクトリから始まります。アプリケーション・ファイルのサブセットを監査するには、必要な開始ディレクトリに異動して、監査コマンドを呼び出します。あるいは、単純な監査の場合は、コマンドラインでファイルとファイル・パスを現在の作業ディレクトリに対して相対的に指定できます:

ojaf myFile1[, myFile2, myFilex]
たとえば、次のように、現在の作業ディレクトリ内の2つのファイルの監査と、テスト・ディレクトリのみのサブフォルダ内のすべてのファイルの監査を行うことができます:
ojaf file1 file2 ./test/**/*

プラットフォームによってはコマンドライン引数のワイルドカード拡張が実行されることに注意してください。これを回避するには、ワイルドカード文字を含むojaf引数は引用符で囲む必要があります。

ojafコマンドに指定できるコマンドライン・フラグは、JAF構成ファイルの対応するプロパティ設定をオーバーライドするために使用できます。たとえば、デフォルトのフラット化テキスト出力をオーバーライドして、監査用の標準レポート・スタイル出力を表示する場合は、--formatフラグを追加できます。

ojaf --format prose

他のコマンドライン・フラグを使用すると、ojafユーティリティと相互作用して必要な情報を戻すことができます。たとえば、アプリケーションのOracle JETバージョンがJAFでサポートされている現在のバージョンに含まれることを確認する場合は、--jetlistフラグを追加します。

ojaf --jetlist

また、コマンドラインを使用して、監査でレポートされた特定の問題に関する詳細情報を取得することもできます。このためには、--helpフラグと引数(メッセージのIDまたはメッセージを出力したルールの名前)を付加します。

ojaf --help msgID

コマンドライン・フラグの完全なリストは、引数なしの--helpフラグを使用して表示できます。

ojaf --help

--helpコマンドでは、次の表に示すojafユーティリティのコマンドライン・フラグのオプションが表示されます。Oracle JAFコマンドライン・フラグでは、大文字と小文字は区別されないことに注意してください。

--helpフラグを使用し、--helpまたは-hに引数としてフラグを追加することによって(ojaf -h drなど)、コマンドライン・フラグのマニュアル・ページ(manpage)ドキュメントを表示することもできます。

または、コマンドを?で終了する(ojaf -rc?など)ことで、フラグのマニュアルページを表示できます。*nixシェルの場合、疑問符をエスケープするか、引数を引用符で囲む(ojaf -rc\?またはojaf "-rc?")必要があります。

OJAFコマンド・フラグ(長/短) 説明

--help

または

-h

この表で説明するコマンドライン・フラグの使用方法を表示します。

--help msgId | rulename | command

または

-h msgId | rulename | command

メッセージのIDまたは名前で識別されるルールの説明を表示するか、コマンドのマニュアルページを表示します。たとえば、次の場合は、JAF監査メッセージID JET-0160の説明が表示されます。

ojaf -h JET-0160

次の場合は、JAF監査ルールoj-html-binding-attrの説明が表示されます:

ojaf -h oj-html-binding-attr

次の場合は、JAFコマンドライン・フラグ--retcodeの説明が表示されます:

ojaf -h -rc

--<command>?

-h <command>を使用するかわりに、コマンドのマニュアルページを表示します。たとえば、ojaf -h drojaf -dr?はどちらも、コマンド・オプション--dryrunのマニュアルページを表示します。

*nixシェルの場合、コマンドラインの展開を回避するために、疑問符をエスケープするか、引数を引用符で囲む(ojaf -rc\?またはojaf "-rc?")必要があります。

--init

または

-i

現在のディレクトリにoraclejafconfig.jsonファイルをスキャフォールドします。構成ファイルは監査の実行に必要で、デフォルト設定で実行することも、監査動作をカスタマイズするために設定を変更することもできます。

--initRule rulename

または

-ir rulename

スケルトンのカスタム監査ルール実装ファイルを現在のディレクトリにスキャフォールドします。引数の後ろには、.jsファイル拡張子を付けないルール名を続けます。たとえば、次の例では、現在のディレクトリにmy_new_rule.jsファイルが作成されます:

ojaf --ir my-new-rule

ユーザー定義のカスタム監査ルールの作成の詳細は、「カスタム監査ルール・テスト・プロジェクトの設定」を参照してください。

--config filepath

または

-c filepath

構成ファイルのファイル・パスを後に指定すると、指定の構成で監査が実行されます。

省略した場合は、現在のディレクトリでoraclejafconfig.jsonファイルが探されます。

--jetver semver

または

-jv semver

JETのリリース・バージョンを表す部分的または完全なセマンティック・バージョン値を後に指定すると、そのJETリリース・バージョンの監査が実行されます。Oracle JAFルール・セットをアプリケーションのバージョンと一致させる場合に使用します。

部分的なセマンティック・バージョン定義(semver 9など)は、入手可能な最新リリース9.x.yにJAFによって昇格されます。同様に、semver 9.1は、最新パッチ・レベル9.1.yにJAFによって昇格されます。セマンティック値のその他の例は、「JETおよびECMAスクリプトの特定バージョンによる監査」を参照してください。

ヒント:

コマンドojaf --jetlist (またはojaf -jl)を使用して、ojafコマンドライン・ユーティリティでサポートされる現在のJETリリース・バージョンを表示します。

省略した場合、ルール・セットはoraclejafconfig.jsonファイル内のjetVer構成プロパティで指定されたバージョンに基づきます。

--groups ruleGroupName1 ruleGroupName2 ...

または

-g ruleGroupName1 ruleGroupName2 ...

指定されたルール・セット・グループを使用して監査を実行します。組込みルール・セット・グループのリストは、「特定のルールによる監査」を参照してください。

--format prose | line | json

または

-t prose | line | json

出力表示形式を後に指定すると、監査の出力の形式が設定されます。標準のレポート・スタイル出力はprose、フラット化テキスト出力はline、JSON形式はjsonです。

--outPath filepath

または

-o filepath

ファイル・パスを後に指定すると、指定のディレクトリに監査の出力が書き込まれます。

パスが相対パスの場合、出力ディレクトリは現在のディレクトリに対して相対的に解決されます。省略した場合、監査出力のディレクトリは現在のディレクトリです。

--noout

または

-no

outPath構成プロパティによって構成ファイル内で指定されているファイルへの出力を抑止し、監査出力をコンソールに送ります。

--severity [ > | >= | < | <= ] blocker | critical | major | minor | info | all (default)

または

-s [ > | >= | < | <= ] blocker | critical | major | minor | info | all (default)

ノート: 比較演算子を使用する場合、重大度条件は引用符で囲む必要があります。

重大度レベルを後に指定すると、監査でレポートされる問題の重大度が制限されます。重大度レベルの説明は、「監査ルールの重大度レベルの制限」を参照してください。

オプションの比較演算子>>=<および<=を重大度レベルの前に指定できます(条件は引用符で囲む必要があります)。たとえば、次の場合は、重大度がcriticalレベルとblockerレベルの問題が表示されます。

--severity ">=critical"

省略すると、すべての重大度レベルの問題が監査でレポートされます。構成プロパティsevMapを使用してこれらが再定義された場合は、再定義された重大度もここで使用できます。

--followlinks

または

-fl

監査でスタイルシートの<link>要素が対象になります。JAFによって、リンク先のスタイルシートと参照されているJavaScript/TypeScriptスクリプト・ファイルが監査されます。

省略した場合、デフォルトで、リンク先スタイルシートが監査の対象になります。

--nofollowlinks

または

-nfl

監査でスタイルシートの<link>要素が対象になりません。JAFによって、リンク先のスタイルシートまたは参照されているJavaScript/TypeScriptスクリプト・ファイルが監査されません。

--extra

または

-e

追加の詳細情報を出力として表示します。たとえば、特定の問題の作成に使用されたルールおよび問題のメッセージIDが含まれます。

--msgid

または

-id

proseモードを構成(--formatを参照)すると、レポートされる問題のメッセージIDが、問題テキストの表示に付加されます。

JAF構成プロパティproseFormatにより定義されたカスタム形式は、このフラグをオーバーライドします。

--dryrun

または

-dr

構成ファイルの完全な起動と分析が実行されます。監査されるはずのファイルが表示されますが、ファイル・セット(JAF構成プロパティ設定filesおよびexcludeで指定される)に対してルールは起動されません。

これは、構成ファイルにエラーがないことを確認する場合に役立ちます。filesおよびexcludeプロパティの設定が複雑な場合には特に便利です。

--jetlist

または

-jl

JAFで現在サポートされているJETのバージョンが表示されます。

これは、アプリケーションの作成に使用したJETのバージョンが、現在のJAFインストールでサポートされているバージョンであることを確認する場合に便利です。

--profiles

または

-prof [ profile name]

継承できる使用可能な構成プロファイルを表示します。コマンド・フラグのあとにオプションのプロファイル名が続く場合は、そのプロファイルが表示されます。

--nslist

または

-nsl

JAFで認識されているネームスペースを表示します。

これは、ユーザー定義のカスタムWebコンポーネントへの参照のファイル・セットを監査し、有効なWebコンポーネント参照の誤った監査レポートを抑制する必要がある場合に便利です。詳細は、「カスタムのJET Webコンポーネントの使用方法の監査」を参照してください。

--dslist

または

-dl

JET組込みルール・パックでデフォルトで無効になっているルールのリストを表示します。

宣言されたパックに出力を限定するために、すぐに続けてオプションのパック接頭辞を付けることができます。

--deplist

または

-dpl

非推奨のルールのリストを表示します。

宣言されたパックに出力を限定するために、すぐに続けてオプションのパック接頭辞を付けることができます。

--grouplist

または

-gl

組込みJETルール・パック・グループおよびその関連ルールを表示します。

指定したパックのみに出力をフィルタするために、すぐに続けてオプションのパック接頭辞名を付けることができます。

--xgrouplist

または

-xgl

外部(JET以外)のルール・パック・グループおよびその関連ルールを表示します。

指定したパックのみに出力をフィルタするために、すぐに続けてオプションのパック接頭辞名を付けることができます。

このコマンドには、rulePacksプロパティが設定された構成ファイルが必要です(つまり、コマンドラインで-cを使用します)。

OJAFはrulePacksプロパティのみを参照するため、それ以外のプロパティは存在する必要がありません。

--amdlist

または

-amd

JAF組込みルールパックのAMDモードでのルールの利用可否を表示します。オプションのルールパック接頭辞を指定して、出力を指定されたパックのみに制限できます。

--loadorder

または

-rlo

JAF組込みルールパック内のルールのロード順序を表示します。オプションのルールパック接頭辞を指定して、出力を指定されたパックのみに制限できます。

--betalist

または

-bl

JAF組込みルールパックのルールのステータスを表示します。オプションのルールパック接頭辞を指定して、出力を指定されたパックのみに制限できます。

--metahist

または

-mh

削除および名前変更されたクラス、および削除されたクラス・メソッドとメンバーについて、JAFで認識されているすべてのJETバージョンのメタデータ履歴を表示します。

これは、非推奨または名前の変更によって発生する問題の診断に役立ちます。JAFでは、メッセージJET-3070およびJET-3071でこれらが報告されていることに注意してください。

--dac

または

-dac

継承の結果を評価するためのアクティブな構成ファイルを表示します。監査は実行されません。

--deflist

または

--default

または

-def

選択したプロパティの現在のJAF構成デフォルト値を表示します。

--debug

または

-d

デバッグ・モードが有効化され、非常に詳細な出力が可能になります。

これは、問題の診断に役立ちます。

--rules

または

-r

アクティブなルールの情報とそのオプションがテキストとして表示されますが、監査は実行されません。

--outPathフラグと組み合せて使用して、ルール・データが書き込まれるファイル・パスを指定できます。省略した場合、ルール・データはコンソールに表示されます。

--rulesjson

または

-rj

アクティブなルールの情報とそのオプションがJSONとして表示されますが、監査は実行されません。

--outPathフラグと組み合せて使用して、ルール・データが書き込まれるファイル・パスを指定できます。省略した場合、ルール・データはコンソールに表示されます。

--rulessonar

または

-rs

アクティブなルールの情報とそのオプションがXML (SONAR形式)として表示されますが、監査は実行されません。

--outPathフラグと組み合せて使用して、ルール・データが書き込まれるファイル・パスを指定できます。省略した場合、ルール・データはコンソールに表示されます。

--retcode auto (default) | errors | x (a number)

または

-rc auto (default) | errors | x (a number)

OJAFコマンドライン・インタフェースのリターン・コード動作をオーバーライドします。デフォルトの動作の場合、autoを指定します。異常終了でデフォルト・モードの場合と同様に-1が返される場合を除き、リターン・コードを0にする場合はerrors指定します。リターン・コードとして使用する数値を指定します。OJAFバージョン2.9.11以降が必要です。

--help msgId | rulename

または

-h msgId | rulename

メッセージのIDまたは名前で識別されるルールの説明が表示されます。たとえば、次の場合は、JAF監査メッセージID JET-0160の説明が表示されます。

ojaf -h JET-0160

次の場合は、JAF監査ルールoj-html-binding-attrの説明が表示されます。

ojaf -h oj-html-binding-attr

--initRule rulename

または

-ir rulename

スケルトンのカスタム監査ルール実装ファイルを現在のディレクトリにスキャフォールドします。引数の後ろには、.jsファイル拡張子を付けないルール名を続けます。たとえば、次の例では、現在のディレクトリにmy_new_rule.jsファイルが作成されます:

ojaf --ir my-new-rule

ユーザー定義のカスタム監査ルールの作成の詳細は、「カスタム監査ルール・テスト・プロジェクトの設定」を参照してください。

事前定義済実行時オプションによるアプリケーションの監査

オプションのJAF構成プロパティoptionsを使用し、コマンドラインから監査を実行するたびに使用する実行時オプションを定義します。

コマンドライン・フラグを使用してojafコマンドを呼び出すかわりに、対応する設定をJAF構成ファイルのoptionsプロパティで構成することで、様々な実行時オプションを事前に定義できます。たとえば、ojafコマンドを呼び出すたびに--extra --nocolorを付けるかわりに、構成オプションdebugおよびcolorを定義できます。

その他の実行時オプションを構成するには:
  1. ojafの呼出しに適用する実行時オプションを構成するには、oraclejafconfig.jsonファイルのoptionsプロパティを編集します。
    
    "options" : {
                 "debug" : true | false,        // Set debug mode.
                 "verbose" : true | false,      // Set verbose mode for additional output.
                 "color" : true | false,        // Set color mode for messages and prose output. (Works best on a black background.)
                 "msgid" : true | false,        // Add message IDs to displayed issues. (Requires 'format' : 'prose' | 'line'.)
                 "ruleName" : true | false      // Add rule names and msgId's to displayed issues. (Requires 'format' : 'prose' | 'line'.)
                 "retCode" | "rc" : "auto" | "errors" | number    // Override OJAF CLI return code. Default if omitted is "auto". See examples below.
                }

    コマンドラインでの同等の操作を次に示します。

    "options" : {
                 "debug" : false,     // Same as command line  -d   or -- debug
                 "verbose" : false,   // Same as command line  -e   or --extra  
                 "color" : false,     // Same as command line  -nc  or --nocolor
                 "msgid" : true       // Same as command line  -id  or --msgid (Requires 'format' : 'prose' | 'line'.)
               }

    OJAFコマンドライン・インタフェースでのリターン・コード動作をオーバーライドする構成オプションの例。OJAFバージョン2.9.11以降が必要です。"rc""retcode"は同義であることに注意してください。

    "options" : {
                   "rc" : 0        // return code will always be zero
                }

    または

    "options" : {
                   "rc" : "errors  // return code will always be zero, except in the event of early/abnormal
                }

    または

    "options" : {
                   "rc" : "auto"   // default behavior - 0 - nnn -> number of issues found, -1 for early termination
                }

JETおよびECMAスクリプトの特定バージョンによる監査

監査中、Oracle JAFは、アプリケーション固有のメタデータを参照してJAFルール・セットを処理します。JAF構成ファイルのオプションのjetVerプロパティを使用してJETバージョンのメタデータを設定し、オプションのecmaVerプロパティを使用してECMAバージョンのメタデータを設定します。プロパティを省略した場合、JAFは、アプリケーションの作成に使用されるJETのバージョンに固有のメタデータを使用してルール・セットを処理します。

JAF組込み監査ルール・セットは、JETの特定のバージョンおよび特定のJavaScript ECMA実装用に最適化されたメタデータに対して機能します。デフォルトでは、JAFはアプリケーション固有のJET JavaScript APIリファレンス・ドキュメントからルールのメタデータを導出します。ただし、監査をカスタマイズして、アプリケーション以外のJETとJavaScript/TypeScriptのバージョン用の組込みルール・セットを処理できます。

  • Oracle JETバージョン"5.2.0" (引用符で囲まれた文字列)以降が、JETメタデータで有効な設定です。JETリリース候補で実行する必要がある場合、"9.0.0-rc3"のように末尾の文字を使用できます。

  • JavaScript ECMAの場合、バージョン5、6、7、8、9、10、11、12、13および14 (引用符なしの数字)は有効で、ECMAバージョン番号またはESバージョン年(ES14の2023など)で指定できます。

監査で使用されるアプリケーション固有のメタデータを変更するには:
  1. セマンティック・バージョン値を指定してOracle JETリリース・バージョンのメタデータを設定するには、oraclejafconfig.jsonファイルのjetVerプロパティを編集します。
    {
       ...
       "jetVer" :  "9.0.0"
       ...
    }

    JETリリース・バージョンは"5.2.0" (引用符で囲まれた文字列)以降にする必要があります。この指定は、JAFではセマンティック・バージョン値として扱われます(バージョンの部分指定が有効な場合)。一般的には、パッチ番号はJAFによって提供されるため、メジャーマイナーのリリース値が必要です("9"、"8.2"など)。JAFは、指定されたjetVer値を、セマンティック・バージョンに対応する最新の使用可能なJETリリースに昇格します(使用しているJAFのバージョンの現在のデフォルトについては、コマンドojaf -jlの出力を参照してください)。たとえば、JETリリース・バージョン8.1.1、8.1.2、8.2.1、および8.2.2がサポートされる場合、jetVerのセマンティック・バージョン値はJAFによって次のように昇格されます。

    jetVer値 昇格されるJETリリース
    "8" 8.2.2
    "8.1" 8.1.2
    "8.2" 8.2.2
    "8.2.0" 8.2.2

    ノート:

    セマンティック・バージョニングの詳細は、SemVerのWebサイト(https://semver.org)を参照してください。
  2. 特定のJavaScript実装のメタデータを設定するには、oraclejafconfig.jsonファイルのecmaVerプロパティを編集します。
    {
       ...
       "ecmaVer" :  11
       ...
    }

    バージョン範囲5から14 (56など)または年範囲2015から2023 (20152016など)内のバージョン番号(引用符あり/なし)。

    JAFバージョン2.9.15から、ECMAバージョンは、2020、2019などの引用符付きまたは引用符なしのESバージョン年で指定することもできます。

    正式名称/バージョン JAF ecmaVerプロパティ 必要なJAFバージョン
    ES2023 / ES14 14"14"2023または"2023" 6.9.0以降
    ES2022 / ES13 13"13"2022または"2022" 5.9.0以降
    ES2021 / ES12 12"12"2021または"2021" 5.9.0以降
    ES2020 / ES11 11"11"2020または"2020" 2.9.20以降
    ES2019 / ES10 10"10"2019または"2019" 2.9.11以降
    ES2018 / ES9 9"9"2018または"2018" 2.8.21以降
    ES2017 / ES8 8"8"2017または"2017" 2.8.21以降
    ES2016 / ES7 7、"7"2016または"2016" 2.8.21以降
    ES2015 / ES6 6"6"2015または"2015" 2.8.20以前
    na / ES5 5または"5" 該当なし

特定のルールによる監査

JAFによって起動される監査ルール・セットは、オプションで構成プロパティgroupsruleNamesおよびruleModsを使用して条件付きにできます。これらのプロパティは、ランタイム・ルール・セットのルールを有効化および無効化して、実行されるルールのリストを指定し、他のすべてのルールを間接的に無効化する様々な方法を提供します。

JAFルールはすべてルール・パックで定義されます。一部のルール・パックはJAFに組み込まれており、builtinで始まる構成プロパティを設定するだけで選択できます。たとえば、builtinJetRulestrueに設定すると、その中で定義されているすべての(有効な)ルールをJAFで使用できるようになります。(省略した場合、builtinJetRulesはデフォルトでtrueになるため、JET組込みルールを使用して標準監査を実行するために何も宣言する必要はありません。)JET組込みルール・パックに含まれないルール・パックの場合、構成プロパティrulePacksを使用して、ロードする外部ルール・パックを宣言できます。

したがって、デフォルトでは、組込みOracle JAFルール・パックが有効になっており、オプションで外部ルール・パックをロードでき、これらのルール・パック内のすべてのルールを監査で実行できます。ルール・パック内のルールを無効にしてそのルールを実行しないようにすることもできますが、少数のルールのみを実行する必要がある場合は、不要なルールをすべて無効にするよりも、実行するルールを指定するほうが簡単です。

JAF構成プロパティruleNamesを使用して、実行する特定のルールおよびルール・グループのリストを指定し、他のすべてのルールを間接的に無効にします。または、プロパティgroupsを使用して、実行するルール・グループのリストを指定し、ほかのすべてのルール・グループを間接的に無効にします。JAF監査では、名前付きルールまたはルール・グループのみが呼び出されます。

groupsおよびruleNames構成プロパティのみがルールを有効にするわけではなく、使用する予定のルールのみを宣言することに注意してください。これらのルールが実行されるかどうかは、監査構成によって異なります。たとえば、グループが指定されているが、それを含むルール・パックがロードされていない場合、グループのルールは実行されません。同様に、ruleNamesで宣言されたルールがデフォルトで無効になっている場合(またはruleModsプロパティを介して他の場所で無効になっている場合)、ルールは実行されません。

したがって、ruleNamesおよびgroupsプロパティを使用すると、構成エントリの編集やコメント・アウトを行わずに、ロードされたルール・パックの既存の構成を一時的にオーバーライドできます。これは、ルールの開発またはデバッグ時に特に役立ちます。これらのプロパティは、実行しないルールを無効にするのではなく、実行するルールを指定する場合にも役立ちます。

特定のルールを使用して監査するには:
  1. 実行するルールのサブセットを宣言するには、oraclejafconfig.jsonファイルのgroupsプロパティを編集します。
    { "groups" : ["ruleGroup1", "ruleGroup2", ...],
    }

    JET組込みルールの場合、次に説明するように、組込みJETルール・パック・サブセットのグループ名を宣言することによって、実行するルールを指定できます。たとえば、グループ名jet-htmlがHTMLルール、グループ名jet-jsがJavaScript/TypeScriptルールを定義する場合に、サンプルではグループjet-htmlに含まれるルールのみを有効にします。

    { "groups" : ["jet-html"],
    }
    組込みルールのグループ名 用途
    jet-html ルールではHTMLがチェックされます。
    jet-css ルールではCSSがチェックされます。
    jet-js ルールではJavaScriptがチェックされます。
    jet-ts ルールではTypeScriptがチェックされます。
    jet-tsx ルールではJSXを使用してTypeScriptがチェックされます。
    jet-md マークダウンをチェックするルール。
    jet-json ルールではJSONがチェックされます。
    jet-override CSSオーバーライドをチェックするルール。
    jet-perf パフォーマンスをチェックするルール。
    jet-aria ルールではアクセシビリティ・コンプライアンスがチェックされます。
    jet-deprecated ルールでは非推奨のステータスがチェックされます。
    jet-deleted ルールでは削除済ステータスがチェックされます。
    jet-bp ルールにより、JET開発のベスト・プラクティスが実施されます。
    jet-redwood-bp Redwoodのベスト・プラクティスを強制するルール。
    jet-csp ルールではコンテンツ・セキュリティ・ポリシー(CSP)違反がチェックされます。
    html5 ルールではHTML5の廃止されたタグと属性がチェックされます。
    jet-cca アプリケーションに存在するか、Oracle Component Exchangeに存在するかにかかわらず、Webコンポーネント・メタデータによって定義されたルールが適用されます。
  2. オプションで、実行するカスタム・ルール・グループを宣言するには、oraclejafconfig.jsonファイルのdefGroupsプロパティを編集し、カスタム・グループ名をgroupsプロパティに追加します。
    "groups" : ["pages"]  // references a custom group
    
    "defGroups": [
                   {
                     "pages": ["jet-html", "jet-css"] 
                   },
                   ...
                  ]
    

    このサンプルでは、カスタム・グループpagesdefGroupsプロパティに定義され、groupsプロパティで監査に対して有効化されます。

  3. 実行する特定のルールおよびルール・グループのリストを宣言するには、oraclejafconfig.jsonファイルのruleNamesプロパティを編集します。
    { "ruleNames" : ["ruleName1", "ruleName2, "ruleGroup1", ...],
    }

    ルール名またはルール・グループ名は、ワイルドカード文字を含む正規表現文字列を使用して宣言できます(JAFバージョン2.9.29以上が必要です)。

    { "ruleNames" : ["oj-ruleName-*", ...],
    }

    ruleNamesプロパティとgroupsプロパティは相互に排他的です。ruleNamesプロパティが構成される場合は、そこで定義されたルールおよびルール・グループのみがアクティブになります。

  4. 特定のルールおよびルール・グループを有効または無効にするには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、ルールおよびルール・グループの目的のリストをenableおよびdisableサブプロパティで設定します。
    "ruleMods": {
                  "enable": ["rule1", "rule2", "rulegroup1"],
                  "disable": ["rule3", "rule4", rulegroup2]
                }

    ルール・グループ名はルールのセットを表すため、グループ名を宣言できます。enableプロパティとdisableプロパティの両方が宣言されている場合は、まずenableセットが処理され、次にdisableセットが処理されます。

    または、ruleModsを使用してルール・オプションをオーバーライドする場合、ルール定義で目的のルールのenabledプロパティをtrueまたはfalseとして指定できます。この例では、ルールは無効になっています。

    "ruleMods": {
                  "JET": { 
                           "oj-html-ko-databind": {"enabled": false},
                            ...
                         }
                }

カスタム・ルール・パックによる監査

Oracle JAF構成プロパティrulePacksを使用して、ユーザー定義のカスタム監査ルールのセットをOracle JAF監査に含めます。

オプションで、rulePacksプロパティを使用して、ユーザー定義のカスタム監査ルールのセットを有効にすることができます。プロパティでは、ルールを含むzipファイルまたはフォルダを指定します。Oracle JAFを使用してユーザー定義ルールを作成する方法の詳細は、「Oracle JET Audit Frameworkの拡張」を参照してください。

"rulePacks" : [
                {
                  "path" : "path/to/myrulepack.zip",
                  "enabled" : [true (default) | false]
                  "status" : ["all" (default), "production", "deprecated", "beta", "alpha"] 
                },
                {
                  "path" : "path/to/my/rulepack/folder",
                  "enabled" : [true (default) | false]
                  "status" : ["all" (default), "production", "deprecated", "beta", "alpha"] 
                },
                ...
              ]

enabledプロパティはオプションであり、完全なルール・パックを簡単に無効にできます。省略した場合、デフォルトは有効になります。

指定するpathは、相対パスにできます。相対パスの場合、構成ファイルの場所または構成ファイルのbaseプロパティ(定義されている場合)に対して相対と見なされます。

特定のルール・パックで監査するには:
  1. カスタム・ルール・パックの実行を有効にするには、oraclejafconfig.jsonファイルのrulePacksプロパティを編集し、pathにルール・パックの場所を指定し、オプションのstatusサブプロパティに必要な値を設定します。
    "rulePacks" : [
                    {
                      "path" : "path/to/myrulepack1.zip",
                    },
                    {
                      "path" : "path/to/myrulepack2.zip", 
                      "status" : ["deprecated", "beta"]
                    }
                  ]

    このサンプルでは、pathプロパティで指定したカスタム・ルール・パックで監査を実行します。enabledプロパティはデフォルトでtrueで、省略できます。このサンプルのmyrulepack2.zipstatusプロパティは、ルール宣言ファイルrules.jsonでシステム・プロパティstatusdeprecatedまたはbetaと定義されているルールのみをロードするように監査を制限しています。カスタム・ルール・パックによって定義されるオーバーライド可能なシステム・プロパティの詳細は、「監査ルールの実行時プロパティの構成」を参照してください。

  2. カスタム・ルール・パックの実行を無効にするには、oraclejafconfig.jsonファイルのrulePacksプロパティを編集し、pathにルール・パックの場所を指定し、enabledサブプロパティに値falseを設定します。
    "rulePacks" : {
                      "path" : "path/to/myrulepack1.zip",
                      "enabled" : false
                    }

    このサンプルでは、pathで指定されたルール・パックを無効にし、ルール・パックのenabledシステム・プロパティをオーバーライドします。

  3. すべての組込みJETルールを無効化し、カスタム・ルール・パックのみで監査を実行するには、oraclejafconfig.jsonファイルを編集してbuiltinJetRulesプロパティをfalseに設定し、前述のようにrulePacksプロパティを編集して必要なカスタム・ルール・パックを有効にします。
    "builtinJetRules" : false

    このサンプルでは、builtinJetRulesプロパティをオーバーライドして、Oracle JAFインストールに含まれるすべてのJETルールを無効にします。

Oracle JETコンポーネントを含むHTMLファイルのみの監査

Oracle JAF構成ファイルのオプション・プロパティjetPagesOnlyを使用して、ページにOracle JETカスタム要素が含まれていない場合にHTMLファイルの監査を抑止します。このプロパティが無効の場合、JAFは、アプリケーション内のすべてのHTMLファイルで問題を処理してレポートします。

Oracle JETを含むページのみの監査を有効にすると、JAFはルールを解析した後でページ内のすべての要素を調べてから、ルールを起動します。したがって、jetPagesOnlyプロパティを有効にすると、無効なときによりもパフォーマンスが低下します。
Oracle JETコンポーネントを含むページのみを監査するには:
  1. 監査でJETコンポーネント含まないページを無視し、JETコンポーネントを含むページのみを監査するには、oraclejafconfig.jsonファイルのjetPagesOnlyプロパティを編集します。
    {
       ...
       "jetPagesOnly" :  true
       ...
    }

カスタムのJET Webコンポーネントの使用方法の監査

Oracle JET Webコンポーネントはユーザー定義であるため、カスタムHTMLの監査は、監査を開始する前のWebコンポーネントのメタデータの処理によって異なります。オプションのJAF構成プロパティcomponentsおよびcomponentsUrlsを使用し、JAFにWebコンポーネント・メタデータを探して抽出できる場所を通知することで、このようなカスタムHTML要素の監査に対応できるようになります。

アプリケーションのカスタムのOracle JET Webコンポーネントは、component.jsonファイルを利用して、タグ名やサポートされるプロパティ、メソッド、イベントなど、APIのメタデータを定義します。Webコンポーネント固有のルールをJAFで処理する場合、component.jsonファイルを探す場所をJAFに通知するためにローカルWebコンポーネントのJAF構成componentsプロパティを設定する必要があります。

前処理フェーズ中に、JAFは指定された場所を再帰的に検索して、コンポーネント・メタデータを抽出します。この初期フェーズの後は、構成プロパティは不要になります。監査の以降のフェーズでは、事前に抽出されたコンポーネント・メタデータがjet-ccaグループによって定義された組込みJETルールによって使用され、Webコンポーネント参照が解決されます。

一旦適切に構成された後では、jet-ccaグループ内のJAFルールが完全に確認されることはありませんが、次のような実装の詳細がJAFによって強制されます。

  • コンポーネントで予約済ネームスペース接頭辞(oj-など)が使用されていないことを確認します。
  • for属性に接頭辞が付いており、式を指していることを確認します。
  • ハードコーディングされた要素IDがコンポーネント実装内で使用されていないことを確認します。

ユーザー定義のWebコンポーネントは名前の競合を避けるためにネームスペースに関連付けられるため、JAFにネームスペースについて通知して、監査ファイル・セット内の参照が有効でないと報告されないようにする必要があります。慣例により、Webコンポーネント名の接頭辞によってネームスペースが識別されます。ojネームスペースで定義されていないWebコンポーネントのネームスペースを宣言するには、JAF構成プロパティnameSpacesを設定します。

Webコンポーネントの監査をサポートするには:
  1. アプリケーション内に存在するWebコンポーネントのcomponent.jsonファイル・パスを設定するには、oraclejafconfig.jsonファイルのcomponentsプロパティを編集します。
    "components" : ["path/to/my_components"]

    プロパティは、1つの文字列として指定することも、文字列の配列(検査対象の各フォルダ)として指定することもできます。component.jsonファイルの検索は最上位で行われてから、すべての子階層で再帰的に行われます。

    "components" : [
                      "path/to/my_components/group1",
                      "path/to/my_components/group2"
                   ]
  2. 重要: fileプロパティを設定して、ローカルで参照されるWebコンポーネントのフォルダ・パスを含めます。
    "files" : [
                 ...
                 "./components/**"
               ]
  3. oraclejafconfig.jsonファイルのnameSpacesプロパティを編集し、許可されたネームスペースのリストを宣言することで、Webコンポーネントへの有効な参照の誤ったレポートを抑制します。
    "nameSpaces" : [ "my-foo", "my-bar", ... ]

    ユーザー定義のWebコンポーネントのネームスペースは、ネーミングの競合を回避するためにコンポーネントに割り当てた接頭辞によって決まります。この例では、接頭辞my-fooおよびmy-barを持つWebコンポーネントは、ファイル・セットで参照されるときにJAF監査によってフラグが設定されません。

    ヒント: 次のojafコマンドを入力して、実行しているJAFバージョンで認識されているネームスペースをリストできます。

    ojaf --nslist
  4. (オプション)事前監査フェーズで現在のcomponent.jsonファイル・スキーマを適用しない場合は、Webコンポーネント・メタデータの検証を抑止します。
    "components" :  ... ,
    "componentOptions" : {
                            "applySchema" : false
                         }

    これは、スキーマ・パスでコンポーネント・メタデータの問題が特定された場合に、JAF-INITメッセージが表示されないようにする場合に有用です。

  5. (オプション)1つのHTMLページに存在するWebコンポーネントの最大数を指定するには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みのルール・パックの接頭辞JETを指定し、組込みのoj-html-cca-countルール指定をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-html-cca-count" :  {
                                                     "thresholds" : {
                                                                       "oj-table" :  5
                                                                    }
                                                   }
                          }
                 }

    1つのHTMLページで許容されるWebコンポーネントのしきい値は任意の数です。たとえば、このサンプルでは、ページ上の表の数をチェックします。

    コンポーネントの指定には、ワイルドカード文字を含めることができます。たとえば、このサンプルでは、oj-tableコンポーネントの他に、すべてのゲージおよびボタンがチェックされ、$totalプロパティを使用して使用されるコンポーネントの合計数も制限されます。

    "ruleMods" : {
                  "JET" : {
                            "oj-html-cca-count" :  {
                                                     "thresholds" : {
                                                                       "oj-table"        :  5,
                                                                       "oj-*-gauge"      : 10,
                                                                       "oj-buttonset-*"  : 10,
                                                                       $total"           : 20   
                                                                    }
                                                   }
     
                          }
                }

    無効なルール・オプションを指定すると、Oracle JAFによってoj-html-cca-countルールが実行されません。オプションthresholdsが正しく指定されていることを確認します。

カスタムのJET Webコンポーネント・プロジェクトの監査

JAF構成ファイルでルール・セットbuiltinJetWcRulesを有効にすることで、Oracle JETツールを使用して作成したWebコンポーネント・プロジェクトに対して拡張監査を実行できます。

作成したカスタムWebコンポーネントを共有する前に、Webコンポーネントを実装するスタンドアロンJETプロジェクトを監査できます。ルール・セットbuiltinJetWcRulesは、Webコンポーネント実装の詳細の妥当性を保証するベスト・プラクティスやその他の考慮事項の検証に使用するために、コンポーネント開発者向けに提供されています。

builtinJetWcRulesルール・セットは、起動するルールを個別に細かく制御できる多数の監査グループによって定義されます。たとえば、本番に取り掛かる直前にルール・グループjetwc-pre-releaseを有効にできます。ルール・セットには、プロジェクトに固有の構成可能なルールも含まれます。すべてのルール・グループおよびグループを持つ個々のルールは、接頭辞jetwcで定義されます。

Webコンポーネント・プロジェクトで監査を実行するには、プロジェクトがカスタム・コンポーネントのソースとして作成した標準のJETプロジェクトである必要があります。具体的には、ルール・セットでは、ojet create componentおよびcreate packコマンドを使用して新しいコンポーネントまたはコンポーネント・パックを作成するときに、プロジェクト・フォルダの編成がOracle JET CLIによって作成された編成と一致している必要があります。

builtinJetWcRulesルール・セットでは、次のような実装詳細が適用されます。

  • フォルダ構造およびフォルダ内のコンポーネント名がOracle JETツールで想定されているとおりであることを確認し、その他の構造関連の問題を確認します。
  • semvar値、JETバージョン値、requireJSパス、コンポーネントAPI実装など、コンポーネント間の依存関係の妥当性をチェックします。
  • カスタム・コンポーネントのネームスペース内のコンポーネントAPIの一貫性と正確性、非テンプレート・スロットが宣言され、イベントが宣言されていること、およびプロパティが指定されたレベルにのみネストされていることを確認して、API監査上の多数の懸念事項のいくつかを特定します。
  • JETで非推奨のAPIスタイル、使用方法およびプラクティスを確認します。
  • NLSサポートをチェックして、ルート言語バンドルの場所と、指定されたロケールに翻訳バンドルが提供されていることを確認します。
  • ojcss!プラグインの存在など、テーマ適用可能なコンポーネントに関連する問題を確認します。
  • 定義した表示名の長さ制限や指定したアイコンの可用性など、Oracle Visual Builderでのコンポーネントの使用に影響する可能性がある問題を確認します。
Webコンポーネント・プロジェクトの監査を有効にし、カスタマイズ可能なルールを構成するには:
  1. builtinJetWcRulesを有効にするには、oraclejafconfig.jsonファイルを編集します。これは、Webコンポーネント・プロジェクトの基本構成です:
    {
      "jetVer": "16.0.0",
      "base": "$jafcwd",
      "files": [
        "./src/**/*.html",
        "./src/**/*.js",
        "./src/**/component.json"
      ],
      "components": [
        "./src/js/jet-composites"
      ],
      "builtinJetRules": true,
      "builtinJetWcRules": true,
      "format": "json",
      "outPath": "audit-report.json"
    }

    ファイルおよびコンポーネント・プロパティは、JETツールによって生成される標準プロジェクト・フォルダ構造内のパスを指定します。$jafcwdマクロは、ベース・ディレクトリを監査が呼び出されるディレクトリに設定します。

  2. 実行するルールのサブセットを宣言するには、oraclejafconfig.jsonファイルのgroupsプロパティを編集します。
    { "groups" : ["ruleGroup1", "ruleGroup2", ...],
    }

    JET組込みルールの場合、次に説明するように、組込みJETルール・パック・サブセットのグループ名を宣言することによって、実行するルールを指定できます。たとえば、jetwc-structureというグループ名でフォルダ構造を定義し、jetwc-apiでAPI使用ルールを定義すると、サンプルではそれらのグループに属するルールのみが有効になります。

    { "groups" : ["jetwc-structure", "jetwc-api"],
    }
    組込みWebコンポーネントのルール・グループ名 用途
    jetwc-structure ディスク全体のレイアウトがOracle JETツールで想定されているとおりであることをチェックするルール。このグループは、ほとんどのコンポーネント・セットに対して有効にする必要があります。
    jetwc-dependencies パック内またはパックをまたがるコンポーネント間の様々な依存関係を検証するルール。このグループは、すべてのコンポーネント・セットに対して有効にする必要があります。
    jetwc-pre-release 本番リリースに取り掛かる前に実行するルール。
    jetwc-api コンポーネントAPIの一貫性と正確性を検証するルール。このグループは、すべてのコンポーネント・セットに対して有効にする必要があります。
    jetwc-vb コンポーネントのVisual Builderの使用エクスペリエンスに影響を与えるものを明確にチェックするルール。
    jetwc-nls NLSサポートに関連するルール。
    jetwc-deprecations 既知の非推奨の使用方法をチェックするルール。
    jetwc-theming テーマ適用可能なコンポーネントを作成しようとしている場合に使用可能にするルール。
  3. (オプション)指定したファイルのセットがプロジェクトに存在することを確認するには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みルール・パックJETWCの接頭辞を指定し、組込みjetwc-standard-files構造ルール指定をカスタマイズします。チェックするすべてのファイルがリストされていることを確認する必要があります。
    "ruleMods" : {
               "JETWC": {
                          "jetwc-standard-files":{
                              "files":["README.md","changes.txt","version.mf"]
                        }
     }

    jetwc-standard-filesルールは、デフォルトでREADME.mdおよびCHANGELOG.mdファイルをチェックしますが、このルールをカスタマイズする場合は、それらをリストする必要があります。

  4. (オプション) WebコンポーネントをVisual Builderで使用する際にdisplayNameプロパティに長さ制限を課すには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みルール・パックJETWCの接頭辞を指定して、組込みjetwc-displayname Visual Builderルール指定をカスタマイズします。
    "ruleMods" : {
                "JETWC":{
                          "jetwc-displayname":{
                             "enabled":true,
                             "limits":{"component":{"length":30,"words":4},
                                       "property":{"length":30,"words":3},
                                       "event":{"length":30,"words":3},
                                       "template":{"length":40,"words":8}}
                        }
    }

    文字と語の数は、コンポーネント・パレット(コンポジットとパターン)またはVisual Builderアプリケーション・テンプレートに表示されるコンポーネント、およびプロパティ・インスペクタのイベントとプロパティに対して構成できます。

  5. (オプション)使用可能とみなされるコンポーネントのdefine()またはrequire()コールで使用されるrequireJSパスのリストを指定するには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みルール・パックJETWCの接頭辞を指定して、組込みjetwc-require-paths依存関係ルール指定をカスタマイズします。たとえば、JQueryおよびVB (Visual Builder)パスを禁止する場合は、standardPathsリストから削除します。
    "ruleMods" : {
                "JETWC":{
                          "jetwc-require-paths":{
                             "enabled":true,
                             "standardPaths":["ojs","knockout","hammerjs","persist"]
                        }
    }

    その他の有効なパスはすべて、監査対象のファイルを所有するコンポーネントの宣言された依存関係から派生します。

    パス"./"は常に有効であるとみなされます。パス"../"は常に無効であるとみなされます。

    独自の標準パスを追加する場合は注意し、JETまたはVisual Builderの標準部分として出荷されていない依存関係を構成するパスを追加しないようにしてください。このような場合、コンポーネントは(たとえば、参照またはリソース・コンポーネントを使用して)別のコンポーネントへの明示的な依存関係を宣言する必要があります。

  6. (オプション) Webコンポーネント・プロパティのネストが目的のレベルを超えないようにするには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みルール・パックJETWCの接頭辞を指定し、組込みjetwc-property-nesting APIルール指定をカスタマイズします。デフォルトでは、ルール・チェック・プロパティのネストは2つの子レベル(サブプロパティとも呼ばれる)を超えません。3レベルを超えるサブプロパティのネストをチェックするには、示されているようにdepthを4に設定します。
    "ruleMods" : {
                "JETWC":{
                          "jetwc-property-nesting":{
                             "enabled":true,
                             "depth": 4
                        }
    }

    子レベルが2レベルを超えるプロパティのネストはお薦めしません。サブプロパティの使用をすべて禁止するには、depthを1に設定します。

  7. (オプション)指定されたロケール・リストに翻訳バンドルが存在することを確認するには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みルール・パックJETWCの接頭辞を指定し、組込みjetwc-nls-languages NLS ルール指定をカスタマイズします。JAFでは、チェック対象のロケールを構成した場合にのみ、このルールが呼び出されます。
    "ruleMods" : {
                "JETWC":{
                          "jetwc-nls-languages":{
                             "enabled":true,
                             "locales":["fr","fr-ca","de","zh-Hans|zh-CN"],
                             "strict":false
                        }
    }

    受け入れ可能な代替を区切るには、パイプ(|)記号を使用します。たとえば、サンプルでは、zh-Hansまたはzh-CNロケールが受け入れ可能であることが示されています。

    デフォルトでは、大文字と小文字の区別およびアンダースコアとハイフンに関するコードのチェックは寛大です。stricttrueに設定すると、完全一致を強制できます。

  8. jetwc-CSS-scopingルールの例外として、コンポーネント・タグ・スコープなしでコンポーネントCSSにCSSを含めることを許可するには、無視するスコープの配列を指定した構成オプションを含めます。たとえば、次の構成オプションでは:
    "ruleMods" : {
      "JETWC":{
        "jetwc-css-scoping":{
         "enabled":true,
           "customOpts":{
             "ignoreScopes":["oj-sp-color-invert-bg"]
        }
      }
    }

    oj-sp-color-invert-bgクラスがコンポーネントの親の中にあることを前提として、コンポーネント・タグ・スコープなしでコンポーネントCSSにoj-sp-color-invert-bgを含めることができます。

VComponentを含むJET Webコンポーネント・プロジェクトの監査

builtinJetWcRulesルール・セットは、従来のCCAコンポーネントで使用されるJSおよびTSファイルに加えて、VComponent TSXファイルを使用するWebコンポーネント・プロジェクトの監査をサポートします。

builtinJetWcRulesを有効にして、カスタム・コンポーネントの監査を有効にするには、oraclejafconfig.jsonファイルを編集し、builtinJetWcRulestrueに設定する必要があります。

builtinJetWcRulesルール・セットでは、Webコンポーネントが、カスタム・コンポーネントのソースとして作成された標準JETプロジェクトであると想定されます。つまり、ルール・セットでは、プロジェクトのコンテキストおよびフォルダ編成が、Oracle JET CLIツールを使用して作成されたプロジェクトと一致していると想定されます。

TSXファイルをプロジェクト監査に含めるためには、最初にコードに対してTypeScriptコンパイルを実行する必要があります。したがって、JAF構成oraclejafconfig.jsonファイルにはいくつかの追加要件があります:

  • JAF 3.3.0以降を実行している必要があります。
  • VComponentが確実に処理されるように、JAF構成のfilesプロパティ配列に.tsxファイルが含まれている必要があります。
  • JAF構成で"typescript":{"compile":true}オプションを設定する必要があります。これがない場合、.tsxファイルはスキップされます。
  • 監査対象のプロジェクトで使用されるJETバージョンはコンパイルにも使用されるため、@oracle/oraclejetを含めるnode_modulesがプロジェクトに移入されている必要があります。
  • 監査を実行するには、プロジェクトが正常にコンパイルされている必要があります。

Typescript CCAとVComponentが混在するプロジェクトの場合、oraclejafconfig.jsonファイルは次のようになります:

{
  "jetVer": "16.0.0",
  "base": "$jafcwd",
  "typescript":{
    "compile":true,
  },
  "files": [
    "./src/**/*.html",
    "./src/**/*.ts",
    "./src/**/*.tsx",
    "./src/**/component.json"
  ],
  "components": [
    "./src/js/jet-composites"
  ],
  "builtinJetRules": true,
  "builtinJetWcRules": true,
  . . .
}

CSSスタイルとWebコンポーネント・スタイルの監査

オプションのOracle JAF構成プロパティstylesetsを使用して有効なユーザー定義Webコンポーネント・スタイルのホワイトリストを作成し、未定義のJETコア・スタイル、スペルミスのあるスタイル名、(JAFには)不明なWebコンポーネント・スタイルについて監査サポートを有効にします。

組込みのJAFルール・セット内の構成可能なスタイル・ルールは、CSSスタイル診断を受け入れるか、または拒否できます。JAFでWebコンポーネントの有効なユーザー定義スタイルを受け入れることができるようにするには、stylesetsプロパティにサポートされるWebコンポーネント・スタイルのリストを指定します。Webコンポーネント・スタイルが定義されていない場合、JAFは、有効なスタイルについて偽陽性を返す場合があります。
CSSスタイルを監査し、有効なWebコンポーネント・スタイルを含めるには:
  1. 有効なWebコンポーネント・スタイルについて偽陽性を返さないCSSスタイルの監査を有効にするには、oraclejafconfig.jsonファイルのstylesetsプロパティを編集し、Webコンポーネントのネームスペースのスタイル名の配列を定義します。
    "stylesets" : [
                    // For namespace "oj-xxx"
                    "oj-xxx-color",
                    "oj-xxx-bgcolor",
                    . . .
      
                    // For namespace "oj-yyy"
                    "oj-yyy-foo",
                    "oj-yyy-bar",
                    . . .
                  ]

    このサンプルでは、JAFが有効なWebコンポーネント・スタイルを、未定義のJET組込みスタイル、スペルミスのあるスタイル名、または(JAFには)不明のWebコンポーネント・スタイルと区別します。

  2. CSSスタイルの監査を有効にし、有効なWebコンポーネント・スタイルを.txtファイルで指定するには、oraclejafconfig.jsonファイルのstylesetsプロパティを編集し、スタイル・セット・リストのファイル・パスを指定した@include()を追加します。
    "stylesets" :  [
                     @include('./stylesets/styleset-oj-sample.txt') ,    // trailing comma to terminate the included list (see below)
                     @include('./stylesets/styleset-oj-foo-bar.txt')
                   ],

    このサンプルでは、スタイル・リストを保守しやすくするために、複数のWebコンポーネントのスタイル・セット・リストの場所を指定して、スタイル・リストを構成から分離します。

    サンプルのstyleset-oj-sample.txtファイルを次に示します。末尾のカンマでスタイル・リストを終了しない場合は、前述のように、@include()の後に追加できます。

    // oj-sample styles
    "oj-sample-card-emp-image",
    "oj-sample-card-emp-name",
    "oj-sample-card-emp-initials",
    "oj-sample-card-emp-title"    <-- no trailing comma
  3. (オプション)非推奨になったスタイルに関する非推奨の詳細をレポートするには、oraclejafconfig.jsonファイルのstylesetプロパティを編集し、deprecatedプロパティとオプションのsinceおよびnoteプロパティを含むオブジェクトでスタイル名を置き換えます。
    // oj-sample styles
    "oj-sample-card-emp-image",
    {"deprecated" : "oj-sample-card-emp-name"},
    {"deprecated" : "oj-sample-card-emp-initials", "since": "8.2.0", "note": "Replace with oj-xxx"},
    "oj-sample-card-emp-title"

    このサンプルでは、非推奨のスタイル診断をレポートするようJAFに通知し、メッセージにsinceおよびnoteプロパティが追加されます。

    [10, 20] CSS class selector 'oj-sample-card-emp-name is deprecated.  // since/note properties not defined
    [10, 20] CSS class selector 'oj-sample-card-emp-initials' is deprecated (since 8.2.0). Replace with 'oj-xxx' // props defined
  4. (オプション)HTML要素(JET組込みコンポーネントを含む)およびカスタムWebコンポーネント要素でJETスタイルの検証を実施するには、oraclejafconfig.jsonファイルを編集し、組込みoj-html-styleselルール指定をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-html-stylesel" :  {
                                                  // these styles will not be checked in HTML and web component elements
                                                  "ignore": ["oj-ux-*, "oj-fwk-*"]
                                               }
                          }
                 }

    ノート:

    JAF 2.10.0以降、oj-html-styleselは、HTML要素(JETコア・コンポーネントを含む)およびカスタムWebコンポーネントで使用されるCSSスタイルを検証することで、監査ルールoj-html-styleおよびoj-html-ojstyleを置き換えます。

    JAF構成プロパティcomponentsおよびcomponentsUrlsによって定義された、HTML class属性スタイル、およびカスタムWebコンポーネントに関連付けられたスタイル・メタデータで使用されるJETスタイル(oj-で始まる)を確認します。CSSスタイルは有効なJETスタイル・クラスである必要があります。特定のクラスを無視するようにルールを構成できます。クラス文字列は正規表現として扱われるため、ワイルド・カード文字を使用できます。

  5. (オプション)非推奨のJETスタイルのチェックを実施するには、oraclejafconfig.jsonファイルを編集し、組込みoj-css-style-deprecatedルール仕様をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-css-style-deprecated" :  {
                                                           // all JET class selectors will be tested for deprecation, except these
                                                           "reject": ["oj-form-*"]
          
                                                         }
                          }
                 }

    CSSで非推奨のJETクラス・セレクタが指定されないことをチェックします。ルールは、特定のスタイル・セレクタを受け入れたり、拒否するように構成できます。クラス文字列は正規表現として扱われるため、ワイルド・カード文字を使用できます。プロパティacceptでは、宣言されたクラス・セレクタのみを非推奨についてテストするように指定されます。プロパティrejectでは、指定されたものを除くすべてのJETクラス・セレクタを非推奨についてチェックするように指定します。プロパティのacceptrejectは相互に排他的です。

  6. (オプション) CSSでJETスタイルのオーバーライドが指定されていないことを検証するには、oraclejafconfig.jsonファイルを編集し、組込みoj-css-style-overrideルール仕様をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-css-style-override" :  {
                                                           // only these styles will be tested for overrides
                                                           accept": ["oj-list*"]
          
                                                       }
                          }
                 }

    または

    "ruleMods" : {
                  "JET" : {
                            "oj-css-style-override" :  {
                                                           // all styles will be tested for overrides, except these
                                                           reject": ["oj-list*"]
          
                                                       }
                          }
                 }

    CSSでJETスタイルのオーバーライドが指定されていないことをチェックします。ルールは、特定のスタイル・クラスを受け入れたり、拒否するように構成できます。クラス文字列は正規表現として扱われるため、ワイルド・カード文字を使用できます。プロパティacceptでは、宣言されたクラス・セレクタのみを非推奨についてテストするように指定されます。プロパティrejectでは、指定されたものを除くすべてのJETクラス・セレクタを非推奨についてチェックするように指定します。プロパティのacceptrejectは相互に排他的です。

    ノート: すべての.oj-*スタイルをオーバーライドについてチェックする必要がある場合は、空のreject配列を宣言します。rejectで定義されたスタイルを除くすべてのスタイルがチェックされるため、すべての.oj_*スタイルがチェックされることになります。

  7. (オプション)オーバーライドされたCSS変数の使用のチェックを実施し、使用しないようにするには、ベスト・プラクティスとして、oraclejafconfig.jsonファイルを編集し、組込みoj-css-var-overrideルール仕様をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-css-var-override": {
                                                        "var": {
                                                                 // 'ignore' is used to ignore any overridden CSS vars that match 
                                                                 "ignore": ["^oj-foo"]    //  e.g.  ignore CSS vars starting with oj-foo
                                                               }
                                                    },
                            "oj-css-style-bp-font":  {
                                                        "var": {
                                                                 // 'accept' is used to report only on overridden CSS vars that match 
                                                                 "accept": ["^oj-foo"]    //  e.g.  report only CSS variables beginning with oj-foo
                                                               }
                                                      },
                          }
                 }

    正規表現文字列を使用するオプションのCSS変数名をこのルールのオプションに追加して、監査を制御できます。このルールでは、構成プロパティruleModsを使用してルール・オプションvarをオーバーライドできます。varプロパティには、相互に排他的な2つのサブプロパティignoreおよびacceptがあります。

  8. (オプション)スタンドアロンCSSまたはHTML <style>に埋め込まれた色参照のチェックを実施するには、oraclejafconfig.jsonファイルを編集し、組込みoj-html-style-bp-colorおよびoj-css-style-bp-colorルール仕様をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-html-style-bp-color": {
                                                        // only this CSS property audited for color references
                                                        "accept": ["background-color"]
                                                      },
                            "oj-css-style-bp-color":  {
                                                        // do not audit these properties for color references
                                                        "reject": ["background-image", "border"]
                                                      }
                          }
                 }

    CSS(スタンドアロンまたはHTML <style>内の埋込み)での色参照の使用をチェックします。特定のCSSプロパティにある色参照を受け入れたり、拒否するように構成できます。プロパティacceptでは、宣言されたプロパティのみを監査するよう指定します。プロパティrejectでは、指定されたプロパティを除くすべてのプロパティを監査するよう指定します。プロパティのacceptrejectは相互に排他的です。

  9. (オプション)スタンドアロンCSS内またはHTML <style>に埋め込まれているfont-sizeおよびfont-weightの使用のチェックを実施するには、oraclejafconfig.jsonファイルを編集し、組込みoj-html-style-bp-fontおよびoj-css-style-bp-fontルール仕様をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-html-style-bp-font": {
                                                        // only this CSS font property will be audited
                                                        "accept": ["font-size"]
                                                     },
                            "oj-css-style-bp-font":  {
                                                        // accept font-size, but reject font-weight audits
                                                        "reject": ["font-weight"]
                                                     }
                          }
                 }

    CSS(スタンドアロンまたはHTML <style>内の埋込み)でのfont-sizeおよびfont-weightの使用をチェックします。特定のCSSプロパティにあるフォント参照を受け入れたり、拒否するように構成できます。プロパティacceptでは、宣言されたプロパティのみを監査するよう指定します。プロパティrejectでは、指定されたプロパティを除くすべてのプロパティを監査するよう指定します。プロパティのacceptrejectは相互に排他的です。

  10. (オプション)スタンドアロンCSSまたはHTML <style>に埋め込まれた特定のfont-family値の使用を強制的に確認するには、oraclejafconfig.jsonファイルを編集して、組込みoj-html-style-bp-font-familyおよびoj-css-style-bp-font-familyルール指定をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-html-style-bp-font-family": {
                                                        // only this CSS font family will be audited
                                                        "accept": ["Oracle Sans"]
                                                     },
                            "oj-css-style-bp-font-family":  {
                                                        // ignore these
                                                        "ignore": ["inherit", "initial"]
                                                     }
                          }
                 }

    これらのルールは、特定のCSSプロパティで見つかったフォント・ファミリ値を受け入れるか無視するように構成できます。プロパティacceptでは、宣言されたフォント・ファミリのみを監査するよう指定します。プロパティignoreでは、指定されたフォント・ファミリを除くすべてのフォント・ファミリを監査するよう指定します。プロパティのacceptignoreは相互に排他的です。

  11. (オプション)スタンドアロンCSSまたはHTML <style>に埋め込まれたCSS絶対長の単位の使用を強制的にチェックして、相対単位に置換できるようにするには、ベスト・プラクティスとして、oraclejafconfig.jsonファイルを編集し、組込みoj-html-style-abs-unitsおよびoj-css-style-abs-unitsルール仕様をカスタマイズします。
    "ruleMods" : {
                  "JET" : {
                            "oj-html-style-abs-units": {
                                                        "absunits": {
                                                                       // only px quantities > 2 will be audited 
                                                                       "px": 2,
                                                                        ...
                                                                    }
                                                       },
                            "oj-css-style-abs-units":  {
                                                        "absunits": {
                                                                       // all units other than px have a threshold
                                                                       "all": 2,
                                                                       // only px quantities > 2 will be audited 
                                                                       "px": 2,
                                                                        ...
                                                                    }
                                                       },
                          }
                 }

    CSS (スタンドアロンまたはHTML <style>に埋め込まれた)でCSS絶対長の単位が使用されているかどうかを確認します。オプションの数量しきい値は、すべての単位または各単位に設定できます。たとえば、「px」のしきい値として2が設定されている場合、絶対値がしきい値2より大きい数量のみ診断が出力されます。CSSルールの場合は、オプションで正規表現を介して特定のルール・セレクタを構成することもできます。2つのオプションのルール・オプション・プロパティは、absunitsおよびselectorsです。selectorプロパティ(ルールoj-css-style-abs-unitsのみ)には、相互に排他的なサブプロパティacceptおよびignoreがあります。プロパティacceptでは、宣言されたセレクタのルール・ブロック内のプロパティのみをテストするように指定されます。プロパティignoreでは、一致するセレクタをすべて無視するように指定されます。

    ルールoj-css-style-abs-unitsの場合のみ、selectorsプロパティを個別に指定するか、absunitsとともに指定して、ルール内のセレクタ・クラスに基づいてスコープを設定できます。セレクタ文字列は、正規表現文字列です。absunitsselectorsの両方が指定されている場合、AND条件とみなされます。その場合、指定されたしきい値を超え、selectorsリストに一致する単位のみがレポートされます。

    "ruleMods" : {
                  "JET" : {
                            "oj-css-style-abs-units": {
                                                        "absunits": { ... },
                                                        "selectors": {
                                                                        // ignore absolute units in rule blocks with selector classes ending in "-image"
                                                                        "ignore": ["-image$"]
                                                                     }                                                   }
                            "oj-css-style-abs-units":  {
                                                        "absunits": { ... },
                                                        "selectors": {
                                                                        // ignore absolute units in rule blocks with selector classes ending in "-image"
                                                                        "accept": ["-image$"]
                                                                     }
                                                       },
                          }
                 }

Oracle JETの非推奨機能の監査

デフォルトでは、Oracle JAF構成は組込みJETルール・パックのすべてのルールを処理します。これには、非推奨のOracle JET機能を検出するルールも含まれます。JAF構成ファイルのオプションのgroupsプロパティを使用して、jet-deprecatedルール・グループをJAF構成に追加することで、非推奨機能に関連するルールのみを処理するように監査をカスタマイズします。

監査でjet-deprecatedルール・グループを構成すると、JAFに構成したJETリリース・バージョンで非推奨になった機能(非推奨のJET APIメソッドおよびメンバーや非推奨のJETカスタムHTMLコンポーネントなど)の存在が警告されます。jet-deprecatedルール・グループの処理はJETリリース・バージョンによって異なりますが、次のようなルールがアプリケーションに適用されると考えられます。
  • oj-js-ojcomp-deprecated - 非推奨のJETコンポーネント・クラスをインスタンス化しないでください。
  • oj-html-ojtag-deprecated - 非推奨のJETカスタム・コンポーネントを使用しないでください。
  • oj-js-comp-attr-deprecated - 非推奨のJETコンポーネント・クラスを参照しないでください。このルールの範囲は、後で説明するようにJAF構成ファイルのruleModsプロパティによって構成できます。
  • oj-js-comp-meth-deprecated - 非推奨のJETコンポーネント・クラス・メソッドを呼び出さないでください。このルールの範囲は、後で説明するようにJAF構成ファイルのruleModsプロパティによって構成できます。
  • oj-html-ojattr-deprecated - 非推奨のJETコンポーネント属性を使用しないでください。
  • oj-html-ojslot - 非推奨のJETコンポーネント<oj-slot>を使用しないでください。これはバインディング専用要素であり、アクセス可能なプロパティとメソッドがある完全なカスタム要素ではないためです。
  • oj-html-style-deprecated -非推奨CSSスタイルのJETコンポーネントclass属性を使用しないでください。
  • oj-css-style-deprecated -非推奨のJET CSSクラス・セレクタは使用しないでください。
非推奨の機能を監査するには:
  1. すべての監査でjet-deprecatedルール・グループを排他的に処理できるようにするには、oraclejafconfig.jsonファイルのgroupsプロパティを編集します。
    { "groups" : ["jet-deprecated"]
    }

    groupsプロパティ設定が変更されるか、ojafユーティリティ・コマンドラインで1回の監査についてオーバーライドされるまで、JAFはjet-deprecatedルール・グループのみを処理します。

  2. または、1回の監査についてjet-deprecatedルール・グループの排他的な処理を有効にするには(構成ファイルの編集なし)、次のojafコマンドを入力します。
    ojaf --groups jet-deprecated

    コマンドラインで入力するコマンドは、現在の監査の間、JAF構成ファイル内の対応するプロパティ設定をオーバーライドします。

  3. 非推奨または削除されたメンバーおよびメソッドをチェックする監査ルールの範囲を構成するには、oraclejafconfig.jsonファイルのruleModsプロパティを編集し、組込みルール・パックの接頭辞JETを指定し、sureおよびunsure信頼度オプションの有効ステータスを指定してscopeプロパティのdeprecatedおよびdeletedサブプロパティを設定します。
    "ruleMods" : {
                   "JET" : {
                            "oj-js-comp-attr-deprecated" : {
                                                             "scope" : {
                                                                         "deprecated" : {
                                                                                          "sure" : true,
                                                                                          "unsure" : false
                                                                                        },
                                                                          "deleted" : {
                                                                                        "sure" : true,
                                                                                        "unsure" : false
                                                                                      }
                                                                       }
                                                          },
                           "oj-js-comp-meth-deprecated" : {
                                                            "scope" : {
                                                                        "deprecated" : {
                                                                                         "sure" : true,
                                                                                         "unsure" : false
                                                                                       },
                                                                        "deleted" : {
                                                                                      "sure" : true,
                                                                                      "unsure" : false
                                                                                    }
                                                                      }
                                                          }
                        }
               }

    このサンプルは、信頼度オプションsureおよびunsureのデフォルト値を示しています。これらは、ruleModsプロパティを使用して、削除済/非推奨のメンバーや機能を検出する監査ルールを構成するために指定されます。JavaScript/TypeScriptの静的分析の際には、obj.fn()およびobj.memobjの内容を確実に判別できない可能性があります。このため、既知の削除済/非推奨のメンバーや機能が検出されたが、objの内容に対するルールの確実性が低いケースでは、ルールのノイズが増加します。監査レポートのノイズを減らすには、監査の信頼度を設定してこれらのルールの範囲を構成できます。すべてのプロパティはオプションです。ruleModsプロパティの詳細は、「監査ルールの実行時プロパティの構成」を参照してください。

  4. jet-deprecatedルール・グループのルールの詳しい説明を表示するには、次のojafコマンドを入力します。
    ojaf -r