GitHunt
EZ

ezienecker/static-code-review-plugin

A plugin which comments the found bugs (by static code analyzer) to your merge request

= Static Code Review Plugin

image::https://img.shields.io/github/license/ezienecker/static-code-review-plugin.svg[License]
image::https://travis-ci.com/ezienecker/static-code-review-plugin.svg?branch=develop["Build Status", link="https://travis-ci.com/ezienecker/static-code-review-plugin"]
image::https://img.shields.io/maven-central/v/de.manuzid/static-code-review-plugin.svg?label=Maven%20Central["Maven Central", link="https://search.maven.org/search?q=g:%22de.manuzid%22%20AND%20a:%22static-code-review-plugin%22"]

This plugin asks within a merge request for the changed files and analyzes the code with the help of static code analyzer (currently https://spotbugs.github.io/[SpotBugs] and https://arturbosch.github.io/detekt/[Detekt] but more are planned). The found bugs are then commented to the corresponding code location.

== Usage

Add the following to your pom.xml

[source,xml]
....



de.manuzid
static-code-review-plugin
2.0.0


verify

report






....

Execute the following command to run the plugin

[source,bash]
....
mvn verify -DprojectId=$CI_PROJECT_ID
-DmergeRequestIid=$CI_MERGE_REQUEST_IID
-Dauth.token=$GITLAB_AUTH_TOKEN
....

To exclude analyzer use the exclusion tag

[source,xml]
....

de.manuzid
static-code-review-plugin
2.0.0


spotbugs




verify

report-detekt




....

=== Samples

== Configuration

=== Required

|===
|Property |Default |Description

|gitUrl |If GitHub is activated: https://api.github.com, otherwise https://gitlab.com/ |The URL of the GitLab server
3+|One of the two must be given, either the projectId or repository
This depends on whether GitLab or GitHub is selected as the Git server.
GitLab needs the projectId and GitHub the repository name.
|projectId |None |The project in the form of an Integer(ID) or String(path)
|repository |None |Is a combination of owner und repository.
Owner is the account owner of the repository. The name is not case-sensitive.
Repository is the name of the repository. The name is not case-sensitive.
|mergeRequestIid |None |The internal ID of the merge request
|static-code-review.skip |false |If true, execution will be skipped entirely.
|isGitHub |false |If false then GitLab is selected as the Git server, otherwise GitHub is the Git server.
3+|One of the two must be given, either the auth.token or the basic auth (auth.username & auth.password).
Note that none of them must be protected, otherwise they cannot be read by the plugin.
|auth.token |None |The private token to use for access to the GitLab API
|auth.username |None |The username for basic auth with the GitLab server.
|auth.password |None |The password for basic auth with the GitLab server.

|===

=== Optional

|===
|Property |Default |Description

|proxy.serverAddress |None |The URI of the proxy server.
|proxy.username |None |The username for basic auth with the proxy server.
|proxy.password |None |The password for basic auth with the proxy server.
|applicationSources |src/main/java |Application/Library sources.
|exclusions |empty list |A list of strings containing the analyzers to be excluded.
|exclusion |None |Analyzer that should be excluded. Valid values: spotbugs, detekt
3+|SpotBugs Settings
|compiledClasses |classes |Compiled Application/Library sources.
|priorityThresholdLevel |3 |It specifies the confidence/priority threshold for reporting issues. 1 = High, 2 = Normal, 3 = Low, 4 = Ignored, 5 = Experimental.

|===

== Goal

=== Report

Used to run static code review plugin

== Hints

  • Configuration Output

To be able to check at runtime how the plugin is configured, you need to run the maven command with debug output (-X).

[source,bash]
....
mvn verify -X -DprojectId=$CI_PROJECT_ID
-DmergeRequestIid=$CI_MERGE_REQUEST_IID
-Dauth.token=$GITLAB_AUTH_TOKEN
....

Then look for the following line [DEBUG] Configuring mojo 'de.manuzid:static-code-review-plugin and
you should see the following output.

[source,bash]
....
[DEBUG] Configuring mojo 'de.manuzid:static-code-review-plugin:1.1.0:report-detekt' with basic configurator -->
[DEBUG] (f) applicationSourcePath = src/main/kotlin
[DEBUG] (f) authToken =
[DEBUG] (f) compiledClassPath = classes
[DEBUG] (f) exclusions = [detekt]
[DEBUG] (f) gitUrl = https://gitlab.com/
[DEBUG] (f) mergeRequestIid = 1
[DEBUG] (f) project = MavenProject: de.manuzid:static-code-review-plugin-sample-kotlin:1.0.0 @ /Users/manuzid/public-projects/static-code-review-plugin-sample/static-code-review-plugin-sample-kotlin/pom.xml
[DEBUG] (f) projectId = 17068115
[DEBUG] (f) skip = false
[DEBUG] -- end configuration --
....

  • Detekt Configuration

In order to resolve the path to the file to be commented on correctly, it is mandatory that the applicationSources is
specified when analyzing Kotlin files.

== Releasing

Creating a new release involves the following steps:

. ./mvnw gitflow:release-start gitflow:release-finish
. git push origin master
. git push --tags
. git push origin develop

Languages

Kotlin100.0%

Contributors

Apache License 2.0
Created September 21, 2019
Updated October 2, 2022