Fast, Specific and Integrated Feedback About Code Quality for ABAP Developers and System Managers
Dr. Tobias Roehm
Providing developers with feedback about code quality which is fast, specific and integrated is our mission at CQSE and an important theme behind Teamscale. In this blog post, I describe how new integration features of Teamscale make such feedback available for ABAP developers and system managers.
Fast, specific and integrated feedback about code quality
Many static analysis tools exist which analyze a code base and provide software developers with insights about code quality. But often such tools are difficult to use because they don’t provide timely results within the current knowledge context, flood their users with thousands of findings, require users to leave their code editor or are not integrated in code development or deployment processes.
To address such obstacles, Teamscale provides fast, specific and integrated feedback to developers:
- »Fast« denotes that feedback on changes is provided within minutes such that developers can consider it immediately within their current knowledge context.
- »Specific« denotes that feedback is focused to the current code object or code change the developer is working on.
- »Integrated« denotes that feedback is provided within the code editor such that developers do not have to leave it for analyzing and considering feedback.
In the following, I describe how such a feedback mechanism can be realized for ABAP development. More specifically, I describe four typical scenarios during ABAP development and show how Teamscale provides feedback in each of them. The overall setup is the same for all four scenarios: Teamscale is connected to an ABAP development system, frequently extracts code and changes from it, analyzes code quality and presents analysis results.
Feedback for an ABAP code object in Eclipse
ABAP developers working on an individual ABAP code object like a report, function module or class in the ABAP Development Tools (ADT) for Eclipse IDE can retrieve Teamscale findings for that object. To achieve this, a developer has to install and configure Teamscale's IDE integration for Eclipse (takes 10-15 minutes)
Then, a list of findings for the current object is shown in the Findings View and findings are shown next to the code in the Eclipse editor (cf. orange bars next to the line numbers):
Feedback for an ABAP code object in SE80
ABAP developers working on individual code objects in SE80 (the integrated code editor of an ABAP system) can retrieve Teamscale findings, too. To achieve this goal, the Teamscale Connector, an add-on for SAP NetWeaver Systems, has to be used. It contains a Code Inspector variant which retrieves findings for the current object from Teamscale. The Teamscale Connector has to be configured once for an ABAP system by the system manager (takes 10-15 minutes, for a detailed tutorial see Teamscale' documenation on SAP)
Then, developers can view Teamscale findings for a code object in SE80 by performing the following actions: Open code object > Right click on the code object in Repository Browser > Check > ABAP Test Cockpit (ATC) with … > Choose Code Inspector variant “ZCQSE_TEAMSCALE_TRANSPORT_CHK”. If Teamscale findings exist, they are shown together with their line number and a description in a table:
Feedback for code objects of a development task at its release
ABAP development is organized by development tasks (a development task represents the contribution of an individual developer to a feature and consists of one or more code objects). When a developer is finished implementing a task he or she has to release it. This is a good time to provide feedback about the quality of the task’s code: because the developer has knowledge about the task in his or her head, the effort to remove quality defects is rather low. Furthermore, changes to improve quality will be covered by subsequent testing activities.
To achieve this goal, the Teamscale Connector can be used. It contains a component which retrieves Teamscale findings for a task’s code objects upon its release and shows them to the releasing developer. This component has to be configured once for an ABAP system by the system manager (takes 10-15 minutes, for a detailed tutorial see Teamscale's documentation).
Then, it displays Teamscale findings in the standard Code Inspector UI to the releasing developer before each task release:
The releasing developer can inspect the Teamscale findings and choose to proceed with the task release or to rework the code:
Feedback for code objects of a transport request at its release
In addition to development tasks, ABAP development is organized by transport requests (a transport request represents a feature and consists of one or more development tasks). When all development tasks of a transport request are released, the transport request itself has to be released. This is usually done by a system manager. This is a good time to provide the system manager - who might be unaware of the coding details - with feedback about the quality of the transport request’s code.
Similar to feedback at task release, the Teamscale Connector can be used to achieve this goal. It contains a component which retrieves Teamscale findings for a transport requests’s code objects upon its release and shows them to the releasing system manager. This component has to be configured once for an ABAP system (takes 10-15 minutes, see Teamscale's documentation on SAP). Then, it displays Teamscale findings in the standard Code Inspector UI to the releasing system manager directly before each transport release if Teamscale findings exist. The releasing system manager can inspect the Teamscale findings and choose to proceed with the transport release or ask developers to rework (part of) the code. The user interface looks the same as for feedback on task release (see above).
The four scenarios illustrate how Teamscale implements a fast, specific and integrated feedback mechanism on code quality for ABAP developers and system managers. Please get in touch with me if you want to try it out on your ABAP system or have any questions about this topic.