- command: replace /lp alias with /lpk (LuckPerms conflict, p.144);
parkour alias kept; docs/changelog/javadoc updated
- lint p.169: restructure last 69 void early-returns into if-blocks and
helpers; ReturnCount is now an error gate (0 violations)
- lint p.170: Throwable->RuntimeException on 3 boundaries; narrow 5
catches to concrete types; document 14 intentional boundary catches
- scheduler p.21: add runTimerAsync to the facade (Bukkit + Folia
backends); MetricsCacheStore and duels go through the facade, no
BukkitRunnable/Bukkit.getScheduler outside scheduler/ (archunit
freeze-store emptied); drop the unverified Folia badge from README
- tracker: mark p.26-29/32-33 done (fixed in fea15e6, verified)
195 lines
7.4 KiB
XML
195 lines
7.4 KiB
XML
<?xml version="1.0"?>
|
|
<!DOCTYPE module PUBLIC
|
|
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
|
|
"https://checkstyle.org/dtds/configuration_1_3.dtd">
|
|
|
|
<!--
|
|
Two-tier gate (ratchet):
|
|
|
|
* severity="error" — rules that are at ZERO violations right now. The build
|
|
fails if any of them fires. Strict thresholds live here; they were raised
|
|
from the pre-Task-2 values (MethodLength 80->40, CyclomaticComplexity
|
|
20->15, NestedIfDepth 3->2, ParameterNumber 7->5, MagicNumber and
|
|
FinalLocalVariable promoted from warning to error).
|
|
|
|
* severity="warning" — the design-debt backlog: rules that are ON and report
|
|
every violation in build/reports/checkstyle, but do not fail the build
|
|
while their backlog is non-zero. Counts are tracked in TODO.md
|
|
(Задача 2, блок «красный baseline»). When a rule reaches zero violations
|
|
it MUST be flipped to severity="error" in this file.
|
|
|
|
suppressions.xml is intentionally empty — never add entries back; fix the
|
|
code or, for a documented intentional pattern, agree on it with the owner.
|
|
-->
|
|
<module name="Checker">
|
|
<property name="charset" value="UTF-8"/>
|
|
<property name="severity" value="error"/>
|
|
<property name="fileExtensions" value="java"/>
|
|
|
|
<module name="BeforeExecutionExclusionFileFilter">
|
|
<property name="fileNamePattern" value=".*[\\/]src[\\/]test[\\/].*"/>
|
|
</module>
|
|
|
|
<!-- Max file size: enforces the 200-line-per-file rule (KISS / decoupling). -->
|
|
<module name="FileLength">
|
|
<property name="max" value="200"/>
|
|
</module>
|
|
|
|
<module name="SuppressionFilter">
|
|
<property name="file" value="${config_loc}/suppressions.xml"/>
|
|
<property name="optional" value="true"/>
|
|
</module>
|
|
|
|
<module name="SuppressWarningsFilter"/>
|
|
|
|
<module name="LineLength">
|
|
<property name="max" value="150"/>
|
|
<property name="ignorePattern"
|
|
value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
|
</module>
|
|
|
|
<module name="TreeWalker">
|
|
<module name="SuppressWarningsHolder"/>
|
|
|
|
<module name="MethodLength">
|
|
<property name="max" value="40"/>
|
|
<property name="countEmpty" value="false"/>
|
|
<property name="severity" value="warning"/>
|
|
</module>
|
|
|
|
<module name="CyclomaticComplexity">
|
|
<property name="max" value="15"/>
|
|
</module>
|
|
|
|
<module name="ParameterNumber">
|
|
<property name="max" value="5"/>
|
|
<property name="severity" value="warning"/>
|
|
</module>
|
|
|
|
<module name="ReturnCount">
|
|
<property name="max" value="5"/>
|
|
<property name="severity" value="error"/>
|
|
</module>
|
|
|
|
<module name="AvoidStarImport"/>
|
|
<module name="UnusedImports"/>
|
|
<module name="RedundantImport"/>
|
|
|
|
<module name="PackageName">
|
|
<property name="format" value="^[a-z]+(\.[a-zA-Z][a-zA-Z0-9]*)*$"/>
|
|
</module>
|
|
<module name="TypeName"/>
|
|
<module name="MethodName"/>
|
|
<module name="MemberName"/>
|
|
<module name="ParameterName"/>
|
|
<module name="LocalVariableName"/>
|
|
<module name="ConstantName">
|
|
<property name="format" value="^log$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
|
|
</module>
|
|
|
|
<module name="NeedBraces"/>
|
|
<module name="LeftCurly"/>
|
|
<module name="RightCurly"/>
|
|
|
|
<module name="ModifierOrder"/>
|
|
<module name="RedundantModifier"/>
|
|
<module name="EmptyStatement"/>
|
|
<module name="EqualsHashCode"/>
|
|
<module name="SimplifyBooleanExpression"/>
|
|
<module name="SimplifyBooleanReturn"/>
|
|
<module name="StringLiteralEquality"/>
|
|
<module name="DefaultComesLast"/>
|
|
<module name="MultipleVariableDeclarations"/>
|
|
<module name="OneStatementPerLine"/>
|
|
<module name="FallThrough"/>
|
|
<module name="HideUtilityClassConstructor"/>
|
|
<module name="OneTopLevelClass"/>
|
|
<module name="UpperEll"/>
|
|
<module name="ArrayTypeStyle"/>
|
|
<module name="MissingSwitchDefault"/>
|
|
<module name="OuterTypeFilename"/>
|
|
<module name="FinalClass"/>
|
|
|
|
<module name="HiddenField">
|
|
<property name="ignoreConstructorParameter" value="true"/>
|
|
<property name="ignoreSetter" value="true"/>
|
|
<property name="severity" value="error"/>
|
|
</module>
|
|
|
|
<module name="VisibilityModifier">
|
|
<property name="allowPublicFinalFields" value="true"/>
|
|
<property name="severity" value="error"/>
|
|
</module>
|
|
|
|
<module name="EmptyBlock">
|
|
<property name="option" value="text"/>
|
|
</module>
|
|
<module name="EmptyCatchBlock">
|
|
<property name="exceptionVariableName" value="expected|ignore"/>
|
|
</module>
|
|
|
|
<module name="EqualsAvoidNull"/>
|
|
<module name="NoFinalizer"/>
|
|
<module name="NoClone"/>
|
|
<module name="PackageDeclaration"/>
|
|
|
|
<!-- ============ Complexity and size ============ -->
|
|
<module name="NPathComplexity">
|
|
<property name="max" value="50"/>
|
|
<property name="severity" value="warning"/>
|
|
</module>
|
|
<module name="NestedIfDepth">
|
|
<property name="max" value="2"/>
|
|
</module>
|
|
<module name="NestedForDepth">
|
|
<property name="max" value="2"/>
|
|
</module>
|
|
<module name="NestedTryDepth">
|
|
<property name="max" value="2"/>
|
|
</module>
|
|
<module name="ClassDataAbstractionCoupling">
|
|
<property name="max" value="10"/>
|
|
<property name="severity" value="warning"/>
|
|
</module>
|
|
<module name="ClassFanOutComplexity">
|
|
<property name="max" value="12"/>
|
|
<property name="severity" value="warning"/>
|
|
</module>
|
|
|
|
<!-- ============ Safety and reliability ============ -->
|
|
<module name="MagicNumber">
|
|
<property name="ignoreNumbers" value="-1, 0, 1, 2"/>
|
|
<property name="ignoreHashCodeMethod" value="true"/>
|
|
<property name="ignoreAnnotation" value="true"/>
|
|
</module>
|
|
<module name="Regexp">
|
|
<property name="format" value="System\.(out|err)\.print"/>
|
|
<property name="illegalPattern" value="true"/>
|
|
<property name="message" value="Use a logger instead of System.out/err"/>
|
|
</module>
|
|
<module name="Regexp">
|
|
<property name="format" value="\.printStackTrace\(\)"/>
|
|
<property name="illegalPattern" value="true"/>
|
|
<property name="message" value="Use a logger instead of printStackTrace"/>
|
|
</module>
|
|
<module name="IllegalThrows"/>
|
|
<module name="IllegalCatch">
|
|
<property name="illegalClassNames"
|
|
value="java.lang.Exception, java.lang.Throwable, java.lang.RuntimeException"/>
|
|
<property name="severity" value="warning"/>
|
|
</module>
|
|
|
|
<!-- ============ Style and maintainability ============ -->
|
|
<module name="EmptyLineSeparator">
|
|
<property name="allowNoEmptyLineBetweenFields" value="true"/>
|
|
</module>
|
|
<module name="WhitespaceAround"/>
|
|
<module name="WhitespaceAfter"/>
|
|
<module name="NoWhitespaceBefore"/>
|
|
<module name="MissingOverride"/>
|
|
<module name="MissingDeprecated"/>
|
|
<module name="FinalLocalVariable">
|
|
<property name="validateEnhancedForLoopVariable" value="true"/>
|
|
</module>
|
|
</module>
|
|
</module>
|