`

JSHint: 规范团队的JavaScript代码

阅读更多
历史
2008年,Douglas Crockford大神写完《JavaScript:The Good Parts》http://book.douban.com/subject/11874748/ 之后,给JavaScript树立了一个完整的技术规范,算是给JavaScript正名了(设计还是可以的,关键是要用好)。然后他老人家心想说:“老子告诉你们什么是好的JavaScript了,再送你们一个检测工具吧,凡是过不了我规范就不是好的JavaScript代码,Warning: JSLint will hurt your feelings”。当然除了最后Warning那句,其它都是我YY的。总之,就是老头根据自己的理念用JavaScript写了一个JavaScript代码规范检查工具,这就是JSLint(http://www.jslint.com/),后来非常流行,也的确帮助了广大的JavaScript程序员。但是因为这老头的个性既霸道又固执(很多大神貌似都这样子...),对于自己的代码规范不做丝毫的妥协,对开源社区的反馈的回应也很不礼貌。(https://raw.githubusercontent.com/disqus/disqus.github.com/master/_posts/2011-02-20-antonkovalyov-why-i-forked-jslint-to-jshint.html) 于是,JSLint从一个帮助程序员规范代码,避免Bug的工具,变成了一个让你写的代码像Crockford的工具。在最不信神的IT界,这当然不能忍了。 2011年,一个叫Anton Kovalyov的前端程序员借助开源社区的力量弄出来了JSHint,其思想基本上和JSLint是一致的,但是其有一下几项优势:
  • 可配置规则,每个团队可以自己定义自己想要的代码规范。
  • 对社区非常友好,社区支持度高。几乎所有的主流编辑器,IDE都有了JSHint的插件,前端构建工具Grunt,Gulp也都有其插件,另外还有很多基于JSHint的酷炫小项目,参见:http://www.jshint.com/install/
  • 可定制的结果报表。做CI的时候就方便美观多了。
好了,下面就来看一下如何使用JSHint?

安装,使用
还是情不自禁的啰嗦一下,在我看来,Node最大的功绩不在于让JavaScript可以写后台程序,而在于其繁荣了整个前端开源社区。在Node环境下,安装JSHint非常简单:
npm install jshint (-g)

然后就可以通过如下的命令检测代码
jshint ./app/model.js

默认情况下会得到如下的结果

./app/model.js: line 27, col 2, Missing semicolon.

配置与规则
前面已经提到,JSHint最大的优势在于其可配置性。JSHint的确提供了非常细致的配置规则。

开发者可以通过3种方式指定团队的代码规范:

运行时通过--config指定配置文件。
使用特殊的文件名.jshintrc, 运行时jshint会从当前路径下开始,一层一层往上找。
自己把规则配置到项目的package.json中,放置到属性名jshintConfig下。
JSHint的config文件就是一个json文件,里面配置的就是一堆的JSHint规则, 如下:
{
  "undef": true,
  "unused": true,
  "predef": [ "MY_GLOBAL" ]
}

例子中的配置规则要求:
  • “undef”: 所有使用的变量都必须已定义
  • “unused”: 所有定义的变量都必须被使用
  • “predef”: 这些变量已定义,检查时不用检测其是否已定义

JSHint配置文件中的规则有3类:
  • Enforcing: 这些规则被置为true,JSHint会对代码进行更严格的检查。
  • Relaxing: 这些规则被置为true,JSHint会容忍规则中定义的情况出现。
  • Environment: 这些规则被置为true,JSHint会认为代码默认有一些全局变量。

JSHint支持的所有规则,以及每个规则的值应该怎么填。参见:http://www.jshint.com/docs/options/。

前面提到了可以通过配置文件指定项目中的JavaScript代码需要遵守的规则,但是在实际项目中,存在某个文件需要特别的处理,或者是某个文件的某个方法需要特别的宽容的情况,对于这种情况,JSHint提供了一些指令内嵌到JavaScript代码中,在JSHint检查的时候会根据指令进行处理。JSHint提供的指令有:

jshint:设置JSHint规则,eg:/ jshint strict: true /

jslint: 设置JSHint兼容的JSLint规则,eg: / jslint vars: true /

globals: 设置全局变量的处理, eg: / global MY_LIB: false /

exported: 告诉JSHint,当前文件会导出一些全局变量。 eg:/ exported EXPORTED_LIB /

ignore: 忽略一些代码,可忽略一段代码,也可忽略仅一行。 eg: // Code here will be linted with JSHint. / jshint ignore:start / // Code here will be linted with ignored by JSHint. / jshint ignore:end /

ignoreThis(); // jshint ignore:line

基本上来说,JSHint对于可配置性的处理非常完善,但是不得不说的是,其也让整个配置规则看起来比较复杂。

和Gulp集成
社区的力量是无穷的,目前个人最偏好的前端构建工具是Gulp,而JSHint可以非常方便的与Gulp集成,从而让前端的整个构建看起来更加的统一,不要一会执行JSHint任务,一会儿又是Gulp任务。

首先,安装JSHint的Gulp插件:

npm install gulp-jshint --save-dev

然后,编写运行JSHint的任务

var jshint = require('gulp-jshint');

gulp.task('hint', function () {
    gulp.src('./app/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});
然后,只需要运行gulp hint即可检查代码。

就是这么简单。

JSHinthttps://github.com/jshint/jshint/

gulp-jshinthttps://github.com/spenceralger/gulp-jshint
1
0
分享到:
评论

相关推荐

    linter-jshint:适用于JavaScript的Atom linter插件,使用jshint

    插件安装$ apm install linter-jshint设定值您可以通过编辑~/.atom/config.cson (在Atom菜单中选择“打开您的配置”)来配置linter-jshint: ' linter-jshint ' : # Path of the `jshint` executable ...

    Codiad-JSHint:使用 JSHint 整理您的 javascript 代码

    #JSHint 使用 JSHint 验证您的 JS 代码。 支持 .jshintrc 文件##安装下载 zip 文件并将其解压缩到您的插件文件夹。 ##要求需要带有 Web Worker 的现代浏览器。 FF >= 3.5 Chrome >= 4 IE >= 10 歌剧 >= 10.6 ...

    test-jshint:强制 Javascript 代码样式

    JSHint 和 JSCS 会警告您有关您的 Javascript 代码的重要问题。 通过 npm 安装并从命令行或 vim 使用它。 安装 npm install jshint jscs -g 用 jshint test.js jscs test.js vim 快捷方式 - (Leader+r) :...

    atom-jshint:[已弃用]使用JSHint验证JavaScript

    使用验证JavaScript 安装 $ apm install jshint 或设置→安装→搜索jshint (安装Jshint ,而不是Atom Jshint ) 特征 实时验证。 行和行号在发生错误时变为红色。 将鼠标悬停在行号上可以查看错误。 显示当前行...

    调用栈:为什么JavaScript代码会出现栈溢出.docx

    调用栈:为什么JavaScript代码会出现栈溢出.docx

    learn-jshint:了解如何使用~~ jshint ~~代码质量一致性工具

    使用jshint自动检查您JavaScript代码。 为什么? 使您的代码始终出色。 确保团队中的每个人都编写类似(可维护)的代码 立即查看代码(质量)是否变差(并进行补救!) 什么? 如果您已经专业地编写过JavaScript...

    builder-jshint:使用JSHint整理JavaScript

    jshint Exhibit.js构建器插件使用JSHint整理JavaScript。 $ npm install -D exhibit-builder-jshint用法 . use ( 'jshint' , options ) 这将使用JSHint扫描JavaScript,并报告发现的任何错误。选项include (string ...

    jshint:JSHint是一个工具,可帮助检测JavaScript代码中的错误和潜在问题

    JSHint,JavaScript的静态代码分析工具[•••••• ] JSHint是社区驱动的工具,可检测JavaScript代码中的错误和潜在问题。 由于JSHint非常灵活,因此您可以在希望代码执行的环境中轻松调整它。 JSHint是公开可用的...

    JSHint:一种有助于检测错误和 JavaScript 代码中的工具-开源

    JSHint 是一个社区驱动的工具,用于检测 JavaScript 代码中的错误和潜在问题。 由于 JSHint 非常灵活,您可以在您期望代码执行的环境中轻松调整它。 JSHint 是公开可用的,并且将始终保持这种状态。 该项目旨在帮助 ...

    jshint-json:JSHint的JSON报告程序

    jshint-json JSON报告程序 使JSHint与其他工具一起使用变得容易。 安装 npm install --save-dev jshint-json 用法 JSHint CLI $ jshint --reporter node_modules/jshint-json/json.js file.js grunt . ...

    sublime-jshint:JSHint Sublime Text 2中的任何JavaScript文件

    最佳JavaScript语法检查器:最佳文本编辑器的 : 先决条件: 和 Mac OS X:假定使用自制软件或macports安装节点。 使用设置正确的OS X路径。 支持 Linux:确保jshint在您的环境路径中。 Windows:假定使用来自...

    Javascript代码美化工具

    JS Beauty 是一款 Javascript 美化工具,它具有美化,净化,压缩和解压缩 Javascript 代码等功能: 1. 美化:将混乱的 Javascript 代码格式化为优美的带缩进的格式,适合阅读和修改。 2. 净化:去掉 Javascript ...

    JavaScript代码质量检查JSHint.zip

    JSHint 是一个 JavaScript 的代码质量检查工具,主要用来检查代码质量以及找出一些潜在的代码缺陷。 该工具也提供在线版本,请点击下面的软件首页。 标签:JSHint

    websquare-jshint:用于 WebSquare 的 JSHint

    安装插件后,可以使用以下 JavaScript 代码在 Gruntfile 中启用它: grunt . loadNpmTasks ( 'websquare-jshint' ) ; 该插件旨在与 Grunt 0.4.x 一起使用。 如果您仍在使用 grunt v0.3.x,强烈建议. ...

    grunt-codeblock-jshint:针对Markdown幻灯片中的代码段运行JSHint

    熟悉该过程后,可以使用以下命令安装此插件: npm install grunt-codeblock-jshint --save-dev 插件安装完成后,可以使用以下JavaScript代码在您的Gruntfile中启用该插件: grunt . loadNpmTasks ( 'grunt-...

    grunt-contrib-jshint:使用JSHint验证文件

    插件安装完成后,可以使用以下JavaScript代码在您的Gruntfile中启用该插件: grunt . loadNpmTasks ( 'grunt-contrib-jshint' ) ; Jshint任务 使用grunt jshint命令运行此任务。 任务目标,文件和选项可以根据...

    JavaScript编码规范

    好的规范,是团队协作的基石。JavaScript编码规范,让团队开发不再繁琐~~

    JavaScript代码应该放在HTML代码哪个位置比较好?

    在哪里放置 JavaScript 代码? 通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方。但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所...

    08-调用栈:为什么JavaScript代码会出现栈溢出?_For_vip_user_0011

    1. 当JavaScript执全局代码的时候,会编译全局代码并创建全局执上下,且在整个的存周期 2. 当调个函数的时候,函数体内的代码会被编译,并创建函数执

    generator-jshint:用于 JSHint 配置文件的 Yeoman 生成器

    生成器-jshint 用于配置文件的 Yeoman 生成器。 这只会在当前目录中添加/覆盖.jshintrc 。 您可以在现有项目上运行它以添加/覆盖该文件。 如果您取消(通常在您的 shell 中为Cc ),则不会创建.jshintrc文件。 用法...

Global site tag (gtag.js) - Google Analytics