forked from abayer/gradle-hpi-plugin
-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Apply Checkstyle, SpotBugs, Jacoco plugins #220
Merged
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,198 @@ | ||
<?xml version="1.0"?> | ||
<!DOCTYPE module PUBLIC | ||
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" | ||
"https://checkstyle.org/dtds/configuration_1_3.dtd"> | ||
|
||
<!-- | ||
|
||
Checkstyle configuration that checks the sun coding conventions from: | ||
|
||
- the Java Language Specification at | ||
https://docs.oracle.com/javase/specs/jls/se11/html/index.html | ||
|
||
- the Sun Code Conventions at https://www.oracle.com/java/technologies/javase/codeconventions-contents.html | ||
|
||
- the Javadoc guidelines at | ||
https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html | ||
|
||
- the JDK Api documentation https://docs.oracle.com/en/java/javase/11/ | ||
|
||
- some best practices | ||
|
||
Checkstyle is very configurable. Be sure to read the documentation at | ||
https://checkstyle.org (or in your downloaded distribution). | ||
|
||
Most Checks are configurable, be sure to consult the documentation. | ||
|
||
To completely disable a check, just comment it out or delete it from the file. | ||
To suppress certain violations please review suppression filters. | ||
|
||
Finally, it is worth reading the documentation. | ||
|
||
--> | ||
|
||
<module name="Checker"> | ||
<!-- | ||
If you set the basedir property below, then all reported file | ||
names will be relative to the specified directory. See | ||
https://checkstyle.org/config.html#Checker | ||
|
||
<property name="basedir" value="${basedir}"/> | ||
--> | ||
<property name="severity" value="error"/> | ||
|
||
<property name="fileExtensions" value="java, properties, xml"/> | ||
|
||
<!-- Excludes all 'module-info.java' files --> | ||
<!-- See https://checkstyle.org/config_filefilters.html --> | ||
<module name="BeforeExecutionExclusionFileFilter"> | ||
<property name="fileNamePattern" value="module\-info\.java$"/> | ||
</module> | ||
|
||
<!-- https://checkstyle.org/config_filters.html#SuppressionFilter --> | ||
<module name="SuppressionFilter"> | ||
<property name="file" value="${org.checkstyle.sun.suppressionfilter.config}" | ||
default="checkstyle-suppressions.xml" /> | ||
<property name="optional" value="true"/> | ||
</module> | ||
|
||
<!-- Checks that a package-info.java file exists for each package. --> | ||
<!-- See https://checkstyle.org/config_javadoc.html#JavadocPackage --> | ||
<module name="JavadocPackage"/> | ||
|
||
<!-- Checks whether files end with a new line. --> | ||
<!-- See https://checkstyle.org/config_misc.html#NewlineAtEndOfFile --> | ||
<module name="NewlineAtEndOfFile"/> | ||
|
||
<!-- Checks that property files contain the same keys. --> | ||
<!-- See https://checkstyle.org/config_misc.html#Translation --> | ||
<module name="Translation"/> | ||
|
||
<!-- Checks for Size Violations. --> | ||
<!-- See https://checkstyle.org/config_sizes.html --> | ||
<module name="FileLength"/> | ||
<module name="LineLength"> | ||
<property name="fileExtensions" value="java"/> | ||
</module> | ||
|
||
<!-- Checks for whitespace --> | ||
<!-- See https://checkstyle.org/config_whitespace.html --> | ||
<module name="FileTabCharacter"/> | ||
|
||
<!-- Miscellaneous other checks. --> | ||
<!-- See https://checkstyle.org/config_misc.html --> | ||
<module name="RegexpSingleline"> | ||
<property name="format" value="\s+$"/> | ||
<property name="minimum" value="0"/> | ||
<property name="maximum" value="0"/> | ||
<property name="message" value="Line has trailing spaces."/> | ||
</module> | ||
|
||
<!-- Checks for Headers --> | ||
<!-- See https://checkstyle.org/config_header.html --> | ||
<!-- <module name="Header"> --> | ||
<!-- <property name="headerFile" value="${checkstyle.header.file}"/> --> | ||
<!-- <property name="fileExtensions" value="java"/> --> | ||
<!-- </module> --> | ||
|
||
<module name="TreeWalker"> | ||
|
||
<!-- Checks for Javadoc comments. --> | ||
<!-- See https://checkstyle.org/config_javadoc.html --> | ||
<module name="InvalidJavadocPosition"/> | ||
<module name="JavadocMethod"/> | ||
<module name="JavadocType"/> | ||
<module name="JavadocVariable"/> | ||
<module name="JavadocStyle"/> | ||
<module name="MissingJavadocMethod"/> | ||
|
||
<!-- Checks for Naming Conventions. --> | ||
<!-- See https://checkstyle.org/config_naming.html --> | ||
<module name="ConstantName"/> | ||
<module name="LocalFinalVariableName"/> | ||
<module name="LocalVariableName"/> | ||
<module name="MemberName"/> | ||
<module name="MethodName"/> | ||
<module name="PackageName"/> | ||
<module name="ParameterName"/> | ||
<module name="StaticVariableName"/> | ||
<module name="TypeName"/> | ||
|
||
<!-- Checks for imports --> | ||
<!-- See https://checkstyle.org/config_imports.html --> | ||
<module name="AvoidStarImport"/> | ||
<module name="IllegalImport"/> <!-- defaults to sun.* packages --> | ||
<module name="RedundantImport"/> | ||
<module name="UnusedImports"> | ||
<property name="processJavadoc" value="false"/> | ||
</module> | ||
|
||
<!-- Checks for Size Violations. --> | ||
<!-- See https://checkstyle.org/config_sizes.html --> | ||
<module name="MethodLength"/> | ||
<module name="ParameterNumber"/> | ||
|
||
<!-- Checks for whitespace --> | ||
<!-- See https://checkstyle.org/config_whitespace.html --> | ||
<module name="EmptyForIteratorPad"/> | ||
<module name="GenericWhitespace"/> | ||
<module name="MethodParamPad"/> | ||
<module name="NoWhitespaceAfter"/> | ||
<module name="NoWhitespaceBefore"/> | ||
<module name="OperatorWrap"/> | ||
<module name="ParenPad"/> | ||
<module name="TypecastParenPad"/> | ||
<module name="WhitespaceAfter"/> | ||
<module name="WhitespaceAround"/> | ||
|
||
<!-- Modifier Checks --> | ||
<!-- See https://checkstyle.org/config_modifier.html --> | ||
<module name="ModifierOrder"/> | ||
<module name="RedundantModifier"/> | ||
|
||
<!-- Checks for blocks. You know, those {}'s --> | ||
<!-- See https://checkstyle.org/config_blocks.html --> | ||
<module name="AvoidNestedBlocks"/> | ||
<module name="EmptyBlock"/> | ||
<module name="LeftCurly"/> | ||
<module name="NeedBraces"/> | ||
<module name="RightCurly"/> | ||
|
||
<!-- Checks for common coding problems --> | ||
<!-- See https://checkstyle.org/config_coding.html --> | ||
<module name="EmptyStatement"/> | ||
<module name="EqualsHashCode"/> | ||
<module name="HiddenField"/> | ||
<module name="IllegalInstantiation"/> | ||
<module name="InnerAssignment"/> | ||
<module name="MagicNumber"/> | ||
<module name="MissingSwitchDefault"/> | ||
<module name="MultipleVariableDeclarations"/> | ||
<module name="SimplifyBooleanExpression"/> | ||
<module name="SimplifyBooleanReturn"/> | ||
|
||
<!-- Checks for class design --> | ||
<!-- See https://checkstyle.org/config_design.html --> | ||
<module name="DesignForExtension"/> | ||
<module name="FinalClass"/> | ||
<module name="HideUtilityClassConstructor"/> | ||
<module name="InterfaceIsType"/> | ||
<module name="VisibilityModifier"/> | ||
|
||
<!-- Miscellaneous other checks. --> | ||
<!-- See https://checkstyle.org/config_misc.html --> | ||
<module name="ArrayTypeStyle"/> | ||
<module name="FinalParameters"/> | ||
<module name="TodoComment"/> | ||
<module name="UpperEll"/> | ||
|
||
<!-- https://checkstyle.org/config_filters.html#SuppressionXpathFilter --> | ||
<module name="SuppressionXpathFilter"> | ||
<property name="file" value="${org.checkstyle.sun.suppressionxpathfilter.config}" | ||
default="checkstyle-xpath-suppressions.xml" /> | ||
<property name="optional" value="true"/> | ||
</module> | ||
|
||
</module> | ||
|
||
</module> |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you think it makes sense to have a higher level property to allow opting into all the OSS recommendations? It's really nice to have this level of granularity, but I'm wondering if folks will basically want two modes most of the time - one for internal plugins, and one for oss plugins.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good question, how about having one single flag then
configureQualityChecks
(false by default) that OSS plugins devs would set to true. Internal plugin devs would apply and configure quality plugins "manually" as for any Gradle projects.The only limitation I see is that it would require conditionnal applying plugins in
afterEvaluate
. That will not play well withconfigureQualityChecks = true
and customizing a plugin with an extension, since the plugin is not applied yet when Gradle evaluates the extension. In that case the user would have to fallback toconfigureQualityChecks = false
and configure manually as for internal plugins.What do you think ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a really good point. Maybe it eventually makes sense to split into two plugins (oss, internal) for the different use-cases, but this is a good starting point and we can see where it evolves to. Happy to move forward with this.