Everything we do at AdaCore is centered around helping developers build safe, secure and reliable software.
For over 25 years, we've worked with global leaders across the military and civil avionics, defense systems, air traffic management/control, space, railway, and financial services industries, building tools and providing services that ease the complex and difficult process of developing high-integrity software. As the need for truly secure and reliable applications expands into industries such as automotive, medical, energy, and IOT, we’re advancing our time-tested technologies to bring expertise and services to help a whole new generation of developers. Through our subscription-based business model and dedicated services arm, we have worked with hundreds of customers over the year on thousands of projects.
Our 120 experts worldwide in the US (New York, Lexington), France (Paris, Toulouse, Grenoble and Vannes), the UK, and Estonia, all play a role in developing state-of-the-art technologies to meet the challenges of building the highest grade of software.
Joining AdaCore is about joining a culture of innovation, openness, collaboration and dependability, which defines how we work together, with our customers and partners.
Provide on-the-fly static analysis capabilities for Ada
Developed at AdaCore, CodePeer (https://www.adacore.com/codepeer) is an Ada source code analyzer that detects 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 analysis is static, in the sense that only the source code is considered -- the program is never executed.
We have recently added into CodePeer results from the Infer static analyzer developed by Facebook (https://fbinfer.com). This integration offers us the possibility of having more lightweight analyses that complement well the initial capabilities of CodePeer. We want to pursue the exploration of the new results available through Infer.
Currently, users run CodePeer on a stabilized set of sources of files. Typically, we expect the project to be compilable. To expand the usage scenario of CodePeer, we would like to offer the possibility of having on-the-fly analysis results, directly in the IDE. To achieve this goal, the intern would:
Improve the existing mode (“compiler-mode”) so that it behaves similarly to regular analyses. One missing feature of this mode is that there is no comparison performed with previous results.
Add a notion of incrementality to the Infer analysis. Infer currently stores an analysis result for each function, but does not reuse them in subsequent analyses.
Design a way to track and store dependencies between functions. The goal is to invalidate outdated results when the source of a related function changes.
Depending on the time available, and if the intern is interested in that topic, make some modifications to GNATStudio (AdaCore’s IDE), so that it actually performs on-the-fly analyses. This will mean writing a server that receives source file changes notifications from the IDE, and communicates back the analysis results.
Skills required/nice to have:
Experience/interest in static analysis and/or compilation
Some knowledge of OCaml would be a plus
Taste for good user experience
Timeframe and contact:
During 2021 - 6 months - Paris Office