jshint静的コード検出ツール

5917 ワード

インストール
npm install jshint -g

プロジェクトで使用可能なファイル:
  • .jshintrc jshintプロファイル/または--configコマンドで指定します.jsonファイル
  • .jshintignore jshintは、検出するファイルを無視しない/または--exclude-pathコマンドで指定する.gitignore
  • reporter.jsカスタムjshintの出力方法は、本明細書の添付ファイル:reporter
  • を参照してください.
    使用
    ide拡張
    主流のideには独自の拡張プラグインがあり、ここではvscodeで簡単に説明します.vscodeの左側のアプリストアでjshintを検索するのが1位です.プロジェクトに合わせるjshintrcファイルはideでエラーを報告できます.
    jshint CLI
    jshint持参コマンドライン

    説明する
    jshint myfile.js
    jshintの実行
    jshint --reporter=myreporter.js myfile.js
    Reporterの定義
    jshint --verbose myfile.js
    出力にエラーコードを入れる
    jshint --show-non-errors myfile.js
    出力にエラーメッセージを入れる
    jshint --exclude path
    lintedされたくないディレクトリに追加
    jshint --exclude-path
    指定jshintignore
    --prereq
    グローバル変数の指定
    jshint --help
    ヘルプ
    jshint --version
    バージョン#バージョン#
    ...
    ...
    エラーメッセージをブロック
    jshintは、異なるプロジェクトのニーズとプログラマーの習慣に基づいて、エラーや警告のヒントをオンまたはオフにするためのoptionオプションを提供します.しかし、構成によって削除できないヒントもあります.△これはちょっとうるさい..次のように使用できます.
    /* jshint -W034 */
    

    対応する警告を削除します.このW 034がエラーコードです.具体的には、
    jshint --verbose myfile.js
    myfile.js: line 6, col 3, Unnecessary directive "use strict". (W034)
    

    あるいはideのヒントもエラーコードを直接提示します.(note:一般警告のエラーコードはWで始まり、エラーコードはEで始まる)遮蔽されたエラーを再起動したい場合は
    /* jshint +W034 */
    

    構成方法
    次のconfig構成を順番に検索します.
  • jshint--config.path/myconfig.json指定config
  • package.jsonにjshintConfigプロパティを追加し、プロパティにパラメータを構成します.
  • プロジェクトのルートディレクトリに1つ追加する.jshintrcのjsonプロファイルは、コードファイルディレクトリから見つかるまで実行されます.jshintrcファイル.グローバルのデフォルト構成では見つかりません.jshintrcファイル.

  • Inline configuration
    以上の3つの方法jshintに加えて、行内構成もサポートされています.同様に、ファイルまたは関数の先頭に次を追加します.
    /* jshint undef: true, unused: true */
    /* globals MY_GLOBAL */
    

    行の構成には、次の方法があります.
    jshintの先頭に複数のオプションがカンマで区切られます
    /* jshint strict: true */
    

    globalsの先頭に、undefオプションの有効化時に未定義変数のエラーを適用しないようにグローバル変数を識別します.
    /* globals MY_LIB: false */
    

    exported、グローバル変数を識別unusedオプションが有効になっている間に変数がエラーを報告しないようにする
    /* exported EXPORTED_LIB */
    

    ignore,ignoreのコードはjshint検出をしません
    // Code here will be linted with JSHint.
    /* jshint ignore:start */
    // Code here will be ignored by JSHint.
    /* jshint ignore:end */
    

    falls through、Switch statementsがbreakエラーを報告しないことを避ける
    switch (cond) {
        case "one":
            doSomething(); // JSHint will warn about missing 'break' here.
            /* falls through */
        case "two":
            doSomethingElse();
    }
    

    jshintrcパラメータ
    リファレンスhttp://jshint.com/docs/options/
    具体的なパラメータは、上記の公式ドキュメントを参照してください.ここではあまり紹介しません.
    例:
    {
        //    :
    
        //use es6. 3/5/6
        "esversion": 6,
    
        //           
        "curly": true,
    
        //   true,         ==  !=,     ===  !==。
        "eqeqeq": false,
    
        //    js           。
        "futurehostile": true,
    
        //     typeof     
        "notypeof": true,
    
        //        
        //    4  :"inner"                 ;"outer"        ;
        // false  inne  ; true       
        "shadow": "inner",
    
        //ECMAScript 5    
        // "global" -          "use strict";
        // "implied" -       "use strict";
        // false -         
        // true -           "use strict"; 
        "strict": "implied",
    
        //     
        "undef": true,
    
        //       
        "unused": true,
    
        //    true ,    var    
        // "varstmt": true,
    
        // "globals": {
        //     "require": true
        // },
    
        //    :
    
        //         
        "asi": true,
    
        //    :
        //            ,   window,document;
        //  :          alert  console。
        "browser": true,
    
        //           ,        : console, alert  
        "devel": true,
    
        //                    node      
        "node": true,
    
        //      JSHint,         ECMAScript 6  。                。
        "module": true,
    
        //           jQuery 。
        "jquery": true
    
    }
    

    ここで言うのはoptionの中で強化オプション、緩和オプション、環境オプションのほかにいくつかの特殊なオプションがあります:entend
    {
      "extends": "../.jshintrc",
      "globals": {
        "test": false,
        "assert": false
      }
    }
    //                           
    

    overrides
    {
      "shadow": false,
      "overrides": {
        "lib/*-test.js": {
          "expr": true
        }
      }
    }
    //              
    

    アタッチメント
    reporters JSHint Reporter.jsは、jshintのデフォルト出力メソッドの代わりにカスタマイズされたファイルです.jshintコマンドでReporterを実行できます
    jshint --reporter=myreporter.js myfile.js
    

    次に例を示します.
    "use strict";
    
    module.exports = {
      reporter: function (res) {
        var len = res.length;
        var str = "";
    
        res.forEach(function (r) {
          var file = r.file;
          var err = r.error;
    
          str += file + ": line " + err.line + ", col " +
            err.character + ", " + err.reason + "
    "; }); if (str) { process.stdout.write(str + "
    " + len + " error" + ((len === 1) ? "" : "s") + "
    "); } } };

    上記の例でresに格納されているerrorのフォーマットは、次のとおりです.
    [
      {
        file: 'demo.js',
        error:  {
          id: '(error)',
          code: 'W117',
          reason: '\'module\' is not defined.'
          evidence: 'module.exports = {',
          line: 3,
          character: 1,
          scope: '(main)',
    
          // [...]
        }
      },
    
      // [...]
    ]
    

    もしあなたがexporterでいくつかの間違いを報告することを禁止したいなら、判断を書くことができます.error.code=='Wxxx'の場合return.
    参照先:http://jshint.com/docs/