SonarQube provides more checks than puppet-lint and similar checks have fewer false negatives.
Checks are not only coding style related. There are checks:
- to detect potential bugs: duplicated hash keys should be removed, duplicated parameters should be removed, ...
- to warn about deprecated structures: deprecated node inheritance should not be used, ...
- to point out complex code: case and selectors statements should not be nested, classes and defines should not be too complex, ...
- to point out pitfalls: if...elsif structures should be terminated by an else statement, empty blocks should be removed, ...
- ...
and a lot more valuable checks are being implemented.
As stated before, it comes with a nice web interface to browse issues, it computes metrics (lines of code, complexity, comments lines, number of resources, ...), it keeps history, you can focus on new code, you can get an overview of your entire Puppet code base, it checks for duplication, it computes technical debt, the analysis is way faster, etc.