Skip to Content
Technical Articles
Author's profile photo Morten Wittrock

CPILint development update

CPILint is an open source tool, that I’ve been working on since late 2018. In a nutshell, CPILint lets you automate your SAP Cloud Integration governance, by verifying that your integration flows comply with your choice of rules about connectivity, development, security and more.

At the SAP Inside Track Walldorf event in January, I got to do a live demo of of the tool. Since then, I’ve made a number of improvements and additions to the code, and the beta test is getting close. In this blog post, I’d like to give you a quick update on what’s new with CPILint.

The tenant code is done

First and foremost, the code that interacts with the SAP Cloud Integration tenant is complete and functioning. You can either check individual integration flows that you specify or every integration flow in your tenant. In the latter case, you have the option of skipping all SAP packages, individual integration flows or both, should you need to.

You also have the option of checking integration flows that have been downloaded to your local computer. Similar to the online use case, you can either check individual integration flows or all integration flows in a specific directory.

The command line is up and running

CPILint is a command line application, but all the command line options were not in place, when I demoed the tool in Walldorf. They’ve been added in the meantime, and that means that you are now able to activate all the tool’s functionality directly from the command line.

Here’s what the output of the cpilint -help command looks like at the moment:

The command line interface was implemented using the Apache Commons CLI library, by the way.

3100+ lines of code

Since the demo in January, CPILint has crossed the 3000 lines of code mark. In fact, right now the project contains exactly 3122 lines of code (comments not included). Had I not been writing in Java 11, that number would have been much higher, though. The Stream API introduced in Java 8 is such a pleasure to work with, and results in code that is at the same time readable and compact. Now that’s not something you’re used to in Java 😉

Duplicate resources rule added

I’ve added a new rule that lets you check your integration flows for duplicate resources such as scripts, XSLT stylesheets etc. You can check for duplicates across all resource types, or limit the check to only the resource types you specify.

Duplicate resources are not necessarily a problem; there are cases where they cannot be avoided. But should you wish to check for them, you now have that option.

External parameters now work as expected

Also, CPILint now handles external parameters correctly. This means that if, say, a service endpoint is externalized, rules that inspect the endpoint address will now work properly.

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Daniel Graversen
      Daniel Graversen

      Hi Morten,

      I'm looking forward to trying it out and integrate it with our Figaf IRT tool, so iflows can only be transported after successful validation.



      Author's profile photo Morten Wittrock
      Morten Wittrock
      Blog Post Author

      That's a very interesting use case!

      Author's profile photo Anne Johnson
      Anne Johnson

      Absolutely top notch work there, Morten!

      It will be nice to see it in action and how it will help companies and SAP code out 🙂

      Author's profile photo Vadim Klimov
      Vadim Klimov

      The entire SAP integration community must be eagerly awaiting release of CPILint! Looking forward to seeing its adaption as a part of quality assurance process of developed CPI iFlows.

      Author's profile photo Witalij Rudnicki
      Witalij Rudnicki

      Impressive, Morten! Thank you for your continuous contribution.

      Author's profile photo Eng Swee Yeoh
      Eng Swee Yeoh

      Glad to hear of the progress. Looking forward to the GA release and getting my hands on it, especially trying out the -boring option :p

      Author's profile photo Morten Wittrock
      Morten Wittrock
      Blog Post Author

      Dude, no. All the cool kids have the ASCII art switched on 😀

      Author's profile photo J. Evertse
      J. Evertse

      Hi Morten

      At the Teched you presented the CPILint and mentioned about the coming update containing the naming conventions checks.

      We have about 10 naming conventions and growing. Mostly starting with a prefix like LP_ MM_ XSLT_ CC_ etcetera.

      A special one is the System naming because it can have different names, like Business System (BS_..) or Business Component or (BC_..).

      Also inside the objectname often the _ is used, like CC_<Adapter Type><Direction>_< service name>_<Messagepattern><MessageProtocol><TransPort>

      Will CPILint be able to check that?

      Is this tool also linked to the coming 'check' button inside a integration flow?



      Author's profile photo Morten Wittrock
      Morten Wittrock
      Blog Post Author

      Hi John

      Yes, I do believe those naming rules can be implemented when the CPILint naming rule is done. I'll post about it here, when it's ready.

      The tool is not connected to any functionality inside Web UI.