This is a Gradle plugin for Violation Comments to GitLab Lib.
It can parse results from static code analysis and comment merge requests in GitLab with them.
The merge must be performed first in order for the commented lines in the MR to match the lines reported by the analysis tools!
Example of supported reports are available here.
A number of parsers have been implemented. Some parsers can parse output from several reporters.
Reporter | Parser | Notes |
---|---|---|
ARM-GCC | CLANG |
|
AndroidLint | ANDROIDLINT |
|
AnsibleLint | FLAKE8 |
With -p |
CLang | CLANG |
|
CPD | CPD |
|
CPPCheck | CPPCHECK |
|
CPPLint | CPPLINT |
|
CSSLint | CSSLINT |
|
Checkstyle | CHECKSTYLE |
|
CodeNarc | CODENARC |
|
Detekt | CHECKSTYLE |
With --output-format xml . |
ERB | CLANG |
With erb -P -x -T '-' "${it}" | ruby -c 2>&1 >/dev/null | grep '^-' | sed -E 's/^-([a-zA-Z0-9:]+)/${filename}\1 ERROR:/p' > erbfiles.out . |
DocFX | DOCFX |
|
Doxygen | CLANG |
|
ESLint | CHECKSTYLE |
With format: 'checkstyle' . |
Findbugs | FINDBUGS |
|
Flake8 | FLAKE8 |
|
FxCop | FXCOP |
|
GCC | CLANG |
|
Gendarme | GENDARME |
|
GoLint | GOLINT |
|
GoVet | GOLINT |
Same format as GoLint. |
GoogleErrorProne | GOOGLEERRORPRONE |
|
Infer | PMD |
Facebook Infer. With --pmd-xml . |
JCReport | JCREPORT |
|
JSHint | JSHINT |
|
KTLint | CHECKSTYLE |
|
Klocwork | KLOCWORK |
|
KotlinGradle | KOTLINGRADLE |
Output from Kotlin Gradle Plugin. |
KotlinMaven | KOTLINMAVEN |
Output from Kotlin Maven Plugin. |
Lint | LINT |
A common XML format, used by different linters. |
Mccabe | FLAKE8 |
|
MyPy | MYPY |
|
NullAway | GOOGLEERRORPRONE |
Same format as Google Error Prone. |
PCLint | PCLINT |
PC-Lint using the same output format as the Jenkins warnings plugin, details here |
PHPCS | CHECKSTYLE |
With phpcs api.php --report=checkstyle . |
PHPPMD | PMD |
With phpmd api.php xml ruleset.xml . |
PMD | PMD |
|
Pep8 | FLAKE8 |
|
PerlCritic | PERLCRITIC |
|
PiTest | PITEST |
|
Puppet-Lint | CLANG |
With -log-format %{fullpath}:%{line}:%{column}: %{kind}: %{message} |
PyDocStyle | PYDOCSTYLE |
|
PyFlakes | FLAKE8 |
|
PyLint | PYLINT |
With pylint --output-format=parseable . |
ReSharper | RESHARPER |
|
RubyCop | CLANG |
With rubycop -f clang file.rb |
SbtScalac | SBTSCALAC |
|
Simian | SIMIAN |
|
Spotbugs | FINDBUGS |
|
StyleCop | STYLECOP |
|
SwiftLint | CHECKSTYLE |
With --reporter checkstyle . |
TSLint | CHECKSTYLE |
With -t checkstyle |
XMLLint | XMLLINT |
|
YAMLLint | YAMLLINT |
With -f parsable |
ZPTLint | ZPTLINT |
Missing a format? Open an issue here!
There is a running example here.
Here is and example:
<plugin>
<groupId>se.bjurr.violations</groupId>
<artifactId>violation-comments-to-gitlab-maven-plugin</artifactId>
<version>X</version>
<executions>
<execution>
<id>ViolationCommentsToGitLab</id>
<goals>
<goal>violation-comments</goal>
</goals>
<configuration>
<gitLabUrl>${GITLAB_URL}</gitLabUrl>
<mergeRequestIid>${GITLAB_mergeRequestIid}</mergeRequestIid>
<projectId>${GITLAB_PROJECTID}</projectId>
<commentOnlyChangedContent>true</commentOnlyChangedContent>
<createCommentWithAllSingleFileComments>true</createCommentWithAllSingleFileComments>
<createSingleFileComments>true</createSingleFileComments>
<keepOldComments>false</keepOldComments>
<minSeverity>INFO</minSeverity>
<apiTokenPrivate>true</apiTokenPrivate>
<apiToken>${GITLAB_APITOKEN}</apiToken>
<authMethodHeader>true</authMethodHeader>
<ignoreCertificateErrors>true</ignoreCertificateErrors>
<shouldSetWip>false</shouldSetWip>
<violations>
<violation>
<parser>FINDBUGS</parser>
<reporter>Findbugs</reporter>
<folder>.</folder>
<pattern>.*/findbugs/.*\.xml$</pattern>
</violation>
<violation>
<parser>PMD</parser>
<reporter>PMD</reporter>
<folder>.</folder>
<pattern>.*/pmd/.*\.xml$</pattern>
</violation>
<violation>
<parser>CHECKSTYLE</parser>
<reporter>Checkstyle</reporter>
<folder>.</folder>
<pattern>.*/checkstyle/.*\.xml$</pattern>
</violation>
<violation>
<parser>JSHINT</parser>
<reporter>JSHint</reporter>
<folder>.</folder>
<pattern>.*/jshint/.*\.xml$</pattern>
</violation>
<violation>
<parser>CSSLINT</parser>
<reporter>CSSLint</reporter>
<folder>.</folder>
<pattern>.*/csslint/.*\.xml$</pattern>
</violation>
</violations>
</configuration>
</execution>
</executions>
</plugin>
You may also have a look at Violations Lib.
To make a release, first run:
mvn release:prepare -DperformRelease=true
mvn release:perform
Then release the artifact from staging. More information here.