在记事本++中使用 JSLint
Posted
技术标签:
【中文标题】在记事本++中使用 JSLint【英文标题】:Using JSLint in Notepad++ 【发布时间】:2010-11-06 00:25:39 【问题描述】:我看到其他文本编辑器使用扩展来允许语法检查,例如JSLint,这可以用 Notepad++ 实现吗?
【问题讨论】:
这不是答案,而是这段代码: (function() if(!JSLINT(WScript.StdIn.ReadAll(),passfail:false)) var e; for(var i in JSLINT.errors) e=JSLINT.errors[i]; WScript.StdOut.WriteLine('Lint at line '+(e.line+1)+' character '+(e.character+1)+': '+e.reason); WScript.StdOut.WriteLine(' '+(e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/ ,"$1")); WScript.Quit(1); ());在 Notepad++ 控制台上给我这个:> Lint 在第 79 行字符 8:停止,> 无法继续。 (39% 扫描)。 > C:\Program Files\JSLint\jslint.js(4637, 17) > Microsoft JScript 运行时错误:> 'line' 为空或不是 【参考方案1】:我已经设法让两个 lint 程序使用 notepad++ 的 NppExec 插件运行。
NppExec插件通常默认安装,可以在plugins -> NppExec下找到。 (使用 NppExec 0.3 RC1 和 Notepad++ 5.1+)。
1) JSLint
首先从http://www.jslint.com下载WSH version of jslint。 修改文件最后部分如下:
(function()
if(!JSLINT(WScript.StdIn.ReadAll(),passfail:false))
var e;
for(var i in JSLINT.errors)
e=JSLINT.errors[i];
WScript.StdOut.WriteLine('Lint at line '+(e.line+1)+' character '+(e.character+1)+': '+e.reason);
WScript.StdOut.WriteLine(' '+(e.evidence||'').replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"));
WScript.Quit(1);
());
(Pre-modified version here) 这会导致 JSLint 输出所有错误,而不仅仅是第一个错误。
接下来,Notepad++ 的 NppExec 不允许使用 StdIn,所以我写了一个 batch file 来实际执行命令。 这也允许我添加一个插入所有 javascript 文件之前的配置文件。选项可见here。 批处理文件如下所示:
@copy /b "C:\Program Files\jslint\conf.txt"+%1 "C:\Program Files\jslint\lastoutput.txt" > temp.txt
@cscript /Nologo "C:\Program Files\jslint\jslint.js" < "C:\Program Files\jslint\lastoutput.txt"
您可能需要根据您放置 jslint.js 文件的位置来修改路径。 conf.txt 文件如下所示:
/*jslint forin:true*/
确保此行末尾没有回车。如果有回车,则所有行数都会减一。
最后,我在 NppExec 中输入的命令是:
"C:\Program Files\jslint\jslint.bat" "$(FULL_CURRENT_PATH)"
2) Javascript Lint
Javascript lint 是一个稍微不那么严格的解析器,并且更容易实现。
首先从http://www.javascriptlint.com/download.htm 获取windows 版本的副本并解压缩。 那么NppExec命令就是:
"C:\Program Files\JavascriptLint\jsl.exe" -conf "C:\Program Files\JavascriptLint\jsl.default.conf" -process "$(FULL_CURRENT_PATH)"
(注意:大多数 Javascript Lint 指令都会在命令末尾添加“pauseatend”,我发现这会导致 Notepad++ 出现问题,所以我将其关闭)
希望这对某人有所帮助, 干杯, 安迪。
【讨论】:
感谢 Javascript Lint 参考。我比 JSLint 更喜欢它,但大多数人倾向于忽略它。 按照您对 JSLint 和 notepad++ 的说明进行操作,并且成功了。谢谢。 Javascript lint 下载链接已损坏。它是:javascriptlint.com/download.htm 谢谢。对我来说,没有安装 NppExec 插件。我做了 Plugins->Plugin Manager-> Available 并点击 NppExec 安装它。 对于 javascript lint,不要忘记添加 NppExec 控制台输出过滤器 '%ABSFILE%(%LINE%): *'【参考方案2】:你可以试试记事本++的 JSLint 插件:
https://sourceforge.net/projects/jslintnpp/
【讨论】:
+1。您只需将 DLL 下载到 Notepad++ 插件目录即可安装它。您立即获得 JSLint,带有一个不错的“选项”对话框,您可以在其中自定义 JSLint 选项,包括更改将输出的最大错误数。与我仅仅阅读 currently accepted answer 相比,我真的在更短的时间内启动并运行。更不用说实际对它所描述的 JS、配置和批处理文件进行所有这些编辑了。 这比我的解决方案写的好得多。 FWIW,您不必再手动安装它 - 您只需从可用插件列表中选择它即可。我喜欢 Notepad++ 的插件管理器!见截图@i.imgur.com/Sap38.png 不幸的是,该插件似乎被最新版本的 JSLint(给出“未知异常”错误对话框)和 JSHint(给出“无效 JSLint 脚本!”错误对话框)破坏。也许我做错了什么? 太糟糕了,它只适用于 32 位 NPP :(.【参考方案3】:安装插件后,你应该去:
插件 -> JSLint -> JSLint 选项
并将“选择 JavaScript lint 工具:”更改为 JSHint。
JSHint 给出的无意义的“错误”要少得多。
【讨论】:
以上是关于在记事本++中使用 JSLint的主要内容,如果未能解决你的问题,请参考以下文章