Webプロジェクトのjavascriptがかなり多くのコードを占有し、クライアントスクリプトが1行または2行のjqueryプラグイン呼び出しで「インラインスクリプト」の範囲を超えて大きくなると、その妥当性を検証する問題が非常に明確に発生します(。基本的にjsから:))。
理想的には、プロジェクトをビルドするときに、VSウィンドウにエラー/警告が通常表示されるjavascriptを「コンパイル」するコンパイラーが必要でした。
そのようなコンパイルのために多くのユーティリティがすでに書かれており、私は既存のソリューションの短いレビューをしました 。
要するに、JavaScriptはjslint 、 jshint 、およびgoogle closureを使用してチェックできます。 後者が最も幅広い可能性を持っていると推測するのは簡単であり、Visual Studioへの統合のための少なくともいくつかの既製の ソリューションがあります。
この記事では、Visual Studioの別のGoogleクロージャー統合ユーティリティ、つまりjsvalidatorについて説明します。これは、上記の分析の後に作成した小さなオープンソースプロジェクトです。
私の実装の主な違いは、統合の容易さと、特定の種類のアラートの表示を構成する機能です。
JsValidatorは、 Googleクロージャ Javaライブラリを使用してJavaScriptをチェックするjsonに似た設定ファイルでpost-build-eventによって実行されるユーティリティです。 これから最初の要件が続きます-ユーティリティが機能するには、コンピューターにjavaがインストールされている必要があります(java.exeがシステムパス(システムパス)に追加されている)。
ユーティリティを各ビルドに統合すると、Visual Studioは次のようになります。

(この場合、ユーティリティは宣言されていない変数asdを通知します。エラーをダブルクリックすると、以前と同じように、エラーのある行のjsファイルが開きます)。
jsvalidatorをプロジェクトに統合するには、JsValidator nugetパッケージをインストールするだけで十分です。 ナゲットを使用しない場合は、パッケージが実行するすべての手順を手動で自動で実行できます。
- ライブラリバイナリをダウンロードし、たとえば$(SolutionDir)/ JsValidatorBinフォルダーに解凍します。
- ASP.Netプロジェクトで構成ファイルを作成します(たとえば、 Scripts / jsvalidator / config.js内 )。 最も単純な場合、次のようになります。
{ "inputs": [ "../_test.js" ] }
_test.jsファイルへのパスは、プロジェクトのjsファイル(またはjsファイルがあるフォルダー)へのパスに置き換えることができます。 すべてのパスは、config.js構成ファイルの場所を基準にする必要があります。
- JsValidatorをビルド後イベント(プロジェクト/プロパティ/ビルドイベント/ビルド後イベントコマンドライン)としてasp.netプロジェクトに追加します。 post-build-event'a行は次のようになります。
"$(SolutionDir)JsValidatorBin\jsvalidator.exe" "$(ProjectDir)Scripts\jsvalidator\config.js"
(例以外の方法でjsvalidatorを解凍した場合、パスを修正する必要があります) - 以上です! プロジェクトをコンパイルし、javascriptにエラーがないことを確認してください:)
上記では、1行で構成される単純な構成ファイルの例を示しました。 実際の設定はそれほど複雑ではありません。 それらの1つの例を次に示します。
{ inputs: [ "../../Scripts/zw_Runtime.js", "../../Scripts/UC/", "../../Scripts/jquery.common.js"], externs: ["//jquery-1.7.js"], IgnoreAllWarnings: "true", Warnings: [".* is never defined"] }
各パラメーターが何を担当しているかを解読します。
- 入力(文字列の配列) チェックするファイル/フォルダーへのパスを指定します。 最も単純で、最も明白で必要なオプション:)
- externs(文字列の配列) 。 検証に必要な外部ライブラリ(jquery、mootolsなど)を指定します。 Google Closureのexternsパラメーターに類似しています。 Googleには、外部ライブラリとして接続するために準備された人気のあるライブラリの「ドキュメント化された」バージョンがいくつかあります。 このソースのライブラリは、「//」プレフィックスを使用して使用できます。 上記の例では、ファイルでjqueryライブラリバージョン1.7を使用することが可能であると言います。
- IgnoreAllWarnings(ブール値) 。 「真」または「偽」(デフォルトは「偽」)。 見つかった「警告」は無視されます(見つかった「エラー」のみが表示されます)
- 警告(文字列の配列) 。 正規表現リスト; 正規表現の下での関連する「警告」は「エラー」ステータスに変換されます。
他の実装に不在であり、自転車を書くよう促されたのは彼であったため、 警告パラメーターに焦点を当てたいと思います。
Google Closureは、javascriptのすべての「疑わしい領域」をエラーと警告に分類します。 時々、いくつかの警告を無視してエラー状態に変換したい場合があります(通常、警告は非常に多く生成され、通常、それらを分析/修正しても意味がありません)。 このために、 警告オプションがあります。 上記のように、警告が含まれている正規表現のいずれかに該当する場合、警告はカテゴリ「エラー」に分類されます。
例には記載されていないが、役に立つかもしれない他のオプションがいくつかあります。
- TreatNoJavaAsWarning(ブール値) 。 値はtrueまたはfalseです(デフォルトはfalseです。つまり、コンピューターにJavaがインストールされていない場合、エラーが生成されます)
- IgnoreWarnings(ストリングの配列) 。 正規表現の「警告」に適した正規表現のリストがマークされています。
クロージャコンパイラのパラメータを反映する他のパラメータがいくつかあります。 通常、これらのパラメーターを変更する必要はありません。 プロジェクトページ (CompilationLevel、WarningLevel、Ccargs)で詳細に説明されています 。
それが誰かに役立つ場合-成功談と使用された設定パラメータを書き留めてください:)