Jslint、Jshint代码检查工具

article/2025/10/19 8:11:27
Jslint、Jshint代码检查工具

    JSLint是一个JavaScript验证工具,JSLint定义了一组编码约定。宗旨:能做并不意味着应该做。JSLint会对它认为有风险的编码实践加标志,另外还会指出哪些是明显的错误,促使养成好的JavaScript编码习惯。

JSLint 工具本身也是一段JavaScript 代码,它是检验JavaScript 代码质量的JavaScript 脚本。JSLint 对JavaScript 脚本的质量检测主要包括以下几个方面:

  • 检测语法错误:例如大括号“{}”的配对错误。

  • 变量定义规范:例如未定义变量的检测。

  • 代码格式规范:例如句末分号的缺失。

  • 蹩脚语言特性的使用检测:如eval 和with 的使用限制。

 

下面列出了其中一部分:     

  • JSLint要求所有代码行都以分号结束。尽管JavaScript确实允许将换行符作为行结束符,但一般认为这种做法是不明确的,而且是不好的编码风格。

  • 使用iffor的语句必须使用大括号把语句块括起来。

不同于其他编程语言,在JavaScript中,块不会作为变量的作用域。JavaScript只支持函数级作用域。因此,JSLint只接受作为functionifswitchwhilefordotry语句一部分的块,其他的块都会标志为错误。

  • var只能声明一次,而且在使用之前必须声明。

  • JSLint会把出现在returnbreakcontinuethrow语句后面的代码标志为不可达的代码。这些语句后面必须紧跟一个结束大括号。

 

工作过程

使用Jslint

         可以使用Jslint本身的规则,也可以自定义规则集。下面介绍具体的使用方法:

 

 

 

  • 下载Rhino,以命令行方式直接对特定 JavaScript脚本进行语法检查。

这里还没研究,参考:http://hi.baidu.com/fengwill99/item/073a4e603b9f8c147cdecc41

  • 整合在其它编码工具中使用,如VIMAntSubline Text 

在这里只研究了Subline Text中使用jslintjslint可以以插件的形式与Subline Text结合。Subline Text有非常强大的插件功能,安装插件的方法:

引用:http://blog.csdn.net/superskk6/article/details/7405973

Package 选项并回车,然后在列表中选中要安装的插件。1.直接安装

安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages)。

2.使用Package Control组件安装

  1. 也可以安装package control组件,然后直接在线安装:

按Ctrl+`调出console

2.  粘贴以下代码到底部命令行并回车:
importurllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)if not os.path.exists(ipp) elseNone;open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace('','%20')).read())

3.  重启Sublime Text 2。

4.  如果在Perferences->packagesettings中看到package control这一项,则安装成功。

如果这种方法不能安装成功,可以到这里下载文件手动安装

3.用Package Control安装插件的方法:

1.  按下Ctrl+Shift+P调出命令面板

2.  输入install 调出Install

不爽的是,有的网络环境可能会不允许访问陌生的网络环境从而设置一道防火墙,而SublimeText 2貌似无法设置代理,可能就获取不到安装包列表了。

    

    我使用了第二种安装方法,安装完毕,菜单栏变为:

输入jslint ,查找安装插件。

插件安装完成SublimeText2\Data\Packages 目录下

会出现两个文件夹

可以在这两个文件中配置自定义约束

 

Ctrl+l/Ctrl+J进行代码检测

 

待解决:检测完成之后出不来结果。

附规则整理,具体请查看官网:

全局变量

                    所有的变量或函数必须先定义再使用或调用

                    那如果是浏览器预定义的函数或变量呢?如alert

                    可以在js文件顶部

                    /*globalalert*/ 告诉JSLint alert在其他地方已经定义了。alert后面还可以带个布尔值

                    /*globalalert:true*/

                    alert= 1;

                    表示alert在这里可以赋值,如果为false表示不可赋值

                    JSLint提供了几个可选Option代替常用的一些非本地定义

 

分号;

                     for, function, if, switch, try, and while

        除了这些语句,其他语句必须以分号结束。不能有空语句

 

逗号,

                    不能有多余的逗号如,数组的定义最后一个元素后面不能带逗号var a = [1, 2, ];浏览器会有不一致的处理

 

{}

                    if,while, do for

                    这些语句必须{}

 

表达语句

                    只能是赋值语句或函数调用或delete语句,其他都认为是错误的,如a; 报错

 

for in 语句

                    避免遍历原型链上所有属性,建议如下写法

                    for(name in object) {

                                         if(object.hasOwnProperty(name)) {

                                                             ....

                                         }

                    }

 

switch

                    casedefault前面必须是break, returnthrow

 

var

                    变量与函数必须先定义再使用,同一个变量不能重复定义。函数的参数不能在函数内部重复定义,不能再块里面定义var

       因为javascript里面的块并没有块作用域,建议var定义全部放在函数顶部

 

with

                    不建议使用

 

== and !=

                    建议用===与!==来代替。在Option中可以关闭

 

迷惑的+/-

                    +不能跟在+++后面,-不能跟在---后面

 

位操作

                    javascript没有整形的概念,在<< >> >>> ~ & |位操作时会将操作数从浮点转成整形,会导致意想不到的错误。不建议使用。Option可选

 

eval语句

                    不推荐使用

 

void类型

                    JavaScriptvoid是一个操作符,该操作符指定要计算一个表达式但是不返回值。不推荐使用

 

new构造

                    {}代替new Object []代替newArray. new Number, new String,  newBoolean这些用法都可以用字面常量来代替

                    如果是函数,

    1.onfocus = newFunction("document.bgColor='antiquewhite'")

                    2.οnfοcus= function () {document.bgColor = 'antiquewhite';};

                    第一种写法,函数体是个字符串,编译器不能发现语法类的错误。建议第二种写法

                    1.varfoo = new function() {}

                    2.varfoo = function () {}

                    这两种写法有什么不一样?第一种foo对象原型链上海挂有Object

 

不安全的字符

                    \u0000-\u001f

                    \u007f-\u009f

                    \u00ad

                    \u0600-\u0604

                    \u070f

                    \u17b4

                    \u17b5

                    \u200c-\u200f

                    \u2028-\u202f

                    \u2060-\u206f

                    \ufeff

                    \ufff0-\uffff


JSHint比起JSLint而言,会更加轻量级一些。它能够找出代码中的语法错误,并且建议更好的一种编码风格。在这里不多做介绍。

 

参考:http://www.jslint.com/ 

         http://www.jshint.com/

         http://baike.baidu.com/view/2575488.htm

         http://hi.baidu.com/fengwill99/item/073a4e603b9f8c147cdecc41

         http://www.xseoer.com/714.html

         http://lucifr.com/139225/sublime-text-2-tricks-and-tips/?replytocom=122286


http://chatgpt.dhexx.cn/article/9TIgvV7y.shtml

相关文章

jshint相关的配置

jshint相关的配置SublimeText插件推荐&#xff1a;JS错误检查工具 - JSHint与JSHint Gutter NOV 28TH, 2014 9:46 AM 引言 我喜欢使用SublimeText&#xff08;以下将简称为Sublime&#xff09;来写JavaScript&#xff0c;但有时候代码量一多&#xff0c;难免会犯些小错误&am…

使用 CommonJS 标准的导出语句时报错 JSHint: ‘module‘ is not defined.(W117)

强迫症看下面这跟红线不舒服&#xff1a; 飘红原因是 JavaScript linting 工具 JSHint 无法识别语法 module.exports&#xff08;Node.js 特有&#xff09;。 要解决此错误&#xff0c;则需要配置 JSHint 以识别 Node.js 环境。 可以通过在文件顶部添加注释来完成此操作&…

CSS-IN-JS

集成css代码在js中 一、为什么会有 CSS-IN-JS CSS-IN-JS 是 WEB 项⽬中将 CSS 代码捆绑在 JavaScript 代码中的解决⽅案.这种⽅案旨在解决 CSS 的局限性, 例如缺乏动态功能, 作⽤域和可移植性. 二、CSS-IN-JS 介绍 1、CSS-IN-JS ⽅案的优点&#xff1a; 让 CSS 代码拥有独…

vscode配置JSHint提示工具

vscode配置JSHint提示工具 本文介绍vscode配置JSHint提示工具,规范JavaScript的编码。 首先“Ctrl + P”输入“ext install jshint”,或者选择侧边栏“扩展”直接搜索“jshint”; 然后,下载jshint,如图: 安装第一个jshint,因为我已经安装了所以没有绿色“安装”按钮,…

JSHint介绍

为什么80%的码农都做不了架构师&#xff1f;>>> JSHint跟JSLint非常像&#xff0c;都是Javascript代码验证工具&#xff0c;这种工具可以检查你的代码并提供相关的代码改进意见。 对于你的代码&#xff0c;你可以选择多种方式来进行检验&#xff1a; 第一种方法&…

C++之ofstream::flush与ofstream::close

一.缓冲区知识 1.什么是缓冲区 缓冲区又称为缓存&#xff0c;它是内存空间的一部分。也就是说&#xff0c;在内存空间中预留了一定的存储空间&#xff0c;这些存储空间用来缓冲输入或输出的数据&#xff0c;这部分预留的空间就叫做缓冲区。 缓冲区根据其对应的是输入设备还是输…

超详细ofstream和ifstream详细用法

ofstream和ifstream详细用法 ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间(文章最末尾附上了MSDN中关于这两个函数的解释); 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两…

ifstream和ofstream的理解

ifstream和ofstream的理解 开发工具与关键技术&#xff1a;Visual Studio、C 作者&#xff1a;张国军 撰写时间&#xff1a;2019年06月04日各种计算机应用系统通常把一些相关信息组织起来保存在外存储器中&#xff0c;称为文件&#xff0c;并用一个名字&#xff08;称为文件名…

【Stream】

1、stream不存储数据&#xff0c;而是按照特定的规则对数据进行计算&#xff0c;一般会输出结果&#xff1b; 2、stream不会改变数据源&#xff0c;通常情况下会产生一个新的集合&#xff1b; 3、stream具有延迟执行特性&#xff0c;只有调用终端操作时&#xff0c;中间操作才会…

(转载)C++ ofstream和ifstream详细用法

原文出自【比特网】&#xff0c;转载请保留原文链接&#xff1a;http://soft.chinabyte.com/database/460/11433960.sh [导读] ofstream是从内存到硬盘&#xff0c;ifstream是从硬盘到内存&#xff0c;其实所谓的流缓冲就是内存空间 在C中&#xff0c;有一个stream这个类&…

Stream流:

创建stream流&#xff1a; //单列集合 集合.stream//数组 stream.of(数组)//双列集合 map.entrySet().stream(); stream流的调试&#xff1a; 常用API: - map:相当于对数据进行一个操作&#xff0c;可以自定义返回值等 stream.map() - distinct:可以去除流中的相同元素&…

c++输出文件流ofstream用法详解

目录 一. 输入流 ofstream 用法 Public member functions (1-6) 1&#xff0c; (constructor) 2&#xff0c; ofstream::open 3&#xff0c; ofstream::is_open 4&#xff0c; ofstream::close 5&#xff0c; ofstream::rdbuf 6&#xff0c;ofstream::operator Public member …

C++文件和流

C文件和流 到目前为止&#xff0c;我们已经使用了 iostream 标准库&#xff0c;它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。 本教程介绍如何从文件读取流和向文件写入流。这就需要用到 C 中另一个标准库 fstream&#xff0c;它定义了三个新的数据…

什么是https

HTTPS&#xff08;全称&#xff1a;Hypertext Transfer Protocol over Secure Socket Layer&#xff09;&#xff0c;是以安全为目标的HTTP通道&#xff0c;简单讲是HTTP的安全版。即HTTP下加入SSL层&#xff0c;HTTPS的安全基础是SSL&#xff0c;因此加密的详细内容请看SSL。 …

http和https有什么区别 端口号多少

HTTP和HTTPS的基本概念 HTTP&#xff1a;超文本传输协议&#xff0c;是在互联网上应用最广泛的一种网络协议。是一个客户端和服务端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用于从WWW&#xff08;超文本&#xff09;服务器传输超文本到本地浏览器的传输协议。…

https 请求的端口是443 注意

注意: 这里录制https的请求 端口号一定是443 才可以抓取到!!!!!! &#xff08;进坑多次&#xff09; 转载于:https://www.cnblogs.com/kaibindirver/p/9223595.html

IP地址,开放端口,http与https的区别

文章目录 一、IP地址的概述二、IP地址分类1、**共有地址**2、 **私有地址** 三、IPV4和V6四、子网掩码、网关、DNS1、 子网掩码2、网关3、DNS服务器 五、获取目标IP地址的方法1、 通过ping命令&#xff1a;2、 通过NSLOOKUP命令&#xff1a;1.使用资源监视器查看&#xff1a;2.…

Linux网络——图解HTTPS协议与端口号认识

Linux网络——图解HTTPS协议与端口号认识 一、确保HTTP安全的方式1.1 HTTP明文加密<1> 通信加密<2> 内容加密 1.2 验证通信方身份1.3 验证报文完整性&#xff0c;防止被篡改 二、HTTP加密认证完整性保护HTTPS2.1 SSL/TLS2.2 对称加密2.3 非对称加密2.4 混合加密 三…

什么是SSL端口?HTTPS配置技术指南

安全套接字层&#xff08;SSL&#xff09;是负责互联网连接的数据身份验证和加密的技术。它加密在两个系统之间&#xff08;通常在服务器和客户端之间&#xff09;之间通过互联网发送的数据&#xff0c;使其保持私密。随着在线隐私的重要性日益增加&#xff0c;您应该熟悉SSL端…

--端口--

目录 一、端口的读写 二、shl和shr指令 我们在之前所讲过&#xff0c;各种存储器都和CPU的地址线、数据线、控制线相连。CPU在操控它们的时候&#xff0c;把它们当做内存来看待&#xff0c;把它们总地看做一个由若干存储单元组成的逻辑存储器&#xff0c;这个逻辑存储器我们称…