Skip to content

Commit 27fddce

Browse files
committed
Merge branch 'master' into update-from-template-merged
2 parents 42ebbfd + 4eef9ec commit 27fddce

File tree

11 files changed

+509
-1
lines changed

11 files changed

+509
-1
lines changed

.config/checkstyle/checkstyle.xml

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
3+
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
4+
<module name="Checker">
5+
<!-- Only check code -->
6+
<property name="fileExtensions" value="java"/>
7+
<property name="severity" value="error"/>
8+
9+
<property name="tabWidth" value="4"/>
10+
11+
<module name="SuppressionFilter">
12+
<property name="file" value=".config/checkstyle/suppressions.xml"/>
13+
</module>
14+
15+
<module name="FileLength"/>
16+
<module name="LineLength">
17+
<property name="max" value="120"/>
18+
<property name="fileExtensions" value="java"/>
19+
<!-- Ignore default + links -->
20+
<property name="ignorePattern" value="(^(package|import))|(^\s*(\/\/|\*) .*https?.*$)"/>
21+
</module>
22+
<module name="NewlineAtEndOfFile"/>
23+
24+
<module name="RegexpSingleline">
25+
<!-- Ignore inside block comments (*) -->
26+
<property name="format" value="[^\s\*][\s]{1,}$"/>
27+
<property name="minimum" value="0"/>
28+
<property name="maximum" value="0"/>
29+
<property name="message" value="Line has trailing whitespaces"/>
30+
</module>
31+
32+
<!-- Generated code -->
33+
<module name="SuppressionSingleFilter">
34+
<property name="checks" value="."/>
35+
<property name="files" value="[\\/]src[\\/]gen(erated)?[\\/].*\.java$"/>
36+
</module>
37+
<!-- Test code -->
38+
<module name="SuppressionSingleFilter">
39+
<property name="checks" value="MagicNumberCheck"/>
40+
<property name="files" value="[\\/]test[\\/].*\.java$"/>
41+
</module>
42+
43+
<!-- Suppressions -->
44+
<module name="SuppressWarningsFilter"/>
45+
<!-- https://github.com/checkstyle/checkstyle/issues/7287 -->
46+
<module name="SuppressWithPlainTextCommentFilter">
47+
<property name="offCommentFormat" value="// CHECKSTYLE\:OFF ([\w\|]+)"/>
48+
<property name="onCommentFormat" value="// CHECKSTYLE\:ON ([\w\|]+)"/>
49+
<property name="checkFormat" value="$1"/>
50+
</module>
51+
52+
<module name="TreeWalker">
53+
<!-- Checks - sorted alphabetically -->
54+
<module name="ArrayTypeStyle"/>
55+
<module name="AvoidDoubleBraceInitialization"/>
56+
<module name="AvoidStarImport"/>
57+
<module name="ConstantName"/>
58+
<module name="DefaultComesLast"/>
59+
<module name="EmptyBlock"/>
60+
<module name="EmptyCatchBlock"/>
61+
<module name="EmptyForInitializerPad"/>
62+
<module name="EmptyForIteratorPad"/>
63+
<module name="EmptyStatement"/>
64+
<module name="EqualsHashCode"/>
65+
<module name="ExplicitInitialization">
66+
<property name="severity" value="info"/>
67+
</module>
68+
<module name="FinalClass"/>
69+
<module name="FinalParameters"/>
70+
<module name="GenericWhitespace"/>
71+
<module name="HideUtilityClassConstructor"/>
72+
<module name="IllegalCatch">
73+
<!-- https://docs.pmd-code.org/pmd-doc-7.11.0/pmd_rules_java_errorprone.html#avoidcatchingnpe -->
74+
<!-- https://docs.pmd-code.org/pmd-doc-7.11.0/pmd_rules_java_errorprone.html#avoidcatchingthrowable -->
75+
<property name="illegalClassNames" value="Error,Throwable,NullPointerException,java.lang.Error,java.lang.Throwable,java.lang.NullPointerException"/>
76+
</module>
77+
<module name="IllegalImport"/>
78+
<module name="InterfaceIsType"/>
79+
<module name="JavadocStyle">
80+
<property name="checkFirstSentence" value="false"/>
81+
</module>
82+
<module name="LeftCurly">
83+
<!-- Default minus Lambda -->
84+
<property name="tokens" value="ANNOTATION_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF, INTERFACE_DEF, LITERAL_CASE, LITERAL_CATCH, LITERAL_DEFAULT, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF, OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF"/>
85+
<property name="option" value="nl"/>
86+
</module>
87+
<module name="LocalFinalVariableName"/>
88+
<module name="LocalVariableName"/>
89+
<module name="MagicNumber">
90+
<property name="ignoreAnnotation" value="true"/>
91+
<property name="ignoreFieldDeclaration" value="true"/>
92+
<property name="ignoreHashCodeMethod" value="true"/>
93+
<!-- Defaults + other common constant values (e.g. time) -->
94+
<property name="ignoreNumbers" value="-1, 0, 1, 2, 3, 4, 5, 10, 12, 24, 31, 60, 100, 1000"/>
95+
</module>
96+
<module name="MemberName"/>
97+
<module name="MethodLength"/>
98+
<module name="MethodName"/>
99+
<module name="MethodParamPad"/>
100+
<module name="MissingDeprecated"/>
101+
<module name="MissingOverride"/>
102+
<module name="ModifierOrder"/>
103+
<module name="NeedBraces"/>
104+
<module name="NoClone"/>
105+
<module name="NoFinalizer"/>
106+
<module name="NonEmptyAtclauseDescription"/>
107+
<module name="NoWhitespaceAfter"/>
108+
<module name="NoWhitespaceBefore"/>
109+
<module name="OneStatementPerLine"/>
110+
<module name="OneTopLevelClass"/>
111+
<module name="OperatorWrap"/>
112+
<module name="OuterTypeNumber"/>
113+
<module name="PackageName"/>
114+
<module name="ParameterName"/>
115+
<module name="ParenPad"/>
116+
<module name="RedundantImport"/>
117+
<module name="RequireThis"/>
118+
<module name="RightCurly">
119+
<property name="option" value="alone"/>
120+
</module>
121+
<module name="SimplifyBooleanExpression"/>
122+
<module name="StaticVariableName"/>
123+
<module name="StringLiteralEquality"/>
124+
<module name="SuppressWarningsHolder"/>
125+
<module name="TodoComment">
126+
<property name="severity" value="info"/>
127+
</module>
128+
<module name="TypecastParenPad"/>
129+
<module name="TypeName"/>
130+
<module name="UnnecessaryParentheses"/>
131+
<module name="UnnecessarySemicolonAfterOuterTypeDeclaration"/>
132+
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration"/>
133+
<module name="UnnecessarySemicolonInEnumeration"/>
134+
<module name="UnnecessarySemicolonInTryWithResources"/>
135+
<module name="UnusedImports"/>
136+
<module name="UnusedLocalVariable"/>
137+
<module name="UpperEll"/>
138+
<module name="VisibilityModifier">
139+
<property name="packageAllowed" value="true"/>
140+
<property name="protectedAllowed" value="true"/>
141+
</module>
142+
<module name="WhitespaceAfter">
143+
<property name="tokens" value="COMMA,SEMI"/>
144+
</module>
145+
<module name="WhitespaceAround">
146+
<property name="tokens"
147+
value="ASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV,DIV_ASSIGN,EQUAL,GE,GT,LAND,LCURLY,LE,LOR,LT,MINUS,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,RCURLY,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,TYPE_EXTENSION_AND"/>
148+
</module>
149+
</module>
150+
</module>

.config/checkstyle/suppressions.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE suppressions PUBLIC
3+
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
4+
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
5+
<suppressions>
6+
</suppressions>

.config/pmd/ruleset.xml

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ruleset name="Default"
3+
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
6+
7+
<description>
8+
This ruleset checks the code for discouraged programming constructs.
9+
</description>
10+
11+
<!-- Only rules that don't overlap with CheckStyle! -->
12+
13+
<rule ref="category/java/bestpractices.xml/AvoidPrintStackTrace"/>
14+
<rule ref="category/java/bestpractices.xml/AvoidStringBufferField"/>
15+
<rule ref="category/java/bestpractices.xml/AvoidUsingHardCodedIP"/>
16+
<rule ref="category/java/bestpractices.xml/ConstantsInInterface"/>
17+
<rule ref="category/java/bestpractices.xml/ExhaustiveSwitchHasDefault"/>
18+
<rule ref="category/java/bestpractices.xml/LiteralsFirstInComparisons"/>
19+
<!-- CheckStyle can't handle this switch behavior -> delegated to PMD -->
20+
<rule ref="category/java/bestpractices.xml/NonExhaustiveSwitch"/>
21+
<rule ref="category/java/bestpractices.xml/OneDeclarationPerLine">
22+
<properties>
23+
<property name="strictMode" value="true"/>
24+
</properties>
25+
</rule>
26+
<rule ref="category/java/bestpractices.xml/PreserveStackTrace"/>
27+
<rule ref="category/java/bestpractices.xml/SimplifiableTestAssertion"/>
28+
<rule ref="category/java/bestpractices.xml/SystemPrintln"/>
29+
<rule ref="category/java/bestpractices.xml/UnusedAssignment"/>
30+
<rule ref="category/java/bestpractices.xml/UnusedFormalParameter"/>
31+
<rule ref="category/java/bestpractices.xml/UnusedPrivateField"/>
32+
<rule ref="category/java/bestpractices.xml/UnusedPrivateMethod"/>
33+
<rule ref="category/java/bestpractices.xml/UseCollectionIsEmpty"/>
34+
<rule ref="category/java/bestpractices.xml/UseEnumCollections"/>
35+
<rule ref="category/java/bestpractices.xml/UseStandardCharsets"/>
36+
<rule ref="category/java/bestpractices.xml/UseTryWithResources"/>
37+
38+
<!-- Native code is platform dependent; Loading external native libs might pose a security threat -->
39+
<rule ref="category/java/codestyle.xml/AvoidUsingNativeCode"/>
40+
<rule ref="category/java/codestyle.xml/IdenticalCatchBranches"/>
41+
<rule ref="category/java/codestyle.xml/LambdaCanBeMethodReference"/>
42+
<rule ref="category/java/codestyle.xml/NoPackage"/>
43+
<rule ref="category/java/codestyle.xml/PrematureDeclaration"/>
44+
<rule ref="category/java/codestyle.xml/UnnecessarySemicolon"/>
45+
46+
<rule ref="category/java/design.xml">
47+
<!-- Sometimes abstract classes have just fields -->
48+
<exclude name="AbstractClassWithoutAnyMethod"/>
49+
50+
<!-- Using RuntimeExceptions is ok -->
51+
<exclude name="AvoidCatchingGenericException"/>
52+
<exclude name="AvoidThrowingRawExceptionTypes"/>
53+
54+
<!-- Limit too low -->
55+
<exclude name="AvoidDeeplyNestedIfStmts"/>
56+
57+
<!-- Limit too low -->
58+
<exclude name="CouplingBetweenObjects"/>
59+
60+
<!-- Limit too low -->
61+
<exclude name="CyclomaticComplexity"/>
62+
63+
<!-- Makes entity classes impossible -->
64+
<exclude name="DataClass"/>
65+
66+
<!-- Used commonly particular in bigger methods with upstream throws -->
67+
<exclude name="ExceptionAsFlowControl"/>
68+
69+
<!-- Limit too low -->
70+
<exclude name="ExcessiveImports"/>
71+
72+
<!-- Handled by TooManyFields/TooManyMethods -->
73+
<exclude name="ExcessivePublicCount"/>
74+
75+
<!-- Prohibits accessing members using multiple depths -->
76+
<exclude name="LawOfDemeter"/>
77+
78+
<!-- No effect -->
79+
<exclude name="LoosePackageCoupling"/>
80+
81+
<!-- Prohibits singleton pattern -->
82+
<exclude name="MutableStaticState"/>
83+
84+
<!-- Checks LoC, already handled by Checkstyle -->
85+
<exclude name="NcssCount"/>
86+
87+
<!-- Some override methods or Junit require this -->
88+
<exclude name="SignatureDeclareThrowsException"/>
89+
90+
<!-- Reports FP for equals methods -->
91+
<exclude name="SimplifyBooleanReturns"/>
92+
93+
<!-- Limit too low -->
94+
<exclude name="TooManyFields"/>
95+
96+
<!-- Limit too low -->
97+
<exclude name="TooManyMethods"/>
98+
99+
<!-- Limit too low -->
100+
<exclude name="UseObjectForClearerAPI"/>
101+
</rule>
102+
103+
<rule ref="category/java/design.xml/AvoidDeeplyNestedIfStmts">
104+
<properties>
105+
<property name="problemDepth" value="4"/>
106+
</properties>
107+
</rule>
108+
<rule ref="category/java/design.xml/CouplingBetweenObjects">
109+
<properties>
110+
<property name="threshold" value="100"/>
111+
</properties>
112+
</rule>
113+
<rule ref="category/java/design.xml/CyclomaticComplexity">
114+
<properties>
115+
<property name="classReportLevel" value="150"/>
116+
<property name="methodReportLevel" value="25"/>
117+
<property name="cycloOptions" value=""/>
118+
</properties>
119+
</rule>
120+
<rule ref="category/java/design.xml/ExcessiveImports">
121+
<properties>
122+
<property name="minimum" value="200"/>
123+
</properties>
124+
</rule>
125+
<rule ref="category/java/design.xml/TooManyFields">
126+
<properties>
127+
<property name="maxfields" value="50"/>
128+
</properties>
129+
</rule>
130+
<rule ref="category/java/design.xml/TooManyMethods">
131+
<properties>
132+
<property name="maxmethods" value="100"/>
133+
</properties>
134+
</rule>
135+
136+
<rule ref="category/java/errorprone.xml/AssignmentToNonFinalStatic"/>
137+
<rule ref="category/java/errorprone.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
138+
<rule ref="category/java/errorprone.xml/AvoidMultipleUnaryOperators"/>
139+
<rule ref="category/java/errorprone.xml/AvoidUsingOctalValues"/>
140+
<rule ref="category/java/errorprone.xml/BrokenNullCheck"/>
141+
<rule ref="category/java/errorprone.xml/ComparisonWithNaN"/>
142+
<rule ref="category/java/errorprone.xml/DoNotCallGarbageCollectionExplicitly"/>
143+
<rule ref="category/java/errorprone.xml/DontImportSun"/>
144+
<rule ref="category/java/errorprone.xml/DontUseFloatTypeForLoopIndices"/>
145+
<rule ref="category/java/errorprone.xml/EqualsNull"/>
146+
<rule ref="category/java/errorprone.xml/IdempotentOperations"/>
147+
<rule ref="category/java/errorprone.xml/ImplicitSwitchFallThrough"/>
148+
<rule ref="category/java/errorprone.xml/InstantiationToGetClass"/>
149+
<rule ref="category/java/errorprone.xml/InvalidLogMessageFormat"/>
150+
<rule ref="category/java/errorprone.xml/JumbledIncrementer"/>
151+
<rule ref="category/java/errorprone.xml/MisplacedNullCheck"/>
152+
<rule ref="category/java/errorprone.xml/MoreThanOneLogger"/>
153+
<rule ref="category/java/errorprone.xml/NonStaticInitializer"/>
154+
<rule ref="category/java/errorprone.xml/ReturnFromFinallyBlock"/>
155+
<rule ref="category/java/errorprone.xml/SingletonClassReturningNewInstance"/>
156+
<rule ref="category/java/errorprone.xml/UnconditionalIfStatement"/>
157+
<rule ref="category/java/errorprone.xml/UnnecessaryCaseChange"/>
158+
<rule ref="category/java/errorprone.xml/UselessOperationOnImmutable"/>
159+
160+
161+
<rule ref="category/java/multithreading.xml">
162+
<!-- Just bloats code; improved in JEP-491/Java 24+ -->
163+
<exclude name="AvoidSynchronizedAtMethodLevel"/>
164+
165+
<!-- NOPE -->
166+
<exclude name="DoNotUseThreads"/>
167+
168+
<!-- Doesn't detect nested thread safe singleton pattern -->
169+
<exclude name="NonThreadSafeSingleton"/>
170+
171+
<!-- Should relevant for fields that use multithreading which is rare -->
172+
<exclude name="UseConcurrentHashMap"/>
173+
</rule>
174+
175+
<rule ref="category/java/performance.xml">
176+
<!-- This was fixed in Java 10 -->
177+
<exclude name="AvoidFileStream"/>
178+
179+
<!-- Used everywhere and has neglectable performance impact -->
180+
<exclude name="AvoidInstantiatingObjectsInLoops"/>
181+
182+
<!-- Handled by checkstyle -->
183+
<exclude name="RedundantFieldInitializer"/>
184+
185+
<!-- Nowadays optimized by compiler; No code bloating needed -->
186+
<exclude name="UseStringBufferForStringAppends"/>
187+
</rule>
188+
189+
<rule ref="category/java/performance.xml/TooFewBranchesForSwitch">
190+
<properties>
191+
<!-- If you have one case only please use a if -->
192+
<property name="minimumNumberCaseForASwitch" value="2"/>
193+
</properties>
194+
</rule>
195+
196+
<rule ref="category/java/security.xml"/>
197+
</ruleset>

.github/workflows/broken-links.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ permissions:
1111
jobs:
1212
link-checker:
1313
runs-on: ubuntu-latest
14+
timeout-minutes: 15
1415
steps:
1516
- uses: actions/checkout@v4
1617

.github/workflows/sync-labels.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ permissions:
1414
jobs:
1515
labels:
1616
runs-on: ubuntu-latest
17+
timeout-minutes: 10
1718
steps:
1819
- uses: actions/checkout@v4
1920
with:

.github/workflows/update-from-template.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ on:
2121
env:
2222
UPDATE_BRANCH: update-from-template
2323
UPDATE_BRANCH_MERGED: update-from-template-merged
24-
REMOTE_URL: https://github.com/xdev-software/base-template.git
24+
REMOTE_URL: https://github.com/xdev-software/java-template.git
2525
REMOTE_BRANCH: master
2626

2727
permissions:
@@ -31,6 +31,7 @@ permissions:
3131
jobs:
3232
update:
3333
runs-on: ubuntu-latest
34+
timeout-minutes: 60
3435
outputs:
3536
update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }}
3637
create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }}
@@ -180,6 +181,7 @@ jobs:
180181
needs: [update]
181182
if: needs.update.outputs.create_update_branch_merged_pr == 1
182183
runs-on: ubuntu-latest
184+
timeout-minutes: 60
183185
steps:
184186
- uses: actions/checkout@v4
185187
with:

0 commit comments

Comments
 (0)