A new guide on ABAP Code Reviews was added to the SAP Code Style Guides repository, which we want to briefly highlight in this blog post.
Change-based peer code reviews increase code quality by finding defects earlier and preventing them from polluting the main code line. They also enable continuous integration by registering automated checks as reviewers. These modern capabilities have been on the wish list of ABAP developers for some time.
Lars Hvam and I have surveyed current possibilities of applying git-based review platforms to ABAP code and give recommendations for authors and reviewers. We came up with a guideline and contributed it to the SAP Code Style Guides, and open source, grassroots project driven by the SAP community. You may know this project, for instance, from Klaus Haeuptle‘s recent blog post on Clean ABAP.
The guide discusses how to apply well-known code review flows as known from other programming languages also to ABAP.
We start with previous work like the following:
- ABAP code reviews with abapGit by Eduardo Copat, describing the general idea of exporting code to GitHub using abapGit to review it via Pull Requests.
- How we do ABAP code review using abapGit by Michael Pang, explaining how to use the abapGit feature transport to branch to review a CTS transport before it is released.
- Create a commit in Git when an ABAP task is released by Karin Spiegel, elaborating on code reviews per transport by using existing BAdI interfaces to commit changes per task release to a feature branch using gCTS.
- Static ABAP Pull Request Code Review with abapLint on Jenkins using piper-lib by Jaqueline Bonoto, giving a practical example setup using various tooling.
Then we suggest a number of code review best practices comparable to Google’s Engineering Practices documentation, before we survey existing tools like Git, GitHub, CTS, abapGit and gCTS, ATC and abapLint, and their extension points.
We finally sketch different collaboration scenarios, in which git-based code reviews can be set up for ABAP development projects and give examples for those, using abapGit and gCTS respectively.
As always with open-source projects, contributions are welcome. Please do not hesitate to raise