摘要:設(shè)置代碼縮進(jìn)長(zhǎng)度禁止屬性有關(guān)的警告。設(shè)置最大警告數(shù)。警告此選項(xiàng)已被棄用將被刪除在的下一個(gè)主要版本要求所有構(gòu)造器使用形式。不換行的空格警告這個(gè)選項(xiàng)禁止使用構(gòu)造器函數(shù)。禁止缺少分號(hào)警告禁止比較表達(dá)式的值沒(méi)有達(dá)到預(yù)期警告。
關(guān)于jshint的配置
JSHint默認(rèn)使用用戶當(dāng)前目錄下的.jshintrc文件(json格式)作為配置文件
英文文檔
jshint配置各種配置方式
命令行通過(guò) –config 選項(xiàng)手動(dòng)指定配置文件;
通過(guò) 在package.json中的添加標(biāo)記手動(dòng)配置;
"jshintConfig": { "undef": true, "unused": true, "predef": [ "MY_GLOBAL", "ads" ] }
使用 .jshintrc 文件;
運(yùn)行時(shí)jshint會(huì)從當(dāng)前路徑下開(kāi)始,一層一層往上找
/**示例配置**/ { "sub":true, "laxbreak":true, "laxcomma":true, "regexp":true, "asi": true, "browser": true, "loopfunc":true, "expr":true, "node": true, "es5": true, "esnext": true, "bitwise": true, "curly": true, "immed": true, "latedef": false, "expr": true, "eqeqeq": false, "eqnull": false, "newcap": true, "noarg": true, "undef": true, "proto": true, "strict": false, "smarttabs": true }
內(nèi)聯(lián)配置;
除了使用配置文件,您可以在你的文件中使用jshint或者globals開(kāi)頭,
并跟著配置項(xiàng)以冒號(hào)分隔值列表來(lái)配置JSHint。
例如,下面的代碼片段將啟用警告未定義的和未使用的變量和告訴JSHint全局變量命名MY_GLOBAL。
/* jshint undef: true, unused: true */ /* globals MY_GLOBAL */
可以使用單行或者多行來(lái)配置JSHint,如果放在函數(shù)里面,則只影響該函數(shù)。
ignore 告訴jshint忽略一個(gè)代碼塊
// Code here will be linted with JSHint. /* jshint ignore:start */ // Code here will be ignored by JSHint. /* jshint ignore:end */
上面的代碼在jshint ignore:start和 ignore:end之間的所有代碼都將被JSHint忽略;
或者忽略一行:
ignoreThis(); // jshint ignore:line
以上都只是示例,具體使用的話還是去看文檔吧,orz -_-|||
JSHint配置文件中的規(guī)則有3類:Enforcing: 這些規(guī)則被置為true,JSHint會(huì)對(duì)代碼進(jìn)行更嚴(yán)格的檢查。 Relaxing: 這些規(guī)則被置為true,JSHint會(huì)容忍規(guī)則中定義的情況出現(xiàn)。 Environment: 這些規(guī)則被置為true,JSHint會(huì)認(rèn)為代碼默認(rèn)有一些全局變量
1.校驗(yàn)選項(xiàng):Enforcing
bitwise 禁用位運(yùn)算符,位運(yùn)算符在 JavaScript 中使用較少,經(jīng)常是把 && 錯(cuò)輸成 &。 bitwise: true
camelcase 警告:此選項(xiàng)已被棄用,將在JSHint的下一個(gè)主要版本被刪除. 此選項(xiàng)可以強(qiáng)制所有變量名稱為使用駝峰風(fēng)格或UPPER_CASE用下劃線。 camelcase:true/false
curly 循環(huán)或者條件語(yǔ)句必須使用花括號(hào)包圍. 這個(gè)選項(xiàng)需要你總是把花括號(hào)在塊循環(huán)和條件。JavaScript塊時(shí)可以省略括號(hào)包含只有一個(gè)語(yǔ)句,例如: while (day) shuffle(); 然而,在某些情況下,它會(huì)導(dǎo)致錯(cuò)誤(你可能會(huì)認(rèn)為 sleep()是一個(gè)循環(huán)的一部分,而事實(shí)上它不是) while (day) shuffle(); sleep();
enforceall 警告:此選項(xiàng)已被棄用,將在JSHint的下一個(gè)主要版本被刪除. 它啟用所有強(qiáng)制執(zhí)行選項(xiàng)和禁用該版本中定義的所有的Relaxing options;
eqeqeq 設(shè)置為true,禁止使用這個(gè)選項(xiàng) ==和 !=,強(qiáng)制使用 ===和 !==。 eqeqeq: true
es3 警告:此選項(xiàng)將在JSHint的下一個(gè)主要版本被刪除,使用esversion: 3代替. 使用ECMAScript 3規(guī)范。使用這個(gè)選項(xiàng)主要為了兼容低級(jí)瀏覽器 IE 6/7/8/9-and其他遺留JavaScript環(huán)境。
es5 警告:此選項(xiàng)將被刪除在JSHint的下一個(gè)主要版本,使用 esversion: 5代替。 這個(gè)選項(xiàng)允許語(yǔ)法中定義ECMAScript 5.1規(guī)范,這包括允許保留關(guān)鍵字作為對(duì)象屬性。
esversion 這個(gè)選項(xiàng)用于指定的ECMAScript版本代碼必須遵循。它可以假設(shè)以下值之一: 3--如果你需要可執(zhí)行程序在老這類瀏覽器Internet Explorer 6/7/8/9-and其他遺留JavaScript環(huán)境 5--先使語(yǔ)法中定義ECMAScript 5.1規(guī)范。這包括允許保留關(guān)鍵字作為對(duì)象屬性。 6--告訴JSHint代碼使用ECMAScript 6具體的語(yǔ)法。請(qǐng)注意,并不是所有的瀏覽器都實(shí)現(xiàn)它們。
forin 這個(gè)選項(xiàng)要求所有 for in循環(huán)過(guò)濾對(duì)象的item。他在聲明中允許for遍歷一個(gè)對(duì)象所有屬性的名稱包括通過(guò)原型鏈繼承來(lái)的屬性。 for (key in obj) { if (obj.hasOwnProperty(key)) { // We are sure that obj[key] belongs to the object and was not inherited. } }
freeze 這個(gè)選項(xiàng)禁止重寫(xiě)原生對(duì)象的原型列如 Array, Date等等。
funcscope 禁止從外部訪問(wèn)內(nèi)部聲明的變量 function test() { if (true) { var x = 0; } x += 1; // Default: "x" used out of scope. // No warning when funcscope:true }
futurehostile 允許警告js未來(lái)版本中定義的標(biāo)識(shí)符。
globals 這個(gè)選項(xiàng)可以用來(lái)指定一個(gè)沒(méi)有正式定義的全局變量的白名單。 配置 globals在單個(gè)文件,看看內(nèi)聯(lián)配置.
immed 警告:此選項(xiàng)已被棄用,將在JSHint的下一個(gè)主要版本被刪除。 需要直接調(diào)用的函數(shù)必須被括號(hào)包圍,如:(function(){}());
indent 警告:此選項(xiàng)將在JSHint的下一個(gè)主要版本被刪除。 設(shè)置代碼縮進(jìn)長(zhǎng)度
iterator 禁止iterator屬性有關(guān)的警告。 此屬性不支持所有瀏覽器所以小心使用它。
latedef 禁止定義之前使用變量。 這個(gè)選項(xiàng)設(shè)置為“nofunc”將允許函數(shù)聲明被忽略。
maxcomplexity 設(shè)置代碼文件獨(dú)立直線路徑最大復(fù)雜度檢測(cè)。
maxdepth 設(shè)置代碼最大嵌套深度。 // jshint maxdepth:2 function main(meaning) { var day = true; if (meaning === 42) { while (day) { shuffle(); if (tired) { // JSHint: Blocks are nested too deeply (3). sleep(); } } } }
maxerr 設(shè)置JSHint最大警告數(shù)。默認(rèn)50
maxlen 警告:此選項(xiàng)將在JSHint的下一個(gè)主要版本被刪除 設(shè)置最大行數(shù)
maxparams 這個(gè)選項(xiàng)允許您設(shè)置每個(gè)函數(shù)的形參最大數(shù)量 // jshint maxparams:3 function login(request, onSuccess) { // ... } // JSHint: Too many parameters per function (4). function logout(request, isManual, whereAmI, onSuccess) { // ... }
maxstatements 這個(gè)選項(xiàng)允許您設(shè)置語(yǔ)句允許的最大聲明數(shù): // shint maxstatements:4 function main() { var i = 0; var j = 0; // Function declarations count as one statement. Their bodies // don"t get taken into account for the outer function. function inner() { var i2 = 1; var j2 = 1; return i2 + j2; } j = i + j; return j; // JSHint: Too many statements per function. (5) } 函數(shù)也算聲明。
newcap 警告此選項(xiàng)已被棄用,將被刪除在JSHint的下一個(gè)主要版本 要求所有構(gòu)造器使用new F()形式。
noarg 禁止使用這個(gè)選項(xiàng) arguments.caller和 arguments.callee。這兩個(gè) .caller 和.callee將會(huì)被棄用。事實(shí)上,ECMAScript 5 嚴(yán)格模式禁止使用arguments.callee
nocomma 這個(gè)選項(xiàng)禁止使用逗號(hào)操作符。
noempty 警告此選項(xiàng)已被棄用,將被刪除在JSHint的下一個(gè)主要版本。 空代碼塊警告。
nonbsp 不換行的空格警告
nonew 這個(gè)選項(xiàng)禁止使用new構(gòu)造器函數(shù)。有些人喜歡調(diào)用構(gòu)造函數(shù),但是不賦值給任何對(duì)象: new MyConstructor();
notypeof 檢查無(wú)效 typeof操作符的值 // "fuction" instead of "function" if (typeof a == "fuction") { // Invalid typeof value "fuction" // ... }
predef 擴(kuò)展的隱式全局變量
quotmark 警告此選項(xiàng)已被棄用,將被JSHint的下一個(gè)主要版本刪除。 這個(gè)選項(xiàng)執(zhí)行代碼中使用引號(hào)的一致性。它接受三個(gè)值: true-- 代碼字符串禁止單引號(hào)雙引號(hào)混用, "single"--只允許單引號(hào) "double"--只允許雙引號(hào)。
shadow 檢查變量重復(fù)定義 他接受4個(gè)值: "inner" 只檢查是否在相同的作用域重復(fù)定義 "outer" 檢查外部作用域 false 與inne一樣 true 允許變量覆蓋
singleGroups 禁止使用分組操作符 // jshint singleGroups: true delete(obj.attr); // Warning: Unnecessary grouping operator.
strict ECMAScript 5嚴(yán)格模式 "global" - 全局層面的嚴(yán)格模式"use strict"; "implied" - 文件里面使用"use strict"; false - 禁止使用嚴(yán)格模式 true - 函數(shù)上面必須使用一個(gè)"use strict";
undef 變量未定義 // jshint undef:true function test() { var myVar = "Hello, World"; // Oops, typoed here. JSHint with undef will complain console.log(myvar); } 如果你的另一個(gè)文件中定義的變量,你可以使用 global指令告訴JSHint。
unused 變量定義未使用 // jshint unused:true function test(a, b) { var c, d = 2; return a + d; } test(1, 2); // Line 3: "b" was defined but never used. // Line 4: "c" was defined but never used
varstmt 設(shè)置為true時(shí),禁止使用var聲明變量 // jshint varstmt: true var a; // Warning: var declarations are forbidden. Use let or const instead.
2.寬松選項(xiàng):Relaxing
設(shè)置為true時(shí),這些選項(xiàng)會(huì)使代碼JSHint產(chǎn)生更少的警告。
asi 禁止缺少分號(hào)警告
boss 禁止比較表達(dá)式的值沒(méi)有達(dá)到預(yù)期警告。 通常情況下,代碼 if (a = 10) {}是一個(gè)錯(cuò)誤,但他有可能這樣用 for (var i = 0, person; person = people[i]; i++) {} 你可以禁止這個(gè)錯(cuò)誤,比如 for (var i = 0, person; (person = people[i]); i++) {}
debug 忽略 debugger
elision 告訴JSHint代碼使用ES3數(shù)組省略元素,或空元素(例如, [1, , , 4, , , 7] ).
eqnull 禁止 == null比較。通常這樣的比較有用,當(dāng)你想檢查一個(gè)變量是否null 或 undefined
eqnull 警告此選項(xiàng)將在JSHint的下一個(gè)主要版本被 esversion: 6代替 使用ECMAScript 6具體語(yǔ)法,有些瀏覽器不支持
evil 禁止使用eval
expr 禁止使用表達(dá)式,一般的使用函數(shù)調(diào)用。
globalstrict 下個(gè)版本中會(huì)使用 strict: "global"代替。 全局嚴(yán)格模式會(huì)和第三方小插件沖突,所以不推薦使用。
lastsemic 檢查一行代碼最后聲明后面的分號(hào)是否遺漏 var name = (function() { return "Anton" }());
laxbreak 檢查不安全的折行(下個(gè)版本將被刪除)
laxcomma 檢查逗號(hào)在代碼行最前面的編程風(fēng)格 var obj = { name: "Anton" , handle: "valueof" , role: "SW Engineer" };
loopfunc 禁止內(nèi)部循環(huán),定義函數(shù)的內(nèi)部循環(huán)可能導(dǎo)致這樣的錯(cuò)誤: var nums = []; for (var i = 0; i < 10; i++) { nums[i] = function (j) { return i + j; }; } nums0; // Prints 12 instead of 2 解決上面的代碼,你需要復(fù)制的變量 i: var nums = []; for (var i = 0; i < 10; i++) { (function (i) { nums[i] = function (j) { return i + j; }; }(i)); }
moz JSHint Mozilla擴(kuò)展。除非你開(kāi)發(fā)專門(mén)為Firefox web瀏覽器不需要這個(gè)選項(xiàng)。
multistr 將在下個(gè)版本中被刪除 這個(gè)選項(xiàng)會(huì)抑制警告多行字符串。允許多行字符串在JavaScript是危險(xiǎn)的,如果你小心在一個(gè)轉(zhuǎn)義字符()和一個(gè)新行之間輸入一個(gè)空格,將會(huì)導(dǎo)致整個(gè)字符串錯(cuò)誤。 注意,即使這個(gè)選項(xiàng)允許正確多行字符串,它仍然警告說(shuō)對(duì)多行字符串沒(méi)有轉(zhuǎn)義字符之間或與任何轉(zhuǎn)義字符和空格。 // jshint multistr:true var text = "HelloWorld"; // All good. text = "HelloWorld"; // Warning, no escape character. text = "HelloWorld"; // Warning, there is a space after
noyield 檢查函數(shù)生成器沒(méi)有yield聲明
plusplus 禁止一元遞增和遞減運(yùn)算符的使用
proto 禁止關(guān)于__proto__屬性的警告
scripturl 禁止使用腳本URL定向,比如javascript:...
sub 下個(gè)版本將被刪除 檢查[]使用,可以使用.代替[] person["name"] vs.person.name.
supernew 檢查怪異結(jié)構(gòu) new function () { ... }和 new Object; 這樣的結(jié)構(gòu)是有時(shí)用于單列在JavaScript中: var singleton = new function() { var privateVar; this.publicMethod = function () {} this.publicMethod2 = function () {} };
validthis 注意:可以使用這個(gè)選項(xiàng)只有在函數(shù)的范圍 在非構(gòu)造器函數(shù)中使用 this
withstmt 檢查with使用聲明。 with聲明語(yǔ)句可以引起開(kāi)發(fā)者和意外全局變量定義之間的混亂。
3.環(huán)境選項(xiàng):Environment
這些選項(xiàng)讓JSHint知道一些預(yù)先定義的全局變量。
browser 暴露瀏覽器屬性的全局變量,列如 window,document; 注意:這個(gè)選項(xiàng)不暴露變量 alert或 console。
browserify 這個(gè)選項(xiàng)定義全局變量使用時(shí)可用Browserify工具建立一個(gè)項(xiàng)目
couch 這個(gè)選項(xiàng)定義全局暴露CouchDB。CouchDB是一個(gè)面向文檔的數(shù)據(jù)庫(kù),可以查詢和索引MapReduce的方式使用JavaScript
devel 這個(gè)選項(xiàng)定義了全局變量,通常用于日志調(diào)試: console, alert等等
dojo 這個(gè)選項(xiàng)定義全局暴露的Dojo Toolkit.
jasmine 這個(gè)選項(xiàng)定義全局暴露jasmine的單元測(cè)試框架.
jquery 這個(gè)選項(xiàng)定義全局暴露的jQuery庫(kù)。
mocha 這個(gè)選項(xiàng)定義全局暴露的“BDD”和“TDD”的ui mocha單元測(cè)試框架.
module 這個(gè)選項(xiàng)告訴JSHint,輸入代碼描述了一個(gè)ECMAScript 6模塊。所有模塊的代碼解釋為嚴(yán)格模式代碼。
mootools 這個(gè)選項(xiàng)定義全局暴露的MooToolsJavaScript框架。
node 這個(gè)選項(xiàng)定義全局變量可以當(dāng)你的代碼運(yùn)行在node的運(yùn)行時(shí)環(huán)境
nonstandard 這個(gè)選項(xiàng)定義非標(biāo)準(zhǔn)但廣泛采用全局變量等 escape和 unescape.
phantom 這個(gè)選項(xiàng)定義全局可用你的核心運(yùn)行時(shí)內(nèi)部PhantomJS運(yùn)行時(shí)環(huán)境
prototypejs 這個(gè)選項(xiàng)定義全局暴露的prototypejs框架。
qunit 這個(gè)選項(xiàng)定義全局暴露QUnit單元測(cè)試框架
rhino 這個(gè)選項(xiàng)定義全局變量可以當(dāng)你的代碼運(yùn)行在rhino的運(yùn)行時(shí)環(huán)境。rhino是一個(gè)開(kāi)源的實(shí)現(xiàn)完全用Java編寫(xiě)的JavaScript。
shelljs 這個(gè)選項(xiàng)定義全局暴露ShellJS庫(kù)
typed 這個(gè)選項(xiàng)定義全局變量數(shù)組類型構(gòu)造函數(shù)。
worker 這個(gè)選項(xiàng)定義全局變量可以當(dāng)你的代碼運(yùn)行在web worker.web worker 是運(yùn)行在后臺(tái)的 JavaScript,獨(dú)立于其他腳本,不會(huì)影響頁(yè)面的性能. 所有主流瀏覽器均支持 web worker,除了 Internet Explorer。
wsh 這個(gè)選項(xiàng)定義全局變量可以當(dāng)你的代碼運(yùn)行在Windows Script Host的運(yùn)行時(shí)環(huán)境
yui 這個(gè)選項(xiàng)定義全局暴露的yui框架。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98826.html
文檔地址 { // // 強(qiáng)制選項(xiàng) // // When set to true, these options will make JSHint produce more warnings about your code. /** * 是否阻止位運(yùn)算符的使用 * * 有時(shí)候?yàn)榱丝焖偃≌蚺袛啵瑫?huì)使用一些位運(yùn)算符,所以此項(xiàng)設(shè)置為 false ...
摘要:在團(tuán)隊(duì)開(kāi)發(fā)過(guò)程中,我們可能會(huì)要浪費(fèi)一些時(shí)間在代碼檢查上,譬如拼寫(xiě)的檢查代碼規(guī)范的檢查。安裝及使用是一個(gè)用于代碼靜態(tài)檢查的一些開(kāi)源項(xiàng)目。如果沒(méi)有指定文件,是不會(huì)對(duì)文件就行檢查的。 在團(tuán)隊(duì)開(kāi)發(fā)過(guò)程中,我們可能會(huì)要浪費(fèi)一些時(shí)間在代碼檢查上,譬如拼寫(xiě)的檢查、代碼規(guī)范的檢查。作為碼農(nóng),我們當(dāng)然不能把自己的時(shí)間浪費(fèi)這種無(wú)意義的事情上,所以本篇我將介紹一些自動(dòng)化代碼檢查的東西和項(xiàng)目實(shí)際上的應(yīng)用。 J...
摘要:工具幫助避免在編寫(xiě)時(shí)出現(xiàn)愚蠢的錯(cuò)誤。并不檢測(cè)潛在的,比如,未使用的變量或意外的全局變量等。在提到的所有工具中,它具有最廣泛的功能支持。使用工具是捕獲問(wèn)題的良好步驟,但只能看到規(guī)則允許的錯(cuò)誤。也可用于此目的。 Lint工具幫助避免在編寫(xiě)JavaScript時(shí)出現(xiàn)愚蠢的錯(cuò)誤。盡管有多年的經(jīng)驗(yàn),我仍然鍵入不正確的變量名稱,出現(xiàn)語(yǔ)法錯(cuò)誤,以及忘記正確地處理error。在浪費(fèi)自己時(shí)間,或更糟糕地...
摘要:流式構(gòu)建改變了底層的流程控制,大大提高了構(gòu)建工作的效率和性能,給用戶的直觀感覺(jué)就是更快。我的看法關(guān)于流式構(gòu)建,短短幾句話無(wú)法講清它的來(lái)龍去脈,但是在的世界里,確實(shí)是至關(guān)重要的。 Grunt 一直是前端領(lǐng)域構(gòu)建工具(任務(wù)運(yùn)行器或許更準(zhǔn)確一些,因?yàn)榍岸藰?gòu)建只是此類工具的一部分用途)的王者,然而它也不是毫無(wú)缺陷的,近期風(fēng)頭正勁的 gulp.js 隱隱有取而代之的態(tài)勢(shì)。那么,究竟是什么使得 g...
摘要:目前來(lái)說(shuō)基本上有四種工具可以完成,。發(fā)展歷程關(guān)于保持代碼一致性風(fēng)格,我們可以追溯到。是啥是針對(duì)語(yǔ)言源碼的檢測(cè)工具,它的功能就是看看源碼有沒(méi)有編寫(xiě)錯(cuò)誤,有沒(méi)有風(fēng)格問(wèn)題。 1. 理解問(wèn)題 首先這個(gè)問(wèn)題展開(kāi)來(lái)講就是如何在Node.js模塊編寫(xiě)中保持代碼一致性風(fēng)格。 目前來(lái)說(shuō)基本上有四種工具可以完成JSLint,JSHint,JSCS,ESLint。 下面將從歷史的角度來(lái)看看他們四個(gè)有什么關(guān)系...
閱讀 1336·2021-09-27 13:56
閱讀 2370·2019-08-26 10:35
閱讀 3535·2019-08-23 15:53
閱讀 1882·2019-08-23 14:42
閱讀 1262·2019-08-23 14:33
閱讀 3596·2019-08-23 12:36
閱讀 2003·2019-08-22 18:46
閱讀 1027·2019-08-22 14:06