Skip to Content
Technical Articles
Author's profile photo Lars Hvam

Running abaplint from SCI / ATC / ADT

Intro

abaplint is an open-source static analysis tool for ABAP, it runs well with continuous integration tools like GitHub Apps, GitHub Actions, GitLab Pipelines, Bitbucket Pipelines, Azure Pipelines, Travis, and more. But the developer had to create a pull/merge request before the logic was triggered, now it is possible to run the checks earlier in the development process.

Setup

The setup consists of 2 components,

https://github.com/abaplint/abaplint-abap-backend to be installed on the ABAP backend using abapGit, it implements a custom code inspector check that can be added in the default variant.

https://github.com/abaplint/abaplint-cloud-foundry is a component that can be installed on your private cloud foundry environment, SAP offers a free CF trial.

The configuration is done via the normal code inspector UI, but the configuration is global and not per variant. If the package is also configured in abapGit, it is easy to pull the abaplint.json configuration from the remote git repository.

For testing purposes, endpoint http://sci.abaplint.org can be used instead of a private CF environment, use at own risk, unencrypted code will leave your infrastructure, plus the server is slow.

The vscode extension can be used to edit the configuration locally and offers checking of the config file via the latest json schema.

 

Result

When the configuration is done, it’s possible to run the code inspector checks using your favorite editor/environment. Note that the code inspector check will hook automagically into ADT or ATC.

 

Outlook

As with all IT, this is work in progress, multithreading is not implemented on the server-side, in a CF set just add more instances.

There is lots of bugs, ABAP is a crazy language, but so far 300+ versions of abaplint have been released, and it will continue to evolve.

 

Assigned Tags

      9 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Christian Drumm
      Christian Drumm

      Wow Lars Hvam,

      really cool stuff!

      Christian

      Author's profile photo Himanshu Sharma
      Himanshu Sharma

      This is good.

      Can I use ABAPLint on Azure DevOps by including it into my azure-pipelines.yml, I think this is a kind of naive question, because I new to  this. But your posts really enthralled me to try stuffs.

      Author's profile photo Lars Hvam
      Lars Hvam
      Blog Post Author

      yes, see https://github.com/abaplint/abaplint/blob/master/docs/using-abaplint-in-ci.md (we are reorganizing the documentation, so not sure how long this link will work, if not see https://github.com/abaplint/abaplint)

      see https://github.com/abaplint/azure-devops-example for an example

      plus https://github.com/microsoft/ABAP-SDK-for-Azure also runs abaplint on azure devops

      Author's profile photo Himanshu Sharma
      Himanshu Sharma

      Thanks, for your reply Lars, I am trying these examples, they are really helpful.

      Author's profile photo Marçal Oliveras
      Marçal Oliveras

      Hi Lars Hvam,

      Is there a way to run abaplint while typing in Eclipse? The same way the plugin for VS Code works (or any linting tool in other languages). Having to run it via an ATC Check makes it much less useful.

      I see there is an abaplint plugin for Eclipse but it’s marked as deprecated.

      Author's profile photo Lars Hvam
      Lars Hvam
      Blog Post Author

      well, no, Eclipse calls the backend at demand, not continuously

      Author's profile photo Marçal Oliveras
      Marçal Oliveras

      Yes, I’m aware, but I meant to run abaplint on top of ADT but totally independent from the backend, without using the SCI client. I guess it requires a new Eclipse Client Plug-in… something too look into it if I have time

      Author's profile photo Yahor Novik
      Yahor Novik

      Hi Lars, thank you for helpful posts.

      I've deployed abaplint sci server in my CF, but struggling with API requests.

      Do you have any guide or examples how to properly make requests?

      this is my current request:

      Author's profile photo Lars Hvam
      Lars Hvam
      Blog Post Author

      Hi, please open an issue on github