Google Closureを使用したVisualStudio Javascript検証

Visual Studioでのcss検証について最近見たトピックは、Javascript検証について同様のことを書くように促しました。

Webプロジェクトのjavascriptがかなり多くのコードを占有し、クライアントスクリプトが1行または2行のjqueryプラグイン呼び出しで「インラインスクリプト」の範囲を超えて大きくなると、その妥当性を検証する問題が非常に明確に発生します(。基本的にjsから:))。



理想的には、プロジェクトをビルドするときに、VSウィンドウにエラー/警告が通常表示されるjavascriptを「コンパイル」するコンパイラーが必要でした。

そのようなコンパイルのために多くのユーティリティがすでに書かれており、私既存のソリューションの短いレビューをしました



要するに、JavaScriptはjslintjshint 、および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パッケージをインストールするだけで十分です。 ナゲットを使用しない場合は、パッケージが実行するすべての手順を手動で自動で実行できます。

  1. ライブラリバイナリをダウンロードし、たとえば$(SolutionDir)/ JsValidatorBinフォルダーに解凍します。
  2. ASP.Netプロジェクトで構成ファイルを作成します(たとえば、 Scripts / jsvalidator / config.js内 )。 最も単純な場合、次のようになります。

    { "inputs": [ "../_test.js" ] }
          
          





    _test.jsファイルへのパスは、プロジェクトのjsファイル(またはjsファイルがあるフォルダー)へのパスに置き換えることができます。 すべてのパスは、config.js構成ファイルの場所を基準にする必要があります。

  3. JsValidatorをビルド後イベント(プロジェクト/プロパティ/ビルドイベント/ビルド後イベントコマンドライン)としてasp.netプロジェクトに追加します。 post-build-event'a行は次のようになります。

     "$(SolutionDir)JsValidatorBin\jsvalidator.exe" "$(ProjectDir)Scripts\jsvalidator\config.js"
          
          





    (例以外の方法でjsvalidatorを解凍した場合、パスを修正する必要があります)
  4. 以上です! プロジェクトをコンパイルし、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"] }
      
      





各パラメーターが何を担当しているかを解読します。





他の実装に不在であり、自転車を書くよう促されたのは彼であったため、 警告パラメーターに焦点を当てたいと思います。

Google Closureは、javascriptのすべての「疑わしい領域」をエラーと警告に分類します。 時々、いくつかの警告を無視してエラー状態に変換したい場合があります(通常、警告は非常に多く生成され、通常、それらを分析/修正しても意味がありません)。 このために、 警告オプションがあります。 上記のように、警告が含まれている正規表現のいずれかに該当する場合、警告はカテゴリ「エラー」に分類されます。



例には記載されていないが、役に立つかもしれない他のオプションがいくつかあります。





クロージャコンパイラのパラメータを反映する他のパラメータがいくつかあります。 通常、これらのパラメーターを変更する必要はありません。 プロジェクトページ (CompilationLevel、WarningLevel、Ccargs)で詳細に説明されています



それが誰かに役立つ場合-成功談と使用された設定パラメータを書き留めてください:)



All Articles