4.3. 業務画面JSP検証ツール

4.3.1. 概要

本ツールは、JSPファイルに対して以下のような検証を行う。

なお、検証の内容は設定ファイルで変更することが可能であり、また、検証内容自体を追加することもできる。

実装済

  • 業務画面のJSPでは使用を許可されているタグのみが利用されていることを検証できる。
  • JSPで必須となる構造が満たされていることを検証できる。
  • JSPで禁止されている構造を使用していないことを検証できる。
  • 各タグに指定されている属性が、タグに定義されている属性であることを検証できる。

未実装

  • 各タグの属性値が、その属性のtypeにあった値となっていることを検証できる。

4.3.2. 初期環境構築

4.3.2.1. Node.jsのインストール

本ツールは、 Node.js に依存しているため、下記サイトから使用する環境に合わせたインストーラをダウンロードし、インストールすること。

4.3.2.2. 環境変数の確認

プロキシ環境下で下記の手順を実施する際には、以下の環境変数の値を確認すること。

環境変数名
HTTP_PROXY HTTP用プロキシサーバのURL
HTTPS_PROXY HTTPS用プロキシサーバのURL

4.3.2.3. 依存パッケージのインストール

本ツールは、いくつかのオープンソースライブラリに依存している。(依存しているライブラリについては、 package.json を参照のこと。)

それらのインストールを行うために、本ツールのルートディレクトリ( package.json の配置されているディレクトリ)で、以下のコマンドを実行する。

実行ディレクトリ コマンド 確認内容
本ツールのルートディレクトリ( package.json の配置されているディレクトリ) npm install
  • コマンドが正常に完了していること。
  • ルートディレクトリに node_modulesディレクトリが作成されていること。

重要

上記の手順で依存パッケージをインストールするためには、インターネットに接続している環境である必要がある。

また、プロキシ環境下である場合には、以下の環境変数にプロキシサーバのアドレスが設定されている必要がある。

  • http_proxy :例)http_proxy=http://proxy.example.com:8080
  • https_proxy :例)https_proxy=http://proxy.example.com:8080

なお、インターネットに接続していない環境にインストールする場合には、 いったんインターネットに接続している環境で上記手順を実施し、ルートディレクトリに作成される node_modules ディレクトリを、対象の環境に解凍した本ツールのルートディレクトリに 配置することで利用することができる。

4.3.2.4. 正常に使用できることの確認

本ツールのルートディレクトリで、以下のコマンドを実行し、すべてのテストが成功することを確認する。

実行ディレクトリ コマンド 確認内容
本ツールのルートディレクトリ( package.json の配置されているディレクトリ) npm test
  • テストがすべて成功していること。

4.3.2.5. 環境依存設定値の修正

verification_config.json の下記の設定値を、実際にタグファイルが配置されているディレクトリに修正する。

"TagAttributeVerifier": {
  "directory": "C:\\nablarch\\workspace\\tutorial\\main\\web\\WEB-INF\\tags\\widget",
  "encoding": "utf-8"
}

4.3.3. ツールの使用方法

4.3.3.1. batファイルでの実行

本ツールのルートディレクトリにある、 jsp_verifier.bat にファイルを Drag&Drop する。

コマンドラインウィンドウが表示され、検証エラーが0件だった場合には、

Verification Succeeded.

と表示され、検証エラーが1件以上あった場合には、

Verification Failed!!
12 violations are found.
Detected violations are dumped to violations-1390366626297.log.

のように、エラー内容が出力されたファイル名が表示される。

4.3.3.2. コマンドラインからの実行

本ツールのルートディレクトリで、以下のコマンドを実行する。

node bin/jsp_verifier <検証対象JSPファイルパス(複数可)>

標準出力の出力内容は、上記のとおり。

4.3.4. 設定方法

ルートディレクトリの、 verification_config.json が本ツールの設定ファイルとなっている。このファイルに実施する検証内容及び、 各検証内容ごとの設定を記載することで、検証が行われる。

重要

下記の設定ファイル例では説明のために、JavaScript形式でコメントを記載しているが、実際のJSONファイルにはコメントを記載できない。

{
  // verifiers内に、実施する検証内容を記載していく。
  "verifiers": {
    // 使用可能タグ検証
    "TagUsageVerifier": {
    }
    // 正規表現検証
    "RegexpBasedVerifier": {
    }
    // DOMツリー検証
    "SelectorBasedVerifier": {
    }
    // 親タグ検証
    "WrappingTagVerifier": {
    }
    // タグ属性検証
    "TagAttributeVerifier": {
    }
    // ここに定義されていない検証は実施されない
  }
}

4.3.4.1. 既定の設定内容

4.3.4.1.1. 使用可能タグ検証

以下の、使用が許可されているタグのみを利用していること。

  • n:form
  • n:set
  • n:write
  • n:ConfirmationPage
  • n:forConfirmationPage
  • n:forInputPage
  • n:param
  • n:hidden
  • t:page_template
  • t:errorpage_template
  • box:.*
  • button:.*
  • field:.*
  • link:.*
  • tab:.*
  • table:.*
  • column:.*
  • spec:.*
  • c:if
  • jsp:attribute
  • %–
  • %@page
  • %@taglib

4.3.4.1.2. 正規表現検証

以下の正規表現にマッチする文字列が存在しないこと(大文字・小文字は区別しない)。

  • /> (自己終了エレメント。自己終了エレメントを利用すると、その要素以降の記述内容が描画されなくなるため禁止。)

4.3.4.1.3. DOMツリー検証

以下の、禁止されている構造を使用していないこと。

  • table:not([id]) (テーブルを複数表示する場合にIDが必須となるため、テーブルにはIDを強制。)
  • table:not([listSearchInfoName]) (テーブルにはlistSearchInfoNameがないと結果件数が表示されないため、listSearchInfoNameを強制。)

4.3.4.1.4. 親タグ検証

以下の、必須となる構造が満たされていること

  • tableウィジェットは、n:formで囲む必要がある。
  • buttonウィジェットは、n:formで囲む必要がある。
  • 設計書ビューで画面項目定義に表示されるウィジェットは、spec:layoutで囲む必要がある。

4.3.4.1.5. タグ属性検証

JSPで使用されているタグ(C:\nablarch\workspace\tutorial\main\web\WEB-INF\tags\widget\ 配下にtagファイルが格納されているもの)の属性が、 実際にタグに定義されている属性であること。