eclipsesource / jshint-eclipse

JSHint integration for the Eclipse IDE
http://github.eclipsesource.com/jshint-eclipse/
146 stars 31 forks source link

build errors: line does not exist / String index out of range #27

Closed SamHasler closed 10 years ago

SamHasler commented 11 years ago

complains about line 21 when it only has 11 lines.

Tried using Eclipse's File > Convert Line Delimiters To > ... to switch between windows/unix/mac line endings and it didn't make a difference.

Added extra lines and it complained about String index out of range. Both stack traces from error log below:

java.lang.RuntimeException: Failed checking file /InsureFacesSalesChannel/WebContent/javascript/firebugx.js
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilderVisitor.check(JSHintBuilderVisitor.java:109)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilderVisitor.visit(JSHintBuilderVisitor.java:71)
    at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:126)
    at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:85)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
    at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:95)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:52)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:124)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:108)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilder.fullBuild(JSHintBuilder.java:53)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilder.build(JSHintBuilder.java:34)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
    at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513)
    at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:422)
    at org.eclipse.ui.actions.GlobalBuildAction$1.run(GlobalBuildAction.java:180)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.IndexOutOfBoundsException: line does not exist: 21
    at com.eclipsesource.jshint.Text.getLineOffset(Text.java:65)
    at com.eclipsesource.jshint.JSHint.fixPosition(JSHint.java:240)
    at com.eclipsesource.jshint.JSHint.createProblem(JSHint.java:230)
    at com.eclipsesource.jshint.JSHint.handleProblems(JSHint.java:219)
    at com.eclipsesource.jshint.JSHint.check(JSHint.java:152)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilderVisitor.check(JSHintBuilderVisitor.java:104)
    ... 27 more

java.lang.RuntimeException: Failed checking file /InsureFacesSalesChannel/WebContent/javascript/firebugx.js
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilderVisitor.check(JSHintBuilderVisitor.java:109)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilderVisitor.visit(JSHintBuilderVisitor.java:71)
    at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:126)
    at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:85)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
    at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:95)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:52)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:124)
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:108)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilder.fullBuild(JSHintBuilder.java:53)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilder.build(JSHintBuilder.java:34)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
    at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:513)
    at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:422)
    at org.eclipse.ui.actions.GlobalBuildAction$1.run(GlobalBuildAction.java:180)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 390
    at java.lang.String.charAt(String.java:686)
    at com.eclipsesource.jshint.JSHint.fixPosition(JSHint.java:244)
    at com.eclipsesource.jshint.JSHint.createProblem(JSHint.java:230)
    at com.eclipsesource.jshint.JSHint.handleProblems(JSHint.java:219)
    at com.eclipsesource.jshint.JSHint.check(JSHint.java:152)
    at com.eclipsesource.jshint.ui.internal.builder.JSHintBuilderVisitor.check(JSHintBuilderVisitor.java:104)
    ... 27 more
ralfstx commented 11 years ago

It seems that JSHint reports an error for a line that does not exist in the file. Does this error only occur with this one file or are others affected as well? If it's only firebug.js, could you provide a copy of this file to help me reproduce the error?

SteveTrautmanPEI commented 11 years ago

I just ran into a similar issue, but mine was a null reference exception (line does not exist). I was adding new JSHint options to my (Titanium) projects. latedef was the culprit. I couldn't get those errors to show up...I think JSHint was trying to do so when it would fail. I moved the file to a new (nearly empty) project, and got the latedef errors. Once I corrected them in my real project, the crash went away. Perhaps the key difference between the two projects was that I had at least 60 latedef errors to correct across two projects. Too many for JSHint to handle? Another possibility is that the two projects are clones (one is a sandbox experiment for now). I'm not sure I can reproduce it in a sample project, and I can't share my work project, so apologies for that. But I hope this info will still be helpful...

isobretatel commented 11 years ago

We have the same exception in Eclipse using JSHInt 1.1.0. WebStorm with JSHInt 1.1.0 works with the same JS files.

ralfstx commented 10 years ago

Although I wasn't able to reproduce any of these errors, I've decided to add a safeguard for the "line does not exist" error in 67f8c729ed78177d99e853209cf9af8228463442. Those errors happen when jshint reports an error with an unexpected line number. Since this is outside of our control, a safeguard seems fair.

As for the "string index out of range", I'm positive that it can't happen with the current version anymore. There was a bug in the mapping from visual to real char index that has been fixed in 9ca51097d3a0a8da3b1364a0e18be99d85925c5c and I've revised the method again in 6de5efc93cbcb2ca139739855bcef0a5605310b1.