Careers > GNAT SAS: Improve Ada Static Analysis within Infer
Last modified 10/7/2024 10:23:39 AM

GNAT SAS: Improve Ada Static Analysis within Infer

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:

Developed at AdaCore, the GNAT SAS tool suite (https://www.adacore.com/static-analysis-suite) contains multiple Ada source code analyzers that detect run-time and logic errors. It assesses potential bugs before program execution, serving as an automated peer reviewer, helping to find errors easily at any stage of the development life-cycle. The analyses are static, in the sense that only the source code is considered -- the program is never executed.

GNAT SAS includes the Infer static analyzer developed by Meta (https://fbinfer.com), for which we developed support for the Ada language. In order to further extend Infer’s capabilities to analyze the Ada language, we are developing our own abstract interpretation framework within, heavily inspired by MOPSA (https://mopsa.lip6.fr/).

Goals:

The internship general goal is to work on improving our version of Infer. There are multiple directions that can be taken:

  • Enrich our Infer based analysis framework with new abstract interpretation domains. In particular, we have a basic domain for Ada arrays that we would like to improve. There is a lot of literature around this subject, the intern should refer to the literature to design and implement a state-of-the-art domain within our framework.

  • Add a new Type State Analysis. This requires the design of a workflow for the user to deploy the analysis in a friendly way, in addition to the implementation of the analysis inside our abstract interpretation framework.

  • Rewrite the Libadalang OCaml bindings. AdaCore added Ada support through a frontend for Infer using Libadalang. We are currently using OCaml bindings written using Ctypes to use Libadalang. This approach has worked well, but has some memory management drawbacks that we would like to lift by rewriting them using pure OCaml FFI (or some low level alternatives).

  • Runtime Support and User Definable Model. Our analysis doesn't generate code for the Ada runtime and treats them as 'unknown calls'. We would like to improve this by adding support for those functions in the form of models associated with the 'unknown' subprograms. The goal is to design a way to specify those models and test this specification by writing models for at least some runtime subprograms. This could go from simple models on basic mathematical functions (sqrt, shifts, …), to bigger models for Ada data structures (lists, vectors, trees, …).

  • Tailored Fixed Point Engine. The Infer fixed point engine is limited for our use in the new abstract interpretation framework. The goal is to write a state of the art fixed point engine able to do loop unrolling/delayed widening/joining with period/narrowing and help the trace partitioning domain.

Skills required/nice to have:

  • Experience/interest in static analysis and/or compilation

  • Some knowledge of OCaml would be a plus

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