java实现html语法检查函数_Html或JS语法检测之JSLint工具
1、介绍
JSLint是一个JavaScript验证工具(非开源), 可以扫描JavaScript源代码来查找问题。如果JSLint发现一 个问题,JSLint就会显示描述这个问题的消息,并指出错误在源代码中的大致位置。有些编码风格约定可能导致未预见的行为或错误,JSLint除了能指 出这些不合理的约定,还能标志出结构方面的问题。尽管JSLint不能保证逻辑一定正确,但确实有助于发现错误,这些错误很可能导致浏览器的 JavaScript引擎抛出错误。
2、规则
JSLint 执行代码质量检测的原理核心在于用户设定的规则集。JSLint 默认提供的规则集包含了 Web 开发人员多年积累下来的认为不好的开发风格,我们可以根据自己项目的需求选择构建一套特定的规则。JSLint 将根据它进行对 JavaScript 脚本的扫描工作,并给出相应的问题描述信息。规则的形式体现为多组键值对:[param:option],以规则名做键,对规则调用与否做值。例如规 则:“plusplus:true”是不允许 ++ 和 -- 运算符的出现,“undef:true”是不允许使用未定义的变量。
由于 JSLint 工具本质上是一个普通的 JS 脚本,其运行也自然依赖于一个 JS 运行引擎,其被引擎加载后会在内存中产生一个全局 JSLint 函数对象,该函数对象需要两个输入量:source 和 options,前者用来指定待检测的脚本文件被解析后生成的字符串或字符串数组,后者则表示用户自定义的规则选项。若 options 为空,JSLint 则使用其默认的规则对 source 进行扫描检测。
整个检测过程就是对脚本中所含 JSLINT (source, options) 函数的一次执行过程。当指定的 source 脚本在 options 条件下检测通过,则 JSLint 返回 true,否则返回 false,而这时则可以通过 JSLINT.errors 对象获得详细的错误信息。
3、过程
如图所示,规则集的配置方式有三种:
直 接通过修改 JSLint.js 源码来修改默认规则。在 JSLint 函数运行时,同时设置 options 参数,动态改变其规则选项(first overwrite)。此方式适用于对批量 js 文件使用同样的一组自定义规则。通过在待检测的 js 文件头部添加注释类型的规则,对单个 js 文件添加适用于该文件代码的特殊规则(second overwrite)。此方式适用于对不同 js 文件设置特定的检测规则,通常用于在该文件中引入一些全局变量。
下面通过使用 JSLint 并结合不同规则,来对 JSLint 规则的适用范围和使用方法做一具体介绍。清单 1 是一段基于 dojo 的 JavaScript 代码。
4、使用
最 简单直接的使用 JSLint 的方式是下载 Rhino,以命令行方式直接对特定 JavaScript 脚本进行语法检查。Rhino 是 Mozilla 提供的纯 Java 实现的开源 JavaScript 引擎,可在 java 环境中为 JavaScript 提供运行环境。读者可以在 下载 Rhino。
整个过程可以分为如下几个步骤:
确定自定义规则集:这里只使用一个 var 定义所有的变量、不允许使用 ++/-- 运算符、不允许使用 == 运算符,形成的 options:{onevar:true, plusplus:true, eqeqeq=true}。解压 rhino 压缩包,里面包含了 rhino(js.jar) 和 jslint(jslint.js),我们将 js.jar 添加的操作系统的 classpath 里,方便随处执行;并将 jslint.js 和 test.js 放在一起(当然也可以不放在一起,之后执行的时候键入不同的路径即可)。添加 options 到 JSLint:我们可以选择修改 JSLint 源码或是在待检测的 JavaScript 文件头部添加注释型规则。JSLint.js 源码片段如图 2 所示,在 536 行 if 语句之后:!JSLINT(input, {[options]}) 是 JSLint 的执行方法,我们的 options 就放在红色方框所在位置;如果要在待测文件头部添加注释类型规则,更加简单,将如下格式的注释添加到待检测 JavaScript 脚本文件顶部即可: /*jslint onevar:true, plusplus:true, eqeqeq=true */
需要指出的是,rhino 包里面提供的 jslint.js 并非原始的 jslint,而是修改过的压缩版本,它在文件最后添加了用于修改 options 的 JavaScript 代码,这也正是我们添加自定义规则的切入点。
> 打开 DOS 命令行,键入如下命令(将 JSLlint.js 和 test.js 放到当前命令行路径下),可以看到如图 5 所示的检测结果。
>java org.mozilla.javascript.tools.shell.Main jslint.js test.js
java实现html语法检查函数_Html或JS语法检测之JSLint工具相关推荐
- java 语法检查_java编译期间的语法检查
展开全部 使用javac编译时加上 -verbose 选项.就会发现会载入第三方jar文件D:\Temp>javac -verbose -cp J:\library\xpp3\xpp3-1.1. ...
- ruby语法_Ruby函数(方法)语法
ruby语法 The Ruby language makes it easy to create functions. Ruby语言使创建函数变得容易. Function Syntax 功能语法 de ...
- js面向对象与java面向对象的区别,被坑了,js语法跟Java面向对象语法还是有区别的...
请见代码,实现功能是要点表格当前行里的删除链接,直接删除当前行,并且删到最后一行的时候,把包含当前table的div直接隐藏了. function delCurrentTr(){ //这两句一定要写在 ...
- php 检查语法命令,php语法检查的方法有哪些?(代码示例)
php中语法检查是非常有必要的,如果不检查语法,则在发生错误时无法正常工作,如果同时执行语法检查,则可能不会发生该错误,本篇文章我们就来看一看php语法检查的方法. 我们可以使用lint检查 用lin ...
- php修改语法错误,php语法检查的方法总结
我们可以使用lint检查 用lint静态检查. 静态是一种只检查语法描述方法而不执行程序的方法. 此时使用lint命令. ※php_check_syntax这个语法检查函数已经被废止,所以不能使用. ...
- 【错误记录】Android 应用 release 打包报错处理 ( 关闭语法检查 | 日志处理 | release 配置 )
文章目录 一.关闭语法检查 二.日志处理 三.release 编译优化配置 一.关闭语法检查 Android 应用打包时会进行一系列语法检查 , 如某个布局文件中位置摆放问题 , 比较繁琐 ; 在 M ...
- Compute Shader 语法及函数 Reference for HLSL
/// 变量语法 使用以下语法规则声明 HLSL 变量. [Storage_Class] [Type_Modifier] Type Name[Index] [: Semantic] [: Packof ...
- oracle set parseonly on,Set noexec on 与 Set parseonly on的区别及SQL语法检查
Set noexec 表示编译但不执行语句. Set parseonly 表示解析但不编译或执行语句 我们可以用来将SQL语法检查集成中到我们的系统中,如下SQL代码 --设置只检查 SET PARS ...
- 06_[nvim0.5+从0单排]_Native LSP 自动补全、语法检查、code action、代码段—TypeScript篇
视频与目录 项目 值 教程目录 https://blog.csdn.net/lxyoucan/article/details/120641546 视频全屏 https://www.bilibili.c ...
最新文章
- 从朴素贝叶斯到贝叶斯网
- Maven配置_01
- ctb伺服驱动器说明书_安川伺服驱动器SGDV报警原因及处理措施
- 使用jupyterthemes插件定制jupyter notebook界面
- 向程序发送命令失败_Word提示:“向程序发送命令时出现问题”重装软件也没用?...
- 力扣-1791. 找出星型图的中心节点
- 设备发现[Airplay投屏应用]-mdns协议简介
- 如何填写台式计算机参数,教你如何看懂电脑各配置参数
- 小说大纲模板在计算机的哪里,如何撰写小说大纲
- P5208-[WC2019] I 君的商店【交互,二分】
- Navicat中出现MySQL server has gone away错误
- 计算机应用 网络管理开发,基于XML的iBAC网络管理系统的研究与开发-计算机应用技术专业论文.docx...
- 利用个人U盘制作简易加密狗
- 如何用ps 在图片上面写字
- Win2003 服务器安装及设置教程 系统设置篇
- 驱动工程师面试题汇编
- 创意=流量!“蔡徐坤”被“鸡你太美” 这款游戏蹭量霸榜!
- LDPC编译码原理介绍
- 树莓派入门(MacBook本)
- Spring Boot应用集成Docker并结合Log4j2、Kafka、ELK管理Docker日志
热门文章
- 菜鸟举例理解字节流和字符流区别
- Java编码格式大全
- python调用webservice_python使用suds来调用webservice
- latex中把公式中一部分斜体变为直体
- VM环境(Ubuntu18.04)+NVIDIA JETSON TX2刷机(JetPack 4.5)
- Allegro PCB Designer 17.2如何打开旧版本.brd文件
- 如何让360、遨游、猎豹等双核浏览器默认以webkit内核渲染网页?
- 正态分布(高斯分布)、Q函数、误差函数、互补误差函数(定义,意义及互相之间的关系)高斯分布的分布概率反解
- CGB2011-DAY03
- 你们这些偷代码的程序员!