WEBLINT(1)

NAME
Weblint 97, jweblint 97 - web ページ (HTML) の誤りを摘み取る

SYNOPSYS
jweblint [ -d id ] [ -e id ] [ -f filename ] [ -i ] [ -l ] [ -s ] [ -stderr ] [ -t ] [ -todo ] [ -help ] [ -U ] [ -urlget command ] [ -v ] [ -version ] [ -warnings ] [ -x extension ] [ -c codetype ] [ -explain ] file1 .. fileN

DESCRIPTION

Weblint 97 は, Weblint v1.017 をベースに国際化 (I18N) に対応した, HTML ページの誤りを摘み取るための Perl スクリプトであり, jweblint 97 は, Weblint 97 を日本語環境に合わせて地域化 (L10N) したものである. 以下, 特に断りのない限り, jweblint 97 について説明するが, 基本的な仕様は Weblint 97 においても異なるところはない. チェックされるべきファイルはコマンドラインで以下のように渡される:
    % jweblint foobar.html ./dodgy-files/ index.html

もし引数のいずれかがディレクトリであったら, jweblint 97 はディレクトリ内を再帰し, 見つけた全ての HTML ファイルをチェックする. もし引数が URL であれば, jweblint 97 は URL 取得プログラムを使ってファイルを取得し, ファイルをチェックする:
    % jweblint http://www.foobar.com/
デフォルトでは jweblint 97 は URL の取得に lynx(1) を使用するが, これは置き換え可能である. `-' というファイル名は, jweblint 97 が標準入力から読み込むべきことを指定する:
    % lynx -source http://www.foobar.com/ | jweblint -

warning は lint 式に生成される:
    home.html(9): </A> がつり合いません (マッチする <A> が見つかりません).

jweblint 97 は以下の特徴を持つ: 60 の様々なチェックと警告. 各警告は, お好み次第で個別に有効/無効にできる. 基本的な構造とシンタックスのチェック. 不明なエレメント及びエレメントの属性の使用に対する警告. 前後関係のチェック (タグがある特定のエレメント内で現れなければならない場合). 重なり合っている, あるいは不正にネストしているエレメントに対する警告. IMG エレメントに ALT テキストがあるか? 一般にはもう使用されていないエレメントを警告する. ユーザ毎及びサイト毎の configuration ファイルのサポート. 文体のチェック. 全てのブラウザでは通用しないような HTML に対するチェック. いくつかのブラウザを混乱させるため, コメント中に埋めこまれたマークアップを警告する. 基本スペックは HTML 2.0 (RFC 1866) に準拠しつつ, 新たな標準規格である, 国際化 (I18N) 拡張 (RFC 2070) 及び HTML 3.2 (W3C Recommendation) に対応. HTML 3.2 に対する実験的な拡張案である Cougar, 及び Microsoft, Netscape の各 HTML 拡張をサポート. DOCTYPE 宣言を認識し, 自動的に適切な拡張を設定する. I18N に対応し, US-ASCII や ISO-8859-* などだけでなく, ISO-2022-* や Unicode といった, 様々なエンコーディングの HTML ドキュメントをチェックできる.

OPTIONS

-d warning-identifier
    指定した identifier に関連する warning を無効にする. 各 identifier をカンマで区切ることで, 複数の identifier を指定可能である.

-e warning-identifier
    指定した identifier に関連する warning を有効にする. 各 identifier をカンマで区切ることで, 複数の identifier を指定可能である.

-f config-file
    ユーザのデフォルト config ファイル, あるいはサイト configuration ファイルの代わりに使われるべき jweblint configuration ファイルを指定する.

-help
    簡潔な使用法の概要を表示する.

-i  エレメントタグの case (大文字・小文字) を無視する.

-l  ディレクトリ内を再帰的にチェックするとき, シンボリックリンク (ソフトリンクとしても知られる) されたファイルは全て無視する. この指定はまた, コマンドラインで指定されたファイルについても, ただ1つのファイルが指定されている場合以外は, それらがシンボリックリンクであれば無視することになる.

-pedantic
    case-sensitive 及び bad-link の警告以外の全ての警告を有効にする.

-s  ファイル名を含まない, `簡潔な' 警告メッセージを生成する.

-stderr
    警告メッセージを, 標準出力 (STDOUT) ではなく標準エラー出力 (STDERR) に出力する.

-t  簡潔な警告モードにする; 主に jweblint 97 の testsuite 時に有益である.

-U  -help と同じ.

-urlget command
    URL により指定された HTML ページを取得するために使われるべきコマンドを指定する.

-v  ヴァージョンナンバーを表示.

-version
    ヴァージョンナンバーを表示.

-todo
    オンライン版の Weblint ToDo リストの URL を表示する. これには既知のバグ, 要求された/計画された特徴などを含む.

-warnings
    全てのサポートされる warning を, warning identifier と共に, その warning が有効であるかどうかとあわせて一覧表示する.

-x extension
    指定された HTML 拡張に対するチェックを含める; カンマで区切ることにより, 複数の拡張を指定することができる. 現在サポートされている拡張は, HTML3.2, i18n, Cougar, Microsoft, 及び Netscape である. これは, 以下で述べられている jweblint 97 の configuration ファイルによっても設定可能である.

-c codetype
    指定されたコード系を扱えるようにする; 現在サポートされているコード系は, litaral, ISO-2022-7bit, Unicode, 及び Japanese (jweblint 97 のみ) である. これは, 以下で述べられている jweblint 97 の configuration ファイルによっても設定可能である.

-explain
    -x 及び -c オプションの詳細を表示する.

HTML 拡張

jweblint 97 はデフォルトでは HTML 2.0 の仕様に準拠するが, 新たな標準規格を含む, 幾つかの HTML に対する拡張をサポートする. それらはデフォルトでは認識されないが, DOCTYPE 宣言でどのヴァージョンの HTML に従っているか書いておけば, 対応する適切な拡張が自動的に設定される. 従って, 適切な DOCTYPE 宣言を書いてある限り, 後述のコマンドラインスイッチ等を使う必要はない.

以下の拡張が現在サポートされている:

HTML3.2 (alias: 3.2, Wilbur)
    W3C Recommendation となった, HTML 3.2 によりサポートされる HTML 拡張.

i18n (alias: HTML2.x, 2.x)
    RFC 2070 に規定された, HTML の国際化規格によりサポートされる HTML 拡張.

Cougar
    HTML 3.2 に対する実験的な拡張案である, Cougar によりサポートされる HTML 拡張.

Microsoft (alias: MSIE)
    Microsoft Internet Explorer version 3.0 によりサポートされる HTML 拡張.

Netscape (alias: Mozilla)
    Netscape Navigator version 3.0 によりサポートされる HTML 拡張.

拡張を明示的に有効にするには, コマンドラインスイッチ -x を使用するか:
    % jweblint -x HTML3.2 foobar.html
あるいは .weblintrc 内で extension キーワードを 使用する:
    # Allow i18n HTML extensions (RFC 2070), such as SPAN and BDO
    extension i18n

alias が設定されているものについては, HTML 拡張の名称として, 代わりにそちらを使うことも可能である. 例えば上記のコマンドラインは, 以下のように書くこともできる.
    % jweblint -x 3.2 foobar.html

複数の拡張を指定することは原理的には可能である - それらは以下のいずれかの仕組みを用いて, カンマで区切って指定する:
    % jweblint -x Microsoft,Netscape foobar.html
    extension Microsoft,Netscape
しかし, 各 HTML 拡張の仕様には互いに矛盾する箇所もあり, このような指定は決して推奨しないし, このような指定をした場合の動作も保証しない. 正しい DOCTYPE を宣言できないような拡張の指定の仕方は避けるべきである.

DOCTYPE 宣言

jweblint 97 では, DOCTYPE 宣言を認識し, それに応じて適切な拡張を自動的に設定する. 各拡張に対応する DOCTYPE 宣言は, 以下の通りである.

HTML3.2
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft 19960821//EN">
    注: 下の2つは互換性のために残されているものであり, 今後新たに書くドキュメントに用いるべきではない.

i18n
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML i18n//EN">

Cougar
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960709//EN">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960710//EN">
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Experimental 19960712//EN">
    注: 最初の DOCTYPE は, http://www.w3.org/pub/WWW/ で用いられているものである. しかし, 現在公開されている DTD では3番目の DOCTYPE が指定されており (http://www.w3.org/pub/WWW/MarkUp/Cougar/HTML.dtd 参照), Cougar を指定するのであれば3番目の DOCTYPE を推奨する.

Microsoft
    <!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN">
    <!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//EN">
    <!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML//EN">
    <!DOCTYPE HTML PUBLIC "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//EN">
    注: Microsoft 拡張は, IE 3.0 の拡張仕様を認識する. 従って, たとえ DOCTYPE で IE 2.0 が指定されていたとしても, IE 3.0 特有の拡張も有効となる.

Netscape 拡張に対応する公式な DTD はなく, 従って, いかなる DOCTYPE を宣言しようとも, Netscape 拡張が自動的に設定されることはない.

上記以外の DOCTYPE が宣言されている場合, あるいは DOCTYPE 宣言がない場合は, HTML 2.0 の DOCTYPE が宣言されたものとみなされる.

コード系の拡張

jweblint 97 は I18N に対応し, 様々なコード系を扱うことができる.

以下のコード系が現在サポートされている:

literal
    7bit または 8bit の, ASCII と上位互換性のあるコード系; 読み込んだ octet-stream はそのまま (literal に) 扱われる.
    i.e. US-ASCII, ISO-8859-*, VISCII [, 各国語 EUC]

ISO-2022-7bit
    ISO-2022 の7単位符号の拡張方法に準拠したコード系.
    i.e. ISO-2022-JP, ISO-2022-JP-2, ISO-2022-KR, ISO-2022-CN

Unicode
    UCS-2, a.k.a. Unicode; バイトオーダは, 上位バイトが先でなければならない.

Japanese (デフォルト)
    日本語自動判別 (ISO-2022-JP, EUC-JP, Shift_JIS)

※ Weblint 97 では, literal がデフォルトである.

コード系を指定するには, コマンドラインスイッチ -c を使用するか:
    % jweblint -c ISO-2022-7bit iso-2022-jp-2.html
あるいは .weblintrc 内で codetype キーワードを 使用する:
    # literal: 7 or 8 bit codes, upward compatible to ASCII;
    #          octet-streams are treated literally
    codetype literal
このオプションは, 各コード系で書かれた HTML ページのシンタックスのチェックを可能にするものであり, それらのコードで書かれたページの「表示」をサポートするものではない.

CONFIGURATION ファイル

jweblint 97 は, ホームディレクトリ内の .weblintrc (あるいは環境変数 WEBLINTRC により参照されるファイル) を用いることにより, 設定を変更することが可能である. このファイルは, ある特定の warning を有効あるいは無効にしたり, jweblint 97 の変数を設定したり, 上述のように HTML 拡張を含めたり, コード系を指定するのに用いることができる. 各 warning は, 設定ファイル内やコマンドラインから warning を参照するのに用いられる, 簡潔な識別子 (identifier) を持つ. 例えば, もしあなたが大文字でないタグに対するチェックを有効にしたいが, 廃れたエレメントに対するチェックは無効にしたいのならば, 以下のような行をあなたの .weblintrc に含めることになるであろう:
    # specify the command used to retrieve URLs (-urlget switch)
    set url-get = lynx -source
    # the style of warning message to generate (lint, short, or terse)
    set message-style = lint
    # enable warning for tags not in upper-case
    enable upper-case
    # disable the warning for obsolete tags
    disable obsolete
    # enable the HTML 3.2 extensions
    extension HTML 3.2
    # specify the code type to treat
    codetype literal
    # when recursing in a directory,
    # ignore files which are symlinks (also known as soft links)
    ignore symlinks

キーワードには, スペースあるいはタブで区切って, いくつかの引数を指定可能である. `#' に続く文字列は全てコメントとして扱われる. サンプル configuration ファイルが Weblint 97 の配布に含まれており, これは Weblint 97 の組み込みの設定を反映している. jweblint 97 はまた, サイト configuration ファイルをサポートする. もしユーザが個人の configuration ファイルを持っていなければ, jweblint 97 はローカルサイト configuration ファイルをチェックする. そのようなファイルを用意するためには, /usr/local/weblint のようなディレクトリを作成し, global.weblintrc というファイルを作成する. そして, あなたは jweblint 97 のスクリプトを編集し, ファイルの先頭付近にある, $SITE_DIR 変数を修正する必要がある. 例えば:
    $SITE_DIR = '/usr/local/weblint';
将来のある時点で, Weblint の configuration がサポートされるであろう, 従って, あなたは自分自身で直接スクリプトを修正する必要はなくなるであろう. サイト configuration ファイルがあれば, ユーザは自身の .weblintrc ファイルの先頭に以下のような行を追加することにより, サイトのデフォルト設定を受け継ぐことができる:
    use global weblintrc

WARNINGS

jweblint 97 により生成される全ての warning を, 関連する identifier とともに, そしてその warning がデフォルトで有効あるいは無効かと合わせて, 以下に列挙する.

タグ <...> が大文字ではありません.
    Identifier: upper-case
    デフォルト: disabled

タグ <...> が小文字ではありません.
    Identifier: lower-case
    デフォルト: disabled

<...> エレメントには foo 属性が必要です.
    Identifier: required-attribute
    デフォルト: enabled

<...> には属性の指定が必要です.
    Identifier: expected-attribute
    デフォルト: enabled

<...> は不明なエレメントです.
    Identifier: unknown-element
    デフォルト: enabled

<...> エレメントの `...' 属性は不明です.
    Identifier: unknown-attribute
    デフォルト: enabled

`<' と `...>' の間に空白文字を入れてはいけません.
    Identifier: leading-whitespace
    デフォルト: enabled

アンカーとして `here', `ここ', `これ', `こちら' 等を使うのは良くない形式です!
    Identifier: here-anchor
    デフォルト: enabled

HEAD エレメント内に <TITLE> がありません.
    Identifier: require-head
    デフォルト: enabled

タグ <...> は1つだけ使われるべきです.  XX 行目に1つ見られました!
    Identifier: once-only
    デフォルト: enabled

<BODY> はあっても <HEAD> がありません.
    Identifier: body-no-head
    デフォルト: enabled

一番外側のタグは <HTML> .. </HTML> であるべきです.
    Identifier: html-outer
    デフォルト: enabled

<...> は HEAD エレメント内でのみ使うことができます.
    Identifier: head-element
    デフォルト: enabled

<...> は HEAD エレメント内で使うことはできません.
    Identifier: non-head-element
    デフォルト: enabled

<...> は一般にはもう使用されていません.
    Identifier: obsolete
    デフォルト: enabled

</...> がつり合いません (マッチする <...> が見つかりません).
    Identifier: mis-match
    デフォルト: enabled

IMG に ALT テキストが定義されていません.
    Identifier: img-alt
    デフォルト: enabled

<...> はネストすることはできません -- XX 行目の <...> に対応する </...> が見つかりません.
    Identifier: nested-element
    デフォルト: enabled

HEAD の中に <LINK REV=MADE HREF="mailto..."> が見つかりませんでした.
    Identifier: mailto-link
    デフォルト: disabled

XX 行目の </...> は, YY 行目に開始された <...> と重なり合っているようです.
    Identifier: element-overlap
    デフォルト: enabled

XX 行目の <...> に対応する終了タグ </...> が見つかりません.
    Identifier: unclosed-element
    デフォルト: enabled

コメント中に埋め込まれたマークアップは幾つかのブラウザを混乱させることがあります.
    Identifier: markup-in-comment
    デフォルト: enabled

<...> エレメント内に対になっていない引用符があります.
    Identifier: odd-quotes
    デフォルト: enabled

良くないスタイルです - ヘディング <H?> が XX 行目の <H?> に続いています.
    Identifier: heading-order
    デフォルト: enabled

アンカー "..." のターゲットが見つかりませんでした.
    Identifier: bad-link
    デフォルト: disabled

予期せぬ < が <...> にあります -- 閉じられていないエレメントの可能性があります.
    Identifier: unexpected-open
    デフォルト: enabled

<...> にとって不正な文脈です - <...> エレメント内で使わなければなりません.
    Identifier: required-context
    デフォルト: enabled

コメントが閉じられていません (コメントは: <!-- ... -->).
    Identifier: unclosed-comment
    デフォルト: enabled

エレメント <...> は組になって使われません -- </...> は不正です.
    Identifier: illegal-closing
    デフォルト: enabled

<...> は物理的フォントマークアップです -- 論理的マークアップを使ってください (例えば XXX).
    Identifier: physical-font
    デフォルト: disabled

<...> エレメント内で XYZ 属性が繰り返されています.
    Identifier: repeated-attribute
    デフォルト: enabled

組合わせエレメント <...> が空です.
    Identifier: empty-container
    デフォルト: enabled

属性値のデリミッタに ' を使うのは全てのブラウザでサポートされてはいません (ABC タグの XYZ 属性).
    Identifier: attribute-delimiter
    デフォルト: disabled

終了タグ <...> には何らの属性も指定してはなりません.
    Identifier: closing-attribute
    デフォルト: enabled

directory に index file がありません (index.html).
    Identifier: directory-index
    デフォルト: enabled

<...> は <...> の直後に続かなければなりません.
    Identifier: must-follow
    デフォルト: enabled

IMG タグに WIDTH 及び HEIGHT 属性を設定することで, 幾つかのブラウザでの見栄えを向上させることができます.
    Identifier: img-size
    デフォルト: disabled

組合わせエレメント ... 内の 先頭に/末尾に 空白文字があります.
    Identifier: container-whitespace
    デフォルト: disabled

最初のエレメントが DOCTYPE の記述ではありませんでした.
    Identifier: require-doctype
    デフォルト: enabled

メタキャラクタ `...' は `...' で表されるべきです.
    Identifier: literal-metacharacter
    デフォルト: enabled

おかしなヘディングです - 開始タグは <H?> ですが, 終了タグは </H?> です.
    Identifier: heading-mismatch
    デフォルト: enabled

<...> はテキストにとって不正な文脈です; XXX の中にあるべきです.
    Identifier: bad-text-context
    デフォルト: enabled

XXX の AAA 属性の値が不正です (...).
    Identifier: attribute-format
    デフォルト: enabled

<...> は 拡張マークアップです (これを許すには `-x <extension>' を使ってください).
    Identifier: extension-markup
    デフォルト: enabled

<...> の `...' 属性は拡張マークアップです (これを許すには `-x <extension>' を使ってください).
    Identifier: extension-attribute
    デフォルト: enabled

FOOBAR エレメントの XYZ 属性の値 (ABC) は引用符で囲まれるべきです. (i.e. XYZ="ABC")
    Identifier: quote-attribute-value
    デフォルト: enabled

たとえ PRE エレメントの中であっても, '...' の代わりに '...' を使うべきです.
    Identifier: meta-in-pre
    デフォルト: enabled

<H?> を <A> の中に入れるのではなく, <A> を <H?> の中に入れるべきです.
    Identifier: heading-in-anchor
    デフォルト: enabled

HTML の仕様書は TITLE を 64 文字以内に収めることを推奨しています.
    Identifier: title-length
    デフォルト: enabled

選択された拡張 `...' は DOCTYPE 宣言と一致しません.
    Identifier: doctype-mismatch
    デフォルト: disabled

URL 中に空白文字が含まれています (...).
    Identifier: url-whitespace
    デフォルト: enabled

URL 中に `\' が含まれています -- path の区切りは `/' でなければなりません (...).
    Identifier: url-backslash
    デフォルト: enabled

URL 中に安全でない文字が含まれています (...).
    Identifier: unsafe-url
    デフォルト: enabled

アンカー "..." のターゲットは directory です/ではありません -- "..." とすべきです.
    Identifier: trailing-slash
    デフォルト: disabled

"..." は不明な実体参照です.
    Identifier: bad-entity
    デフォルト: enabled

コメント宣言中の `--' の対応が不正です.
    Identifier: unterminated-comment
    デフォルト: disabled

`file' URL はホスト限定の scheme です (...).
    Identifier: file-url
    デフォルト: enabled

watch list にある URL "..." が見つかりました.
    Identifier: url-watch
    デフォルト: disabled

非 ASCII 文字 "..." があります.
    Identifier: non-ascii
    デフォルト: disabled

環境変数

WEBLINTRC
    もしこの変数が定義されており, ファイルを参照していれば, jweblint 97 は $HOME/.weblintrc ではなく, 参照されたファイルをユーザの設定として読み込む.

TMPDIR
    jweblint 97 が一時作業ファイルを作成するディレクトリ. デフォルトでは /usr/tmp, /tmp, /var/tmp, /temp の順にサーチする.

ファイル

html-ext.pl
    jweblint 97 の HTML 拡張ライブラリである. jweblint 97 を実行する前に, このライブラリを Perl のライブラリを格納したディレクトリにインストールしておく必要がある.

htmli18n.pl
    jweblint 97 のコード系拡張ライブラリである. html-ext.pl 同様, 事前にこのライブラリをインストールしておかねばならない.

jcode.pl
    歌代和正氏作の, 漢字コード変換ライブラリである. jweblint 97 では, これも html-ext.pl や htmli18n.pl 同様, 事前にインストールしておかねばならない (Weblint 97 では不要).

$HOME/.weblintrc
    ユーザの configuration ファイル. `CONFIGURATION ファイル' の節を見よ.

ヴァージョン

この man page は, jweblint 97 v0.12 について記述している.

入手先

Weblint:
    ftp://ftp.cre.canon.co.uk/pub/weblint/weblint-1.017.tar.gz
    ftp://ftp.cre.canon.co.uk/pub/weblint/weblint-1.017.zip
    http://www.cre.canon.co.uk/~neilb/weblint/

Weblint 97 / jweblint 97:
    http://www.aichi-u.ac.jp/~mimasa/jweblint/

既知のバグ

既知のバグのリストは, weblint home page で入手できる:
        http://www.cre.canon.co.uk/~neilb/weblint/todo/

あるヴァージョンの Perl には, Weblint により誘発されるバグがある. もしあなたが 4.036, あるいは 5.003 を持っていれば, 問題を経験せずに済むはずである.

著者

    原著: Neil Bowers, Canon Research Centre Europe
    neilb@cre.canon.co.uk

    翻訳・日本語版加筆: 石川 雅康
    mimasa@aichi-u.ac.jp

貢献

多くの人々が提案, バグレポート, 修正, コードの寄稿などの形で jweblint 97 に貢献してくれた. もしあなたの名前が以下に連ねられるべきであると感じたら, 私まで e-mail で連絡して欲しい.

川戸 勝史 氏 <kawato@ksp.nis.nec.co.jp>, 歌代 和正 氏 <utashiro@iij.ad.jp>, 新出 尚之 氏 <nide@ics.nara-wu.ac.jp>, 小林 弘幸 氏 <kob@isys.eei.metro-u.ac.jp>, Mr. Jason J. Klapste <jklap@indy.eworks.com>, 大森 紀人 氏 <ohmori@p.chiba-u.ac.jp>, Mr. Larry W. Virden <lvirden@cas.org>, Mr. John F. Whitehead <jfw@wral-tv.com>, 野首 貴嗣 氏 <knok@da2.so-net.or.jp>, 喜瀬 浩 氏 <kise@imicom.or.jp>, 田村 健人 氏 <kent@muraoka.info.waseda.ac.jp>, Mr. Paul Gilmartin <pg@sweng.stortek.com>, 塩崎 毅彦 氏 <takehi-s@ascii.co.jp>, Mr. Tom Neff <tneff@panix.com>, Yoshihiro Tsukamoto 氏 <tsuka@ohsaki.meidensha.co.jp>, Mr. Ryan L. Watkins <vamp@dimensionx.com>, 河邉 岳人 氏 <kabe@dais.is.tohoku.ac.jp>, weblint-victims mailing list の皆さん, そして, Weblint という素晴らしいツールを作ってくれた Mr. Neil Bowers.