oracle / opengrok

OpenGrok is a fast and usable source code search and cross reference engine, written in Java
http://oracle.github.io/opengrok/
Other
4.34k stars 745 forks source link

Asserts with '<' character suppress function definitions from being found #932

Closed acdevlin closed 3 years ago

acdevlin commented 9 years ago

Hitting involving asserts with the '<' character. For some reason, after any ASSERT macro usage with said character, function definitions are not properly interpreted by either ctags or the analyzer. The end result means that we're unable to reliably find function definitions and see them in the "Navigation" box.

Sample screenshot of a test file used to isolate this problem:

opengrok_assert_issue

Notice that the definition of function "asdf" wasn't properly interpreted. Commenting out the ASSERTRD's at lines 16 and 17 will cause it to be picked up properly though. Also notice that the definition of function "moop" is properly picked up and behaves as expected.

We're currently using OpenGrok 0.11.1 (I know, I know...we need to upgrade) and ctags 5.8, if that helps make a difference. I'm not sure where to start looking to debug this and would greatly appreciate any assistance!

tarzanek commented 9 years ago

this smells like ctags problem - can you generate tags for that .h file ? eventually try to upgrade ctags to 5.9 svn(e.g. build from debian sources) or use github ctags ... (https://github.com/fishman/ctags/) if it is a javascript problem, you can easily figure out using developer console which shows javascript errors in browser (firebug, etc.) if it will throw an error (or try to trace/step the code that shows navigation bar - but all defs should be in some javascript variable if I remember correctly, so just pure show of page source code will show what comes from server and can rule out or confirm a ctag problem)

vladak commented 9 years ago

I'd first run ctags by hand to see what ends up in the tags file.

BTW the 'Annotate across Integrations' link - what does it do ?

acdevlin commented 9 years ago

@tarzanek So function "asdf" was properly picked up in the tags file by running ctags on it via the CLI. I'll poke around with the page's javascript next; Doing a naive "view source" doesn't show anything fishy.

@vladak The 'Annotate across Integrations' is an inhouse feature I threw together a while back. All of our integrations are done by a handful of users, and our annotate would often only show these users' names for the blame in a file. This on the other hand traces back across integrations and finds the original author of a line, rather than just who integrated the line(s) into the latest version of the file...sadly it only works for Perforce at the moment, but if this sounds useful we can try and commit it back :)

vladak commented 3 years ago

Please retry with the latest Universal ctags + OpenGrok and reopen if the issue persists.