google-code-export / wro4j

Automatically exported from code.google.com/p/wro4j
1 stars 1 forks source link

Improve error message when jshint is provided with invalid options #739

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
If I invoke jshint 2.1.3 with:

<configuration>
  <options>unused:vars</options>
</configuration>

it fails with:

Errors are: 
[ro.isdc.wro.extensions.processor.support.linter.LinterError@213cd1fe[
  line=0
  character=0
  reason=Bad option: 'unused:vars'.
  evidence=
]]

If I pass the same option using /* global unused:vars */ it works fine.

Original issue reported on code.google.com by cow...@bbs.darktech.org on 6 Jun 2013 at 5:36

GoogleCodeExporter commented 9 years ago
It seems jshint is expecting unused:"vars" (notice the quotes)

Passing unused:"vars" to <options> results in this exception:

0    ERROR ExceptionHandlingProcessorDecorator - Failed to process the 
resource: ro.isdc.wro.model.resource.Resource@533aaf33[JS,/js/Admin.js,true] 
using processor: ro.isdc.wro.maven.plugin.JsHintMojo$1@64c43e16. Reason: Can't 
find bundle for base name org.mozilla.javascript.tools.resources.Messages, 
locale en_CA
Exception occured while processing: ro.isdc.wro.WroRuntimeException: The 
processor: ro.isdc.wro.maven.plugin.JsHintMojo$1@64c43e16 failed, class: 
ro.isdc.wro.WroRuntimeException,caused by: java.util.MissingResourceException
ro.isdc.wro.WroRuntimeException: The processor: 
ro.isdc.wro.maven.plugin.JsHintMojo$1@64c43e16 failed
    at ro.isdc.wro.WroRuntimeException.wrap(WroRuntimeException.java:70)
    at ro.isdc.wro.model.resource.processor.decorator.ExceptionHandlingProcessorDecorator.process(ExceptionHandlingProcessorDecorator.java:66)
    at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
    at ro.isdc.wro.model.resource.processor.decorator.BenchmarkProcessorDecorator.process(BenchmarkProcessorDecorator.java:44)
    at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
    at ro.isdc.wro.model.resource.processor.decorator.DefaultProcessorDecorator.process(DefaultProcessorDecorator.java:42)
    at ro.isdc.wro.model.group.processor.PreProcessorExecutor$2.process(PreProcessorExecutor.java:228)
    at ro.isdc.wro.model.group.processor.PreProcessorExecutor.applyPreProcessors(PreProcessorExecutor.java:210)
    at ro.isdc.wro.model.group.processor.PreProcessorExecutor.processAndMerge(PreProcessorExecutor.java:104)
    at ro.isdc.wro.model.group.processor.PreProcessorExecutor.processAndMerge(PreProcessorExecutor.java:78)
    at ro.isdc.wro.model.group.processor.GroupsProcessor.process(GroupsProcessor.java:83)
    at ro.isdc.wro.cache.support.DefaultSynchronizedCacheStrategyDecorator.loadValue(DefaultSynchronizedCacheStrategyDecorator.java:90)
    at ro.isdc.wro.cache.support.DefaultSynchronizedCacheStrategyDecorator.loadValue(DefaultSynchronizedCacheStrategyDecorator.java:36)
    at ro.isdc.wro.cache.support.AbstractSynchronizedCacheStrategyDecorator.get(AbstractSynchronizedCacheStrategyDecorator.java:57)
    at ro.isdc.wro.manager.ResourceBundleProcessor.serveProcessedBundle(ResourceBundleProcessor.java:66)
    at ro.isdc.wro.manager.WroManager.process(WroManager.java:152)
    at ro.isdc.wro.maven.plugin.AbstractSingleProcessorMojo.processGroup(AbstractSingleProcessorMojo.java:76)
    at ro.isdc.wro.maven.plugin.AbstractSingleProcessorMojo.doExecute(AbstractSingleProcessorMojo.java:54)
    at ro.isdc.wro.maven.plugin.AbstractWro4jMojo.execute(AbstractWro4jMojo.java:135)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.util.MissingResourceException: Can't find bundle for base name 
org.mozilla.javascript.tools.resources.Messages, locale en_CA
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:796)
    at org.mozilla.javascript.tools.ToolErrorReporter.getMessage(ToolErrorReporter.java:56)
    at org.mozilla.javascript.tools.ToolErrorReporter.reportErrorMessage(ToolErrorReporter.java:161)
    at org.mozilla.javascript.tools.ToolErrorReporter.error(ToolErrorReporter.java:103)
    at org.mozilla.javascript.Parser.addError(Parser.java:188)
    at org.mozilla.javascript.Parser.addError(Parser.java:166)
    at org.mozilla.javascript.Parser.reportError(Parser.java:223)
    at org.mozilla.javascript.Parser.reportError(Parser.java:217)
    at org.mozilla.javascript.Parser.mustMatchToken(Parser.java:388)
    at org.mozilla.javascript.Parser.mustMatchToken(Parser.java:378)
    at org.mozilla.javascript.Parser.plainProperty(Parser.java:3317)
    at org.mozilla.javascript.Parser.objectLiteral(Parser.java:3218)
    at org.mozilla.javascript.Parser.primaryExpr(Parser.java:2779)
    at org.mozilla.javascript.Parser.memberExpr(Parser.java:2418)
    at org.mozilla.javascript.Parser.unaryExpr(Parser.java:2316)
    at org.mozilla.javascript.Parser.mulExpr(Parser.java:2241)
    at org.mozilla.javascript.Parser.addExpr(Parser.java:2225)
    at org.mozilla.javascript.Parser.shiftExpr(Parser.java:2206)
    at org.mozilla.javascript.Parser.relExpr(Parser.java:2181)
    at org.mozilla.javascript.Parser.eqExpr(Parser.java:2153)
    at org.mozilla.javascript.Parser.bitAndExpr(Parser.java:2142)
    at org.mozilla.javascript.Parser.bitXorExpr(Parser.java:2131)
    at org.mozilla.javascript.Parser.bitOrExpr(Parser.java:2120)
    at org.mozilla.javascript.Parser.andExpr(Parser.java:2109)
    at org.mozilla.javascript.Parser.orExpr(Parser.java:2098)
    at org.mozilla.javascript.Parser.condExpr(Parser.java:2062)
    at org.mozilla.javascript.Parser.assignExpr(Parser.java:2033)
    at org.mozilla.javascript.Parser.argumentList(Parser.java:2385)
    at org.mozilla.javascript.Parser.memberExprTail(Parser.java:2535)
    at org.mozilla.javascript.Parser.memberExpr(Parser.java:2454)
    at org.mozilla.javascript.Parser.unaryExpr(Parser.java:2316)
    at org.mozilla.javascript.Parser.mulExpr(Parser.java:2241)
    at org.mozilla.javascript.Parser.addExpr(Parser.java:2225)
    at org.mozilla.javascript.Parser.shiftExpr(Parser.java:2206)
    at org.mozilla.javascript.Parser.relExpr(Parser.java:2181)
    at org.mozilla.javascript.Parser.eqExpr(Parser.java:2153)
    at org.mozilla.javascript.Parser.bitAndExpr(Parser.java:2142)
    at org.mozilla.javascript.Parser.bitXorExpr(Parser.java:2131)
    at org.mozilla.javascript.Parser.bitOrExpr(Parser.java:2120)
    at org.mozilla.javascript.Parser.andExpr(Parser.java:2109)
    at org.mozilla.javascript.Parser.orExpr(Parser.java:2098)
    at org.mozilla.javascript.Parser.condExpr(Parser.java:2062)
    at org.mozilla.javascript.Parser.assignExpr(Parser.java:2033)
    at org.mozilla.javascript.Parser.expr(Parser.java:2012)
    at org.mozilla.javascript.Parser.nameOrLabel(Parser.java:1765)
    at org.mozilla.javascript.Parser.statementHelper(Parser.java:1032)
    at org.mozilla.javascript.Parser.statement(Parser.java:901)
    at org.mozilla.javascript.Parser.parse(Parser.java:540)
    at org.mozilla.javascript.Parser.parse(Parser.java:478)
    at org.mozilla.javascript.Context.compileImpl(Context.java:2348)
    at org.mozilla.javascript.Context.compileString(Context.java:1335)
    at org.mozilla.javascript.Context.compileString(Context.java:1324)
    at org.mozilla.javascript.Context.evaluateString(Context.java:1076)
    at ro.isdc.wro.extensions.script.RhinoScriptBuilder.evaluate(RhinoScriptBuilder.java:199)
    at ro.isdc.wro.extensions.processor.support.linter.AbstractLinter.validate(AbstractLinter.java:87)
    at ro.isdc.wro.extensions.processor.js.AbstractLinterProcessor.process(AbstractLinterProcessor.java:65)
    at ro.isdc.wro.maven.plugin.JsHintMojo$1.process(JsHintMojo.java:62)
    at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
    at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
    at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
    at ro.isdc.wro.model.resource.processor.decorator.SupportAwareProcessorDecorator.process(SupportAwareProcessorDecorator.java:39)
    at ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator.process(ProcessorDecorator.java:87)
    at ro.isdc.wro.model.resource.processor.decorator.ExceptionHandlingProcessorDecorator.process(ExceptionHandlingProcessorDecorator.java:56)
    ... 38 more

Passing in unused:\"vars\" results in:

Errors are: 
[ro.isdc.wro.extensions.processor.support.linter.LinterError@213cd1fe[
  line=0
  character=0
  reason=Bad option: 'unused:"vars"'.
  evidence=
]]

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 5:42

GoogleCodeExporter commented 9 years ago
Other key/value pairs fail too. For example: "indent:4" is a legal option but 
when invoked using wro4j jshint complains:

Bad option: 'indent:4'.

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 6:00

GoogleCodeExporter commented 9 years ago
Try with latest version of rhino (1.7R5-20130223-1) 

http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22ro.isdc.wro4j%22%20AND%20a%3A
%22rhino%22

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 6:19

GoogleCodeExporter commented 9 years ago
The options should be passed using the following format:
key=value

or 
key=['v1','v2','v3','v4']

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 6:23

GoogleCodeExporter commented 9 years ago
unused="vars" worked without upgrading Rhino. Please document this behavior: 
https://code.google.com/p/wro4j/wiki/MavenPluginJsHint

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 6:54

GoogleCodeExporter commented 9 years ago
Rhino upgrade is required only to work with latest version of jshint (loaded 
with webjar). 

The options can be provided as following regardless of the version of rhino 
used:
1) option1,option2,option3
2) key1=value1,key2=value2
3) multiValueKey=['v1','v2','v3']

The upgrade to rhino version 1.7R5-20130223-1 is required only to fix the 
following error:

Caused by: java.util.MissingResourceException: Can't find bundle for base name 
org.mozilla.javascript.tools.resources.Messages, locale en_CA

which was caused by a problem with previous release.

Closing this issue with invalid resolution. Feel free to reopen if you don't 
agree.

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 6:58

GoogleCodeExporter commented 9 years ago
Confirmed. Updating to the rhino version you mentioned results in a different 
(but not necessarily better) error message. If you run with unused:"vars" you 
will see what I mean.

That being said, I'm fine with closing this issue if you don't plan on 
improving the error message further.

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 7:36

GoogleCodeExporter commented 9 years ago
Ok, so we can create an issue aiming to improve error message. How a better 
error message should look like?

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 7:39

GoogleCodeExporter commented 9 years ago
Maybe something along the lines of "Invalid option: "<value>". See 
https://code.google.com/p/wro4j/wiki/MavenPluginJsHint for legal syntax".

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 7:49

GoogleCodeExporter commented 9 years ago
I would like to avoid adding links to documentation in the code. 

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 8:00

GoogleCodeExporter commented 9 years ago
"Invalid option: <value>" is a good start.

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 8:09

GoogleCodeExporter commented 9 years ago
Sorry, I meant "Invalid option syntax: <value>" since we don't want to imply 
the problem is the option value.

Original comment by cow...@bbs.darktech.org on 6 Jun 2013 at 8:09

GoogleCodeExporter commented 9 years ago

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 9:37

GoogleCodeExporter commented 9 years ago
Fixed in branch 1.6.x

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 9:54

GoogleCodeExporter commented 9 years ago

Original comment by alex.obj...@gmail.com on 6 Jun 2013 at 9:54

GoogleCodeExporter commented 9 years ago

Original comment by alex.obj...@gmail.com on 8 Jun 2013 at 9:48