欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用JSLint提高JS代碼質(zhì)量方法分享

 更新時間:2013年12月16日 15:41:13   作者:  
這篇文章主要介紹了JSLint提高JS代碼質(zhì)量的方法,有需要的朋友可以參考一下

隨著富 Web 前端應(yīng)用的出現(xiàn),開發(fā)人員不得不重新審視并重視 JavaScript 語言的能力和使用,拋棄過去那種只靠“復制 / 粘貼”常用腳本完成簡單前端任務(wù)的模式。JavaScript 語言本身是一種弱類型腳本語言,具有相對于 C++ 或 Java 語言更為松散的限制,一切以函數(shù)為中心的函數(shù)式編程思想也為開發(fā)人員提供了更加靈活的語法實現(xiàn)。然而,這種靈活性在帶來高效的同時,也成為初學或者經(jīng)驗不足的 JavaScript 開發(fā)人員的噩夢。形式各異的代碼風格、隱含錯誤的代碼行為,嚴重影響了整體代碼的可讀性和穩(wěn)定性,成為 Web 項目中最為常見問題之一。

因而,我們需要一個有效的 JavaScript 代碼質(zhì)量工具,以便能及時發(fā)現(xiàn)并修正 JavaScript 代碼中所隱含的問題,保證代碼交付質(zhì)量。JSLint 作為一個靈活有效的 JavaScript 代碼質(zhì)量檢測工具,允許使用者指定滿足其特定應(yīng)用開發(fā)需求的編碼風格約定,使得整個項目的風格統(tǒng)一,這種“規(guī)則”(options)驅(qū)動的工作方式使得 JSLint 能夠適用于不同的代碼檢測需求。本文將首先向讀者介紹 JSLint 的基本概念和作用,講解其基于規(guī)則的工作方式,而后通過一個示例闡明其基本的使用方法,最后介紹如何將 JSLint 整合到 Ant 和 Eclipse 的應(yīng)用過程,以全方面展示如何將 JSLint 在日常開發(fā)任務(wù)中加以運用。

什么是 JSLint
JavaScript 作為一門年輕、語法靈活多變且對格式要求相對松散的語言,代碼格式的混亂和某些語言特性的不正確使用,往往使得最終交付的產(chǎn)品中包含許多因編碼風格約定造成的未預見的行為或錯誤,這種習慣性的問題如果不及時指出并修改,往往會在項目的迭代過程中不斷的重現(xiàn),嚴重影響 Web 產(chǎn)品的穩(wěn)定性與安全性。JSLint 正是 Douglas Crockford 同學為解決此類問題創(chuàng)建的工具,JSLint 除了能指出這些不合理的約定,還能標出結(jié)構(gòu)方面的問題。雖然 JSLint 不能保證代碼邏輯一定正確,但卻有助于發(fā)現(xiàn)錯誤并教會開發(fā)人員一些好的編碼實踐。值得一提的是 JSLint 工具本身也是一段 JavaScript 代碼,它是檢驗 JavaScript 代碼質(zhì)量的 JavaScript 腳本。JSLint 對 JavaScript 腳本的質(zhì)量檢測主要包括以下幾個方面:

•檢測語法錯誤:例如大括號“{}”的配對錯誤。
•變量定義規(guī)范:例如未定義變量的檢測。
•代碼格式規(guī)范:例如句末分號的缺失。
•蹩腳語言特性的使用檢測:如 eval 和 with 的使用限制。
JSLint 的版本更新一直處于活躍狀態(tài),截至本文撰寫之時,JSLint 最新版本的發(fā)布時間為 2010-10-10。很多主流代碼編輯器均對 JSLint 提供了良好的擴展支持,包括 Eclipse、VS2008 等等。

目前,與 JSLint 功能類似的 JavaScript 代碼檢測工具有很多,包括:YUI Test、Firebug、MS Script Debugger 、CompanionJS 等等,它們中大多數(shù)都是以瀏覽器插件的形式存在于客戶端瀏覽器進行 JavaScript 運行時的檢測和調(diào)試,JSLint 與這些工具的重要區(qū)別在于其更加注重靜態(tài)代碼格式的檢測,而這也正是當前火熱的敏捷開發(fā)中持續(xù)構(gòu)建所需要和提倡的。

認識 JSLint 規(guī)則
JSLint 執(zhí)行代碼質(zhì)量檢測的原理核心在于用戶設(shè)定的規(guī)則集。JSLint 默認提供的規(guī)則集包含了 Web 開發(fā)人員多年積累下來的認為不好的開發(fā)風格,我們可以根據(jù)自己項目的需求選擇構(gòu)建一套特定的規(guī)則。JSLint 將根據(jù)它進行對 JavaScript 腳本的掃描工作,并給出相應(yīng)的問題描述信息。規(guī)則的形式體現(xiàn)為多組鍵值對:[param:option],以規(guī)則名做鍵,對規(guī)則調(diào)用與否做值。例如規(guī)則:“plusplus:true”是不允許 ++ 和 -- 運算符的出現(xiàn),“undef:true”是不允許使用未定義的變量。

由于 JSLint 工具本質(zhì)上是一個普通的 JS 腳本,其運行也自然依賴于一個 JS 運行引擎,其被引擎加載后會在內(nèi)存中產(chǎn)生一個全局 JSLint 函數(shù)對象,該函數(shù)對象需要兩個輸入量:source 和 options,前者用來指定待檢測的腳本文件被解析后生成的字符串或字符串數(shù)組,后者則表示用戶自定義的規(guī)則選項。若 options 為空,JSLint 則使用其默認的規(guī)則對 source 進行掃描檢測。

整個檢測過程就是對腳本中所含 JSLINT (source, options) 函數(shù)的一次執(zhí)行過程。當指定的 source 腳本在 options 條件下檢測通過,則 JSLint 返回 true,否則返回 false,而這時則可以通過 JSLINT.errors 對象獲得詳細的錯誤信息。圖 1 展示了 JSLint 的整個工作過程。

圖 1. JSLint 工作過程示意圖

如圖所示,規(guī)則集的配置方式有三種:

1.直接通過修改 JSLint.js 源碼來修改默認規(guī)則。
2.在 JSLint 函數(shù)運行時,同時設(shè)置 options 參數(shù),動態(tài)改變其規(guī)則選項(first overwrite)。此方式適用于對批量 js 文件使用同樣的一組自定義規(guī)則。
3.通過在待檢測的 js 文件頭部添加注釋類型的規(guī)則,對單個 js 文件添加適用于該文件代碼的特殊規(guī)則(second overwrite)。此方式適用于對不同 js 文件設(shè)置特定的檢測規(guī)則,通常用于在該文件中引入一些全局變量。

相關(guān)文章

  • textbox右鍵菜單

    textbox右鍵菜單

    textbox右鍵菜單...
    2006-10-10
  • 一個JavaScript的求愛小特效

    一個JavaScript的求愛小特效

    本文做了一個JavaScript的求愛小特效,不僅能出現(xiàn)下面的圖的效果,還可以讓這個圖形跟隨著鼠標轉(zhuǎn)動哦,需要的朋友可以參考下
    2014-05-05
  • 檢測一個函數(shù)是否是JavaScript原生函數(shù)的小技巧

    檢測一個函數(shù)是否是JavaScript原生函數(shù)的小技巧

    這篇文章主要介紹了檢測一個函數(shù)是否是JavaScript原生函數(shù)的小技巧,本文給出了兩種檢測方法,需要的朋友可以參考下
    2015-03-03
  • JavaScript canvas實現(xiàn)跟隨鼠標事件

    JavaScript canvas實現(xiàn)跟隨鼠標事件

    這篇文章主要為大家詳細介紹了JavaScript canvas實現(xiàn)跟隨鼠標事件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 微信小程序?qū)崿F(xiàn)圖片壓縮功能

    微信小程序?qū)崿F(xiàn)圖片壓縮功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)圖片壓縮功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié)

    JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié)

    這篇文章主要介紹了JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • js實現(xiàn)字符串轉(zhuǎn)日期格式的方法

    js實現(xiàn)字符串轉(zhuǎn)日期格式的方法

    這篇文章主要介紹了js實現(xiàn)字符串轉(zhuǎn)日期格式的方法,涉及javascript針對字符串與日期操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • ionic實現(xiàn)下拉刷新載入數(shù)據(jù)功能

    ionic實現(xiàn)下拉刷新載入數(shù)據(jù)功能

    這篇文章主要為大家詳細介紹了ionic實現(xiàn)下拉刷新載入數(shù)據(jù)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Webpack5正式發(fā)布,有哪些新特性

    Webpack5正式發(fā)布,有哪些新特性

    這篇文章主要介紹了Webpack5正式發(fā)布,有哪些新特性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Bootstrap如何激活導航狀態(tài)

    Bootstrap如何激活導航狀態(tài)

    這篇文章主要為大家詳細介紹了Bootstrap如何激活導航狀態(tài),包括膠囊式導航中的激活狀態(tài)和列表導航中的激活狀態(tài),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論