Hi Volker,

> On 29 May 2019, at 16:01, Volker Simonis <volker.simo...@gmail.com> wrote:
> 
> On Wed, May 29, 2019 at 3:43 PM Robin Westberg
> <robin.westb...@oracle.com> wrote:
>> 
>> Hi Volker,
>> 
>>> On 28 May 2019, at 17:33, Volker Simonis <volker.simo...@gmail.com> wrote:
>>> 
>>> Hi Robin,
>>> 
>>> thanks a lot for doing this!
>>> 
>>> I have just a quick question. Do you know if any of the VSC indexers
>>> (default, clangd) support call hierarchies (i.e. "called by",
>>> "callers" of a function/method) and "used by" for variables/class
>>> fields?
>> 
>> Sure, I can make a quick summary of the various pros and cons of the 
>> indexers that I’ve found so far. They are all moving pretty fast though, so 
>> didn’t think it was a good fit for the documentation file.
>> 
>> In general, VS Code itself only just recently gained proper support for 
>> displaying call hierarchies: 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__code.visualstudio.com_updates_v1-5F33-23-5Fcall-2Dhierarchy&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=UJlIwvo0Thp_BYS_NWFT0ryBTIkcL2KhsFz8CKsa4GY&m=82pYT4_vb0KoCg2J7f8ZHebXioM2IbSDUpVgSuUAz-A&s=yY4u7WPyw8IMAQOytIDpU3MePzQMuGgCTyIP4XuHXbI&e=
>>  - but alternative indexers have worked around this by showing them 
>> differently.
>> 
>> Default (Microsoft - C/C++ for Visual Studio Code)
>> + Easy to setup, as no additional dependencies are needed
>> + Good “go to definition”, the only one that can make sense of the 
>> template+macro stuff in log.hpp for example
>> - Find references (used by) not done yet (said to be coming in the June 
>> update: 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_microsoft_vscode-2Dcpptools_issues_15&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=UJlIwvo0Thp_BYS_NWFT0ryBTIkcL2KhsFz8CKsa4GY&m=82pYT4_vb0KoCg2J7f8ZHebXioM2IbSDUpVgSuUAz-A&s=usQi8Sluzbg7sm51fLwBgFVSkY8uj_ZkOgFhT6clIjw&e=)
>> - Call hierarchies also not there (scheduled for September apparently: 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_microsoft_vscode-2Dcpptools_issues_16&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=UJlIwvo0Thp_BYS_NWFT0ryBTIkcL2KhsFz8CKsa4GY&m=82pYT4_vb0KoCg2J7f8ZHebXioM2IbSDUpVgSuUAz-A&s=0nJoexh1jJuqrNQ5bhxtpwdzS9LhGYhzKyEmFbM1D8A&e=)
>> 
>> clangd
>> + Actively developed and part of the llvm/clang project
>> + Support for find references
>> - ..but not call hierarchies yet
>> - Full project indexing is still flagged as experimental, and currently 
>> seems to fail when editing commonly used header files for example
>> 
>> Full feature list: 
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__clang.llvm.org_extra_clangd_Features.html-23complete-2Dlist-2Dof-2Dfeatures&d=DwIFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=UJlIwvo0Thp_BYS_NWFT0ryBTIkcL2KhsFz8CKsa4GY&m=82pYT4_vb0KoCg2J7f8ZHebXioM2IbSDUpVgSuUAz-A&s=-59_vkfX4TV8qO7PoHopjLBC1c2Qu-HjneQnNM49Zps&e=
>> 
>> rtags
>> This is currently the most feature-complete indexer I think. But the VS Code 
>> integration is a bit minimal and not part of the rtags project itself, and 
>> it is missing things like indexer progress.
>> + The indexer is actively developed and has been around for quite some time
>> - You will probably have to build the indexer from source
>> + Full support for call hierarchies and find references
>> - VS Code integration a bit limited, missing convenience features like 
>> switch between header/source file, showing method/class documentation on 
>> hover.
>> 
>> There are even more indexers of course, a promising one used to be “cquery", 
>> but that project seems to be defunct now. It lives on in the “ccls" indexer, 
>> but ithat one is a bit tricky to configure unless you use clang for building 
>> the JDK as well.
>> 
>> So in summary, after the summer the default indexer might be the obvious 
>> best choice, but right now it depends on which features you think are the 
>> most important I guess..
>> 
> 
> Hi Robin,
> 
> thanks a lot for the great summary! Incidentally I've just did some
> Google research as well and basically came to the same conclusion.
> "Cquery" seemed quite promising and also pretends to have call
> hierarchies. But it seems to be defunct and I've also found some bug
> reports about problems with the call hierarchies.

Yeah, cquery did work okay when I tried it, but had some issues. However, the 
“spiritual” successor ccls has fixed all the issues I had with cquery, I spent 
a bit more time on configuring it today and finally figured out why it didn’t 
work!

> For me "Called Hierarchy", and "Find References" (in this order) are
> really the most important IDE features. I'm using Eclipse and if you
> setup your HotSpot project correctly, these features work pretty well
> and reliably.
> 
> Have you personally tried the rtags "call hierarchies" / "find
> references" support in VSC? From your summary it sounds like it's
> worth giving it a try.

Only tried it a bit, but I know other HotSpot developers that use it with emacs 
/ vim. But the VS Code integration is really bare-bones, so a bit hard to use 
it in practice.

But now that ccls actually works, I can really recommend you try that one, 
working very good for me so far!

> Thanks again for caring about these topics! Hotspot development with
> IDE support has always been a pain and every improvement in this area
> will be highly welcome :)

Sure, I mostly do it since I want to be able to use a good IDE myself, but it’s 
always nice if others can benefit from it too. :)

Best regards,
Robin

> 
> Best regards,
> Volker
> 
>> Best regards,
>> Robin
>> 
>>> 
>>> Regards,
>>> Volker
>>> 
>>> On Mon, May 27, 2019 at 6:03 PM Robin Westberg
>>> <robin.westb...@oracle.com> wrote:
>>>> 
>>>> Hi all,
>>>> 
>>>> Please review this change that adds build system support for generating a 
>>>> Visual Studio Code workspace configured for working with the JDK native 
>>>> code. It configures the default C/C++ IntelliSense Engine to allow code 
>>>> completion/navigation and similar features. It also configures two 
>>>> executable targets (gtestLauncher and java) that can be built and debugged 
>>>> from the IDE.
>>>> 
>>>> The main target is "make vscode-project”, additional information can be 
>>>> found in doc/ide.[md|html].
>>>> 
>>>> Issue:
>>>> https://bugs.openjdk.java.net/browse/JDK-8223678
>>>> 
>>>> Webrev:
>>>> https://cr.openjdk.java.net/~rwestberg/8223678/webrev.01/
>>>> 
>>>> Testing:
>>>> Manual testing on Linux, MacOS and Windows
>>>> 
>>>> Thanks Erik Joelsson for taking a look at an earlier version of it!
>>>> 
>>>> Best regards,
>>>> Robin

Reply via email to