mirror of
https://github.com/valitydev/openapi-generator.git
synced 2024-11-06 02:25:20 +00:00
[ci][test] Modifications to static analysis contribution via Tomasbjerre (#5116)
* Spotbugs, PMD and Checkstyle #33 * Reducing Spotbugs effort to min #33 * Also using project.parent.basedir and avoiding relative paths in pom files. * Filtering out samples. * Move PMD/Spotbugs to static-analysis profile This moves the static-analysis checks to a standalone profile. Core contributors may run static analysis with: ``` mvn -Pstatic-analysis install ``` The analysis is separated from default functionality to reduce impact to community contributions. SpotBugs/PMD may add a non-trivial amount of time to builds on some machines. Co-authored-by: Tomas Bjerre <tomas.bjerre85@gmail.com>
This commit is contained in:
parent
20afa870a9
commit
c0f7b47292
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
.mvn/.gradle-enterprise/
|
||||
.scannerwork/
|
||||
.vscode
|
||||
*.iml
|
||||
@ -29,6 +30,8 @@ packages/
|
||||
.vagrant/
|
||||
.vscode/
|
||||
**/.vs
|
||||
bin
|
||||
.factorypath
|
||||
|
||||
.settings
|
||||
|
||||
|
@ -252,6 +252,12 @@ If you don't have maven installed, you may directly use the included [maven wrap
|
||||
./mvnw clean install
|
||||
```
|
||||
|
||||
The default build contains minimal static analysis (via CheckStyle). To run your build with PMD and Spotbugs, use the `static-analysis` profile:
|
||||
|
||||
```sh
|
||||
mvn -Pstatic-analysis clean install
|
||||
```
|
||||
|
||||
### [1.5 - Homebrew](#table-of-contents)
|
||||
|
||||
To install, run `brew install openapi-generator`
|
||||
|
@ -26,6 +26,13 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>${project.parent.basedir}${file.separator}google_checkstyle.xml</configLocation>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
@ -73,6 +80,31 @@
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>static-analysis</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludeFilterFile>${project.parent.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
|
@ -16,6 +16,18 @@
|
||||
<name>openapi-generator-core</name>
|
||||
<url>https://github.com/openapitools/openapi-generator</url>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>${project.parent.basedir}${file.separator}google_checkstyle.xml</configLocation>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
@ -34,6 +46,31 @@
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>static-analysis</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludeFilterFile>${project.parent.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<properties>
|
||||
<slf4j-version>1.7.12</slf4j-version>
|
||||
<guava-version>26.0-jre</guava-version>
|
||||
|
@ -65,6 +65,13 @@
|
||||
</pluginManagement>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>${project.parent.basedir}${file.separator}google_checkstyle.xml</configLocation>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- 2) run gradle -->
|
||||
<plugin>
|
||||
<groupId>org.fortasoft</groupId>
|
||||
@ -104,4 +111,28 @@
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>static-analysis</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludeFilterFile>${project.parent.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
|
@ -89,6 +89,13 @@
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>${project.parent.basedir}${file.separator}google_checkstyle.xml</configLocation>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>net.revelc.code</groupId>
|
||||
<artifactId>formatter-maven-plugin</artifactId>
|
||||
@ -99,4 +106,29 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<profiles>
|
||||
|
||||
<profile>
|
||||
<id>static-analysis</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludeFilterFile>${project.parent.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
|
@ -42,6 +42,13 @@
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>${project.parent.basedir}${file.separator}google_checkstyle.xml</configLocation>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
@ -56,6 +63,35 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<profiles>
|
||||
|
||||
<profile>
|
||||
<id>static-analysis</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludeFilterFile>${project.parent.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<!-- Should be decreased regularly down to 0 as issues are fixed. -->
|
||||
<maxViolations>3</maxViolations>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -43,6 +43,13 @@
|
||||
<directory>target</directory>
|
||||
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>${project.parent.basedir}${file.separator}google_checkstyle.xml</configLocation>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>exec-maven-plugin</artifactId>
|
||||
@ -155,6 +162,33 @@
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>static-analysis</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludeFilterFile>${project.parent.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<!-- Should be decreased continuousle as issues are fixed, and will eventually
|
||||
reach 0. -->
|
||||
<maxViolations>65</maxViolations>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
<reporting>
|
||||
<outputDirectory>target/site</outputDirectory>
|
||||
|
143
pom.xml
143
pom.xml
@ -100,6 +100,25 @@
|
||||
<directory>target</directory>
|
||||
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>${checkstyle.plugin.version}</version>
|
||||
<configuration>
|
||||
<consoleOutput>false</consoleOutput>
|
||||
<failsOnError>false</failsOnError>
|
||||
<excludes>**/samples/*.java</excludes>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>checkstyle-check</id>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
<phase>verify</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>net.revelc.code</groupId>
|
||||
<artifactId>formatter-maven-plugin</artifactId>
|
||||
@ -360,11 +379,64 @@
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>se.bjurr.violations</groupId>
|
||||
<artifactId>violations-maven-plugin</artifactId>
|
||||
<version>${violations-maven.plugin.version}</version>
|
||||
<configuration>
|
||||
<maxViolations>0</maxViolations>
|
||||
<detailLevel>VERBOSE</detailLevel>
|
||||
<minSeverity>ERROR</minSeverity>
|
||||
<violations>
|
||||
<violation>
|
||||
<parser>FINDBUGS</parser>
|
||||
<reporter>Spotbugs</reporter>
|
||||
<folder>${project.basedir}</folder>
|
||||
<pattern>.*/spotbugsXml\.xml$</pattern>
|
||||
</violation>
|
||||
<violation>
|
||||
<parser>PMD</parser>
|
||||
<reporter>PMD</reporter>
|
||||
<folder>${project.basedir}</folder>
|
||||
<pattern>.*/pmd\.xml$</pattern>
|
||||
</violation>
|
||||
<violation>
|
||||
<parser>CHECKSTYLE</parser>
|
||||
<reporter>Checkstyle</reporter>
|
||||
<folder>${project.basedir}</folder>
|
||||
<pattern>.*/checkstyle-result\.xml$</pattern>
|
||||
</violation>
|
||||
</violations>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>violations</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>net.revelc.code</groupId>
|
||||
<artifactId>formatter-maven-plugin</artifactId>
|
||||
<version>0.5.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<version>${spotbugs.plugin.version}</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
<version>${pmd.plugin.version}</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>${checkstyle.plugin.version}</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
@ -470,6 +542,73 @@
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
<!-- CI related -->
|
||||
<profile>
|
||||
<!-- This profile will run much more in-depth static analysis checks. -->
|
||||
<id>static-analysis</id>
|
||||
<properties>
|
||||
<skipTests>true</skipTests>
|
||||
<maven.javadoc.skip>true</maven.javadoc.skip>
|
||||
</properties>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<version>${spotbugs.plugin.version}</version>
|
||||
<configuration>
|
||||
<failOnError>false</failOnError>
|
||||
<!-- https://spotbugs.readthedocs.io/en/stable/effort.html -->
|
||||
<effort>min</effort>
|
||||
<excludeFilterFile>${project.basedir}${file.separator}spotbugs-exclude.xml</excludeFilterFile>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>spotbugs-check</id>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
<phase>verify</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
<version>${pmd.plugin.version}</version>
|
||||
<configuration>
|
||||
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
|
||||
<failOnViolation>false</failOnViolation>
|
||||
<printFailingErrors>false</printFailingErrors>
|
||||
<rulesets>
|
||||
<ruleset>category/java/errorprone.xml</ruleset>
|
||||
</rulesets>
|
||||
<excludes>
|
||||
<exclude>**/samples/**/*</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>pmd-check</id>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
<phase>verify</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<reporting>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.github.spotbugs</groupId>
|
||||
<artifactId>spotbugs-maven-plugin</artifactId>
|
||||
<version>${spotbugs.plugin.version}</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</reporting>
|
||||
</profile>
|
||||
<!-- Samples -->
|
||||
<profile>
|
||||
<id>android-client</id>
|
||||
@ -1464,5 +1603,9 @@
|
||||
<reflections-version>0.9.10</reflections-version>
|
||||
<mockito-version>3.2.0</mockito-version>
|
||||
<jacoco.version>0.8.5</jacoco.version>
|
||||
<spotbugs.plugin.version>3.1.12.2</spotbugs.plugin.version>
|
||||
<pmd.plugin.version>3.12.0</pmd.plugin.version>
|
||||
<violations-maven.plugin.version>1.34</violations-maven.plugin.version>
|
||||
<checkstyle.plugin.version>3.1.0</checkstyle.plugin.version>
|
||||
</properties>
|
||||
</project>
|
||||
|
34
spotbugs-exclude.xml
Normal file
34
spotbugs-exclude.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<FindBugsFilter>
|
||||
|
||||
<Match>
|
||||
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD" />
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" />
|
||||
</Match>
|
||||
|
||||
<Match>
|
||||
<Bug pattern="URF_UNREAD_FIELD" />
|
||||
<Or>
|
||||
<And>
|
||||
<Class name="io.undertow.server.protocol.ajp.AjpRequestParseState" />
|
||||
<Field name="dataSize" />
|
||||
</And>
|
||||
</Or>
|
||||
</Match>
|
||||
|
||||
<!-- For source/class naming, see https://spotbugs.readthedocs.io/en/stable/filter.html#java-element-name-matching -->
|
||||
<Match>
|
||||
<!-- Ignore all source files with samples in path name -->
|
||||
<Source name="~.*\samples\.*"/>
|
||||
</Match>
|
||||
<Match>
|
||||
<!-- Ignore all bugs in any test classes -->
|
||||
<Class name="~.*\.*Test" />
|
||||
</Match>
|
||||
</FindBugsFilter>
|
Loading…
Reference in New Issue
Block a user