RefactorErl

You can find the official website of RefactorErl here.

The importance of tools supporting software development has been growing rapidly in recent decades. The source codes are so large that it is almost impossible to fully comprehend them, but at least it is a difficult and time-consuming process. Thus, the tools that support code understanding, maintenance, debugging or even provide the opportunity to transform the source code according to various aspects are becoming more and more widespread.

This support can be done dynamically, i.e., at runtime, or statically without running the program. In the former case, we can obtain information by monitoring the already running software, possibly by instrumenting the code and thereby helping the developers.

In the latter case, it is not necessary to run the software, we only collect information based on the source code and use it for various purposes. In our research, we deal with the static analysis of Erlang programs. Erlang is a highly concurrent programming language designed for analysing distributed software. Its importance is also shown by the fact that every year Cisco sells 2 million devices on the market that run Erlang codes. Therefore, 90% of Internet traffic passes through nodes controlled by Erlang.

The tool has a custom Erlang source code analyser and transformer that is capable of handling real-world code, it was successfully applied on more than 1,5 million LOC.

Results

  • Support for understanding source code
  • Code transformations
  • Checking code quality
  • Detecting vulnerabilities
  • Information extraction with query language support
  • Discovery of relationships/dependencies of software components
  • Analysis of concurrent/distributed software
  • Automatic parallelization
  • Software visualisation
  • Support for green computing

Shorten onboarding time for new team members

Reduce time to resolve bug reports

Streamline the software delivery process

Enhance code quality by minimizing errors

Speed up routine daily tasks

Identify vulnerabilities and unwanted software more efficiently