Careers > Code Rejuvenation Tools for Ada
Last modified 10/20/2021 9:45:14 AM

Code Rejuvenation Tools for Ada

Internship
AdaCore
Paris, France or Bristol, UK
Bac + 4/5

AdaCore: Helping Developers Build Software that Matters

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.

 

Context:

Rejuvenating a codebase to be safer, more concise, structured and readable might be challenging depending on the project’s technical debt. The goal of this internship is to develop tools that aid developers in addressing and eliminating this problem. Such tools would refactor the code by first detecting code-smells [1] and anti-patterns [2] and then replacing them with a better and more structured solution. When possible, new features and semantics that have been added to the language should be used.

These tools have the potential to significantly reduce the time and effort needed to rejuvenate a codebase.

 

Goals:

  • Use Libadalang [3] to analyse a fully semantically resolved AST and implement code rejuvenation tools. A non-exhaustive list of tools could be:

    • Detection of declarations that could be made private

    • Detection of declarations that could be scoped more narrowly

    • Detection of unused fields of a record

    • Removal of magic numbers and strings

    • Detection of duplicated code

    • Detection of unhandled exceptions

    • Detection of  global variables that could be declared constants

    • Detection of declarations that shadow others declared in an outer scope

  • Integrate such tools in other AdaCore projects, such as GNATcheck [4], CodePeer [5], or the Ada Language Server [6] refactoring capabilities

 

Skills required or Nice to have:

  • Experience with one high-level programming language (ideally Ada or Python)

  • Ease with UNIX command-line shell and git

  • As a bonus, experience or interest in developing static analysis tools

 

Timeframe and location:

  • Flexible timeframe, ideally with a duration of 6 months

  • Bristol (UK), Paris (France)

Powered by Hello Talent