Fork me on GitHub

Mule Lint

The mule-lint application is an open source project to provide basic static analysis checking of certain elements of a Mule Integration Application. This is a growing concern and a project has been spun up to help fill this gap. This open source project was started by Chad Gorshing, an Independent MuleSoft Certified Consultant (not an employee of MuleSoft, but has partnered on multiple occasions), and features are still being developed.

Rules are intended to be re-usable across many teams, where as the options could be team specific (files to ignore, dictionary)

There are "rules" that need to be checked that have specific use cases and a predefined rules can not be already created. So as a guide, here are a few things to keep in mind on what could fit for your business use cases.

Many "rules" are still subjective and we continually are learning what rules can easily work and be a good foundation for others to follow. As these patterns are discovered they will in turn be used to provide a Low/Medium/High ranking similar to other lint applications.

Workflow

Running as part of your build

Currently this project will not cause a build failure, but only provide information for others to act upon. Teams will need to decide for themselves what constitutes a failure for their cases. Just because a rule is "broken" once does not necessarily warrant a build or deployment failure. We feel that this is up the team to decide what level is good for them to proceed (if any at all).

We would love to hear what features you would like next by opening an issue on Github.

Complexity

Cyclomatic Complexity

If you have been a part of a Mule project for a length of time, then I'm sure you have ran into flows that were just too big and needed to be broken down. This makes things easier for testing, understanding by others and your future self, follow single responsibility and so on.

How can we bring some of these well known metrics into the Mule world, after all Integration Software is Software. Mule poses an interesting spin on this topic with different message processors; filters, flow-refs, DataWeave, components (Java classes).

We Aren't There Yet

We don't have a solution for this, but is something we are discussing with various developers and consultants we have wide experience we can learn from. We are very interested in getting feedback from the community as well. As things progress we will be creating technical documentation and linking to it on this site.