Careers > Code understanding based on LSP
Last modified 9/27/2024 10:11:41 AM

Code understanding based on LSP

Internship
AdaCore
Paris, France

AdaCore: Helping Developers Build Software that Matters

Everything we do at AdaCore is centered around helping developers build safe, secure and reliable software.

For 30 years, we've partnered with global leaders in aerospace & defense, air traffic management, space, railway and financial services. We've developed tools and services simplifying high-integrity software development through a subscription-based model. As demand for secure applications grows in industries like automotive, medical, energy, and IoT, we're adapting our proven technologies to assist a new generation of developers.

Our 150 global experts based in the US, France, Germany, the UK, and Estonia, collectively develop cutting-edge technologies to address the challenges of high-grade software development.

Joining AdaCore is about joining a culture of innovation, openness, collaboration and dependability, which defines how we work together, with our customers and partners.

 

Context:

AdaCore currently provides two IDE solutions based on Microsoft’s Language Server Protocol (LSP): GNAT Studio, a complete IDE solution that supports editing, code navigation and debugging, and the Ada & SPARK Visual Studio Code extension, which provides all the code intelligence for Ada in VS Code. Both solutions rely on the Ada Language Server, a LSP server implementation for Ada and SPARK.

While the Language Server Protocol already provides very useful features to understand codebases (call hierarchies, type hierarchies, references…), it lacks some features that would allow a more global and interactive way of understanding code. 

 

Here are some examples of code-understanding features that could be developed on top of the LSP:

  • Display call/type hierarchies as graphs in IDEs

  • Export LSP requests’ results in known graph formats for other visualizers (e.g: Mermaid)

  • Display useful information about the code on each cursor move (e.g: functions calls, references…)

Goal:

The overall goal of this internship is to develop new code-understanding features based on existing LSP requests that would easily fit into our supported IDEs (VS Code and GNAT Studio) and/or other data visualizers (e.g: tools such as Mermaid or Graphviz for graphs).

The internship will require an exploratory phase involving other AdaCore IDE engineers to determine which features we want to actually develop, and based on which technologies, extensions (VS Code) and formats (for graph visualization for instance).

 

Skills required/nice to have:

  • Good programming skills in a high-level language (e.g. Ada, Java, or C++)

  • Good ability to design a proper software architecture

  • Some interest/knowledge in UX/UI

 

Timeframe & Location:

During 2025 - 6 months - Paris office

 

Beyond the job

We're a global organization driven by diverse backgrounds, fostering innovation through an open exchange of ideas. We welcome applicants of all backgrounds, celebrating diversity in ethnicity, nationality, gender, age, religion, abilities, sexual orientation, veteran or marital status. 

Our commitment is to help our teammates, wherever they are based, feel comfortable and satisfied, by encouraging flexibility to ensure them a healthy work-life balance. Additionally, we prioritize individual development by offering continuous training from day one with a personalized onboarding plan.

 

Powered by Hello Talent