Java:解析JavaScript&标记错误

时间:2015-06-02 18:08:17

标签: java javascript nashorn google-caja

我试图让这个工作变得很糟糕,所以我希望有人可以在这里帮忙。

在Java中,我需要能够在其中使用带有JavaScript的HTML页面并检测任何JavaScript错误,最好不要执行JavaScript代码。

我找到了这篇文章: Javascript parser for Java

我试图弄清楚我应该如何使用Caja来做这件事,但我很难找到任何文档,其中包含与我相近的工作示例&# 39;我在做什么。

结果我看了一下Nashorn也在那篇文章中引用过。我找到了一些示例,说明如何从Java执行JavaScript代码,但这并不处理整个HTML页面。即便如此,执行似乎还不包括验证常见JavaScript函数的能力(例如,它没有听说过" alert")。

任何人都可以推荐一些可以做我想做的事情,并指出我的文档正确的方向或给我一个例子吗?

1 个答案:

答案 0 :(得分:1)

作为独立产品的jshint似乎非常适合这个:

我将只讨论第三种解决方案的技术难题,因为我最终还是设法让它工作......

剧透警报: " alert()"尚未检测到...解决方案nb 2将有助于...

您首先需要获取此特定版本的jshint:https://github.com/jshint/jshint/releases/tag/2.4.4

比v2.7.0更晚的任何东西现在都会失败,我个人放弃了密集的原型和命名空间的修补...从v2.4.4发布直到v2.6.3工作而没有修改但功能有限。

在发行说明中,它专门编写了“支持Nashorn JavaScript引擎"正在研究这个版本。我正在使用JDK8 nashorn 1.8.0_45进行此测试。

下一步是从此版本中提取此单个文件 jshint-2.4.4 / dist / jshint-rhino.js

现在您需要在脚本模式下运行nashorn / jjs,并且您需要特定关于您要验证的单个文件。 在解决方案2(基于nodejs)中,您可以在文件夹下面执行多个文件或完整的层次结构...

创建一个简单文件 file.js

function(){}

现在运行以下命令(请注意是否存在 - ):

  

jjs -scripting jshint-rhino.js - file.js

这将为您提供以下输出:

Missing name in function declaration. (file.js:1:9)
> function(){}

所以这包括如何使用nashorn以简单的方式运行jshint ...使用第3个解决方案,至少可以找到丢失的分号和几个典型的错误。但它不是一颗银弹,对我来说它不是一个真正的替代品。

我个人的偏好只是坚持解决方案2。如果您可以在开发平台上安装nodejs或iojs,请抓住https://www.npmjs.com/package/jshint。您不仅可以执行第三个解决方案,还可以按照http://jshint.com/docs/

中的说明配置jshintrc文件。