Code Intelligence in Large C(++) Repositories - Colin Grant and Benjamin Davis

Subscribers:
24,000
Published on ● Video Link: https://www.youtube.com/watch?v=jXeex9jnz7Q



Duration: 40:21
72 views
2


Providing a productive development environment for developers working on large C/C++ codebases with extensive configuration is challenging. Accurate symbol resolution depends on an understanding of compilation configuration, but users may need to switch between configurations, branches, and compilation trees frequently. This talk will address a number of the problems of providing accurate code intelligence in such projects and some of the approaches and tradeoffs that we have explored to address them.

The gold standard for understanding a C/C++ codebase is the full record of its compilation, including all configuration. CLangD requires such information in the form of a compile_commands.json or compile-flags.txt file to supply its code intelligence, and in the best case, its performance is excellent. However, generating the compilation data necessary is laborious: often users must actually run a build, which is impractical for users frequently switching contexts, and impossible for users who need to browse broken code. Some of the difficulties associated with CLangD's data requirements can be addressed by sharing of databases, and recent CLang versions also support remote compilation databases. However, setting up such infrastructure is still a hurdle, and requires users to have access to the remote resource at all times.

Another approach to providing effective indexing is to rely less on certainty about compilation and provide alternative means of symbol resolution. One approach that we have had success within Ericsson is a combination of CDT's CScope for parsing and reference tracking and CTags for symbol resolution in case of uncertainty. For external symbol definitions, this approach certainly returns the correct definition, but may also return extraneous definitions where the same names are used multiple times – it trades certainty for comprehensiveness.




Other Videos By Eclipse Foundation


2021-11-19Theia for C/C++ and embedded development - Stefan Dirix
2021-11-19Maximizing Reuse - Thomas Haber
2021-11-19Framework for System testing Theia Applications - Philip Langer
2021-11-19Why Eclipse Theia - Marc Dumais
2021-11-19How my team built a Theia based Cloud IDE Martin Ma
2021-11-19Building a model application with Theia and EMF.cloud the DISCO experience - Vincent Hemery
2021-11-19Fusion Studio An XML database IDE - Charafeddine Cheraa
2021-11-19How to be an Eclipse Theia Adopter - Jonas Helming
2021-11-19Panel Discussion - Theia and the Cloud Development Ecosystem Where it fits now and what do
2021-11-19Deploying Theia based Web Applications - Paul Marechal
2021-11-19Code Intelligence in Large C(++) Repositories - Colin Grant and Benjamin Davis
2021-11-19Server Proxy Extension RStudio and Jupyter support - Jon Radchenko
2021-11-19How to create your own event/waveform viewer in less than a day - Thomas Haber
2021-11-19Zero to One How to Integrate a Graphical Editor in a Cloud IDE - Axel Richard
2021-11-19The Trace Compass move to the cloud - Matthew Khouzam
2021-11-19Leveraging Theia’s customizability for creating domain specific tools - Philip Langer
2021-11-19Internationalization in Theia - Mark Sujew
2021-11-11Model validation, diffing and more with EMF.cloud
2021-11-11Keynote: Open Source for Good & Daily Opening
2021-11-11Unleash the power of Eclipse technologies - The benefits of modernizing your project
2021-11-11Taking dependency management to the next level with call graphs!