2015-06-02 4 views
0

У меня была ужасная удача, пытаясь заставить ее работать, поэтому я надеюсь, что кто-то может помочь здесь.Java: Parse JavaScript & Flag Errors

В Java, я должен иметь возможность взять HTML-страницу с JavaScript внутри нее и обнаруживать любые ошибки JavaScript без, желательно без выполнения кода JavaScript.

Я нашел эту статью: Javascript parser for Java

И я попытался выяснить, как я должен использовать Каха, чтобы сделать это, но у меня трудное время найти какую-либо документацию с рабочими примерами что-то близко к тому, что я делаю.

В результате я взглянул на Нашорн, также упомянутый в этой статье. Я нашел несколько примеров, которые показывают, как выполнять JavaScript-код с Java, но это не обрабатывает всю HTML-страницу. Даже тогда выполнение, похоже, не включает в себя возможность проверки общих функций JavaScript (например, он не слышал о «предупреждении»).

Может ли кто-нибудь порекомендовать что-то, что могло бы сделать то, что я хочу, и указать мне в правильном направлении их документацию или дать мне пример?

ответ

1

jshint как отдельный продукт, кажется, хорошо подходит для этого:

Я рассмотрю только технические трудности вокруг третьего решения, так как мне, наконец, удалось заставить его работать тоже ...

Спойлер предупреждение: «тревога()» еще не обнаружен ... Решение пь 2 поможет там ...

Сначала нужно, чтобы захватить этот конкретный выпуск jshint: https://github.com/jshint/jshint/releases/tag/2.4.4

Все, что позже, чем v2.7.0, потерпит неудачу, и я лично отказался от исправления интенсивно прототипов и пространств имен ... Релизы от версии 2.4.4 до версии 2.2.6 работают без изменений, но ограничены по функциональности.

В примечаниях к выпуску специально написано, что «поддержка JavaScript-движка Nashorn» работает над этим выпуском. Я использую JDK8 nashorn 1.8.0_45 для этого теста.

Следующий шаг, чтобы извлечь из этого выпуска этот единственный файл jshint-2.4.4/DIST/jshint-rhino.js

Теперь вам нужно запустить Насхорн/JJS в сценариев режим и вам нужно чтобы быть конкретным об одном файле, который вы хотите проверить. В растворе 2 (nodejs основе), вы можете сделать несколько файлов или всю иерархию ниже папку ...

Создать простой файл файл.JS:

function(){} 

Теперь запустите следующую команду (обратите внимание на наличие -):

JJs -scripting jshint-rhino.js - file.js

Это даст вам следующий вывод:

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

Так что это покрывает как запустить jshint простым способом с nashorn ... С 3-м решением, по крайней мере, вы можете найти недостающие точки с запятой и несколько типичных ошибок. Но это не серебряная пуля, и для меня это не настоящая альтернатива.

Мое личное предпочтение было бы придерживаться только решения 2. Если у вас есть возможность установить либо nodejs, либо iojs на вашей платформе dev, перейдите и захватите https://www.npmjs.com/package/jshint. Вы не только сможете сделать больше, чем 3-е решение, вы также сможете настроить файл jshintrc, как описано в http://jshint.com/docs/