JSHint-javascript語法檢查規範工具使用及與Sublime集成

来源:http://www.cnblogs.com/zminds/archive/2016/06/21/JSHintjavascript-yu-fa-jian-cha-gui-fan-gong-ju-sh.html
-Advertisement-
Play Games

一、安裝nodejs的jshint安裝Node.js環境安裝nodejs的jshint[4] csshint二、sublime中的jshint安裝配置方式一、 使用Sublimelinter,支持css等多種語言驗證方式二、使用Sublime JSHint Gutter,僅支持js驗證三、jshin... ...



JSHint,發現錯誤和潛在問題的社區驅動的工具
JSLint 錯誤解析1

一、安裝nodejs的jshint

安裝Node.js環境

jshint其功能實現需要node.js支持,所以去node.js官網單擊找到當前平臺的版本進行下載安裝。

安裝nodejs的jshint2 csshint

$ npm   install -g jshint
$ npm   install -g csshint
#測試
$ jshint -v
$ csshint  -v
#單獨使用校驗測試
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.

1 error

二、sublime中的jshint安裝配置

方式一、 使用Sublimelinter,支持css等多種語言驗證

通過sublime的package control安裝Sublimelinter
在sublime中按下Cmd+Shift+P打開命令查找視窗,輸入pci找到packge control install回車

稍等等待彈出package查找視窗,輸入Sublimelinter,按下回車安裝。

然後使用同樣方法安裝SublimeLinter-jshint、SublimeLinter-csshint。

此時,一般情況下,你打開編輯器,查看js文件會發現,已經有了語法校驗。

查看SublimeLinter-jshint設置,右鍵 -> Sublimelinter -> Open User Settings

禁用Sublimelinter-jshint ,右鍵 -> Sublimelinter -> Toggle Linter 回車即可切換 啟用狀態

方式二、使用Sublime JSHint Gutter,僅支持js驗證

在sublime中按下Cmd+Shift+P打開命令查找視窗,輸入pci找到packge control install回車,稍等等待彈出package查找視窗,輸入js gutter,按下回車安裝。

JS Gutter配置

js gutter預設未開啟檢查,設置編輯,載入或保存時自動檢查
右鍵 -> JSHint -> Set Plugin Options 將對應設置的false改為true即可開啟檢查

{
    "lint_on_edit": true,
    "lint_on_load": true,
    "lint_on_save": true
}

三、jshint的檢查規則的三種配置方式3

1. 自定義.jshintrc文件

一般.jshintrc文件放置在模塊根目錄,如果沒有找到,會一直向上及目錄查找,直到找到文件系統的根目錄/,如果沒找到採用預設規則。

2. 配置放到項目的 package.json 文件裡面, jshintConfig 下麵

3. 內聯配置(Inline configuration)

在js文件中的註釋中配置例如:

/* jshint undef: true, unused: true */
/* globals MY_GLOBAL */

四、在Sublimelinter或者JSHint Gutter中配置.jshintrc

JSHint Gutter 右鍵 -> JSHint -> set Linting Preference 預設.jshintrc文件

Sublimelinter 右鍵 -> Sublimelinter -> Open User Settings 指定.jshintrc文件路徑

五、.jshintrc配置中文詳細定義4,官方配置列表5

1. 強制選項(Enforcing options) 如果設為true會產生更多錯誤提示

{
    "bitwise": true ,  //禁用位運算符,位運算符&在 JavaScript 中使用較少,經常是把 && 錯輸成 &
    "curly": true , //迴圈或者條件語句必須使用花括弧包圍
    "eqeqeq": true , //強制使用三等號
    "es3": true  ,  //相容低級瀏覽器 IE 6/7/8/9
    "freeze": true , //禁止重寫原生對象的原型,比如 Array,Date
        /*
            Array.prototype.count = function (value) { return 4; };
            // -> Warning: Extending prototype of native object: 'Array'.
            為原生對象添加屬性確實看上去很方便,但也帶來了潛在的問題
            一是如果項目中有多處為同一個對象添加了同樣的屬性(或函數),則很可能產生衝突;
            二是如果某段邏輯依賴於對象屬性遍歷,則可能產生錯誤。  
        */
    "immed": true,
        /** 匿名函數調用必須
            (function() {
               // body 
            }());
            而不是
            (function() {
               // body
            })();
            這是為了表明,表達式的值是函數的結果,而不是函數本身
        */
    "indent": 4 , //代碼縮進
    "latedef": "nofunc" , //禁止定義之前使用變數,忽略 function 函數聲明
    "newcap": true , //構造器函數首字母大寫
    "noarg":true , //禁止使用 arguments.caller 和 arguments.callee,未來會被棄用, ECMAScript 5 禁止使用 arguments.callee
    "quotmark": false , //為 true 時,禁止單引號和雙引號混用
    "undef": true , //變數未定義
    "unused": true , //變數未使用
    "strict":true , //嚴格模式
    "maxparams": 4 , //最多參數個數
    "maxdepth": 4  , //最大嵌套深度
    "maxcomplexity":true , //複雜度檢測
    "maxlen": 600 ,  //最大行數
    "predef": [
        "before",
        "beforEach",
        "after",
        "afterEach",
        "-toberemoved"
    ]  // 用來自定義一些環境變數,變數前面有有-號表示從環境中移除次變數
    //預定義變數為ReadOnly 不能在js文件的註釋中使用
}

2. 寬鬆選項(Relaxing options) 如果設為true會產生較少錯誤提示

{
    "asi": true , //控制“缺少分號”的警告
    "boss": true , //控制“缺少分號”的警告
    "debug": true ,//"debug": true
    "evil": true , //控制 eval 使用警告
    "lastsemic": true ,//檢查一行代碼最後聲明後面的分號是否遺漏
    "laxcomma": true , //檢查不安全的折行,忽略逗號在最前面的編程風格
    "loopfunc": true , //檢查迴圈內嵌套 function
    "multistr": true ,//檢查多行字元串
    "notypeof": true , //檢查無效的 typeof 操作符值
    "sub": true , //person['name'] vs. person.name
    "supernew": true , //new function () { ... } 和 new Object;
    "validthis": true //在非構造器函數中使用 this
}

3. 環境(Environments)

{
    "browser": true ,//預定義全局變數 document,navigator,FileReader 等
    "devel": true , //定義用於調試的全局變數:console,alert
    "jquery": true, //定義全局變數 $
    "node": true, //定義全局變數  module export等
}

  1. JSLint與JSHint的關係 

  2. JSHint Node模塊的命令行介面CLI,包括參數特殊選項等 

  3. JSHint 官方手冊 

  4. JSHint 配置淺析(中文) JSHint中文DOC 

  5. JSHint 官方所有配置選項 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本章主要講如何使用腳本創建資料庫;如何使用腳本創建表;如何刪除對象和修改對象. CREATE 語句:CREATE <object type> <onject name> 創建資料庫基本語法:CREATE DATABASE <database name> ON [PARIMARY] ( [NAME=< ...
  • mysql主從複製指兩個伺服器之間資料庫的同步,當主伺服器的數據進行了變更,從伺服器也會自動更新,其過程是通過bin log日誌實現的,本質是binlog日誌的傳輸。 mysql主從分兩個角色 1、主伺服器 master 2、從伺服器 slave 主伺服器 MySQL 配置 從伺服器 MySQL 配 ...
  • 上一篇介紹到查詢。這一篇主要講連接查詢,將介紹INNER JOIN,OUTER JOIN(LEFT和RIGHT),FULL JOIN,CROSS JOIN。 連接顧名斯義就是把多個數據表數據合併到一個結果集。 用內部連接檢索匹配的數據(inner join) 連接結構語法如下:SELECT <col ...
  • 對於設計和創建資料庫完全是個新手?沒關係,Joe Celko, 世界上讀者數量最多的SQL作者之一,會告訴你這些基礎。和往常一樣,即使是最專業的資料庫老手,也會給他們帶來驚喜。Joe是DMBS雜誌是多年來最受 讀者喜愛的作者。他在美國、英國,北歐,南美及非洲傳授SQL知識。他在ANSI / ISO ...
  • Query OK, 0 rows affected (0.00 sec) ...
  • 在PL/SQL編程當中,經常會遇到一些需要動態處理數據或表結構的問題,比如對一批表裡的數據進行處理,或者批量創建表,索引,觸發器等等,這個時候就可以通過DBMS_SQL包進行操作。你可能會有疑問,ORACLE不是提供了EXECUTE IMMEDIATE了嘛?幹嘛還要DBMS_SQL包來處理?嘿嘿,不 ...
  • SSIS(SQL Server Integration Services)是用於生成企業級數據集成和數據轉換解決方案的平臺。使用 Integration Services 可解決複雜的業務問題,具體表現為:複製或下載文件,發送電子郵件以響應事件,更新數據倉庫,清除和挖掘數據以及管理 SQL Serv ...
  • 首先需要把tomcat和jdk整到虛擬機里,然後再在虛擬機里安裝tomcat和jdk。 一、怎樣把tomcat和jdk整到虛擬機里? 1,需要“ha_Serv-U6406 ftp伺服器”的幫助,所以先下載一個ftp伺服器(在windows下),打開,在ftp伺服器的主目錄里找到tomcat和jdk所 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...