anb0s / eclox

Eclox is a simple doxygen frontend plug-in for eclipse. It aims to provide a slim and sleek integration of the code documentation process into Eclipse.
http://anb0s.github.io/eclox
Eclipse Public License 2.0
34 stars 2 forks source link

java.lang.IllegalArgumentException in createMarkersForResource #195

Closed lordyavin closed 7 years ago

lordyavin commented 7 years ago

During a build I got the following exception. Running doxygen from command line works fine.

Session Data eclipse.buildId=4.4.0.I20140606-1215 java.version=1.7.0_51 java.vendor=Oracle Corporation BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE Framework arguments: -product org.eclipse.epp.package.automotive.product Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.automotive.product

Plugi-in: org.gna.eclox.core Severity: Error Date: Wed Jun 28 10:36:05 CEST 2017

Stack Trace java.lang.IllegalArgumentException at org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:112) at org.eclipse.core.internal.resources.WorkspaceRoot.findFilesForLocationURI(WorkspaceRoot.java:104) at eclox.core.doxygen.BuildJob.createMarkersForResource(BuildJob.java:538) at eclox.core.doxygen.BuildJob.createMarkers(BuildJob.java:519) at eclox.core.doxygen.BuildJob.run(BuildJob.java:460) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

eclox_version

anb0s commented 7 years ago

It looks like the path of the resource that has warnings is not absolute:

    public IFile[] findFilesForLocationURI(URI location, int memberFlags) {
        if (!location.isAbsolute())
            throw new IllegalArgumentException();
        return (IFile[]) getLocalManager().allResourcesFor(location, true, memberFlags);
    }

Question: can you provide the Eclipse "console output" with some "warnings" lines included, where the path to the file is shown?

lordyavin commented 7 years ago

I think I identified the problem. Doxygen outputs warnings and errors in stderr. Other message are in stdin. Normally no issue but in the Doxygen Build Console the output is not synchronized. Therefore one of the warning messages is cut into two lines.

... Y:/a/script/on/my_Generating docs for compound ex_constants::Allocation... Generating docs for compound outofscope... machine.py:161: warning: Member ABC (variable) of namespace constants is not documented. ...

Of course machine.py is not a valid path.

anb0s commented 7 years ago

Thanks, i will investigate more... strange i didn't face this problem yet at windows and linux and i've some warnings during my builds...

lordyavin commented 7 years ago

BTW: Doxygen Version 1.8.13. No need to investigate. Only parse the stderr output to create resource markers and you are done, I assume.

anb0s commented 7 years ago

Yes, for the "java.lang.IllegalArgumentException", because of not valid path, there is no need for investigation, it will be fixed.

I talk about the identified problem that stderr and stdin are not synchronized --> new issue #201

anb0s commented 7 years ago

done for 0.12.0