【问题标题】:Java: Parse JavaScript & Flag ErrorsJava:解析 JavaScript 并标记错误
【发布时间】:2015-06-02 18:08:17
【问题描述】:

我一直运气不好试图让它工作,所以我希望有人可以在这里提供帮助。

在 Java 中,我需要能够获取包含 JavaScript 的 HTML 页面,并在不执行 JavaScript 代码的情况下检测任何 JavaScript 错误,最好是不执行 JavaScript 代码。

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

我试图弄清楚我应该如何使用 Caja 来做到这一点,但我很难找到任何文档,其中包含与我正在做的事情接近的任何工作示例。

因此,我查看了该文章中也提到的 Nashorn。我找到了一些示例,展示了如何从 Java 执行 JavaScript 代码,但这并不能处理整个 HTML 页面。即使这样,执行似乎也不包括验证常见 JavaScript 函数的能力(例如,它没有听说过“警报”)。

谁能推荐一些可以做我想做的事情,并为他们的文档指出正确的方向或给我一个例子?

【问题讨论】:

    标签: java javascript nashorn google-caja


    【解决方案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

    现在您需要在 scripting 模式下运行 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...使用第三种解决方案,至少您可以找到缺少的分号和几个典型的错误。但这不是灵丹妙药,对我来说也不是真正的选择。

    我个人的偏好是只坚持解决方案 2。如果你有可能在你的开发平台上安装 nodejs 或 iojs,去获取https://www.npmjs.com/package/jshint。除了第三种解决方案之外,您不仅可以做更多的事情,还可以按照http://jshint.com/docs/ 中所述配置 jshintrc 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 2021-09-01
      • 2023-01-20
      • 1970-01-01
      相关资源
      最近更新 更多