/* * Copyright 2013-2026, Seqera Labs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ ruleset { description ''' A Sample Groovy RuleSet containing all CodeNarc Rules, grouped by category. You can use this as a template for your own custom RuleSet. Just delete the rules that you don't want to include. ''' // rulesets/basic.xml AssertWithinFinallyBlock AssignmentInConditional BigDecimalInstantiation BitwiseOperatorInConditional BooleanGetBoolean BrokenNullCheck BrokenOddnessCheck ClassForName ComparisonOfTwoConstants ComparisonWithSelf ConstantAssertExpression ConstantIfExpression ConstantTernaryExpression DeadCode DoubleNegative DuplicateCaseStatement DuplicateMapKey DuplicateSetValue EmptyCatchBlock EmptyElseBlock EmptyFinallyBlock EmptyForStatement EmptyIfStatement EmptyInstanceInitializer EmptyMethod EmptyStaticInitializer EmptySwitchStatement EmptySynchronizedStatement EmptyTryBlock EmptyWhileStatement EqualsAndHashCode EqualsOverloaded ExplicitGarbageCollection ForLoopShouldBeWhileLoop HardCodedWindowsFileSeparator HardCodedWindowsRootDirectory IntegerGetInteger RandomDoubleCoercedToZero RemoveAllOnSelf ReturnFromFinallyBlock ThrowExceptionFromFinallyBlock // rulesets/braces.xml //ElseBlockBraces ForStatementBraces //IfStatementBraces //WhileStatementBraces // rulesets/concurrency.xml BusyWait DoubleCheckedLocking InconsistentPropertyLocking InconsistentPropertySynchronization NestedSynchronization StaticCalendarField StaticConnection StaticDateFormatField StaticMatcherField StaticSimpleDateFormatField SynchronizedMethod SynchronizedOnBoxedPrimitive SynchronizedOnGetClass SynchronizedOnReentrantLock SynchronizedOnString SynchronizedOnThis SynchronizedReadObjectMethod SystemRunFinalizersOnExit ThreadGroup ThreadLocalNotStaticFinal ThreadYield UseOfNotifyMethod VolatileArrayField VolatileLongOrDoubleField WaitOutsideOfWhileLoop // rulesets/convention.xml ConfusingTernary CouldBeElvis HashtableIsObsolete IfStatementCouldBeTernary InvertedIfElse LongLiteralWithLowerCaseL ParameterReassignment TernaryCouldBeElvis VectorIsObsolete // rulesets/design.xml AbstractClassWithPublicConstructor AbstractClassWithoutAbstractMethod BooleanMethodReturnsNull BuilderMethodWithSideEffects CloneableWithoutClone CloseWithoutCloseable CompareToWithoutComparable ConstantsOnlyInterface EmptyMethodInAbstractClass FinalClassWithProtectedMember ImplementationAsType PrivateFieldCouldBeFinal PublicInstanceField ReturnsNullInsteadOfEmptyArray ReturnsNullInsteadOfEmptyCollection SimpleDateFormatMissingLocale StatelessSingleton // rulesets/dry.xml DuplicateListLiteral DuplicateMapLiteral DuplicateNumberLiteral DuplicateStringLiteral // rulesets/exceptions.xml CatchArrayIndexOutOfBoundsException CatchError CatchException CatchIllegalMonitorStateException CatchIndexOutOfBoundsException CatchNullPointerException CatchRuntimeException CatchThrowable ConfusingClassNamedException ExceptionExtendsError ExceptionNotThrown MissingNewInThrowStatement ReturnNullFromCatchBlock SwallowThreadDeath ThrowError ThrowException ThrowNullPointerException ThrowRuntimeException ThrowThrowable // rulesets/generic.xml IllegalClassReference IllegalPackageReference IllegalRegex RequiredRegex RequiredString StatelessClass // rulesets/grails.xml GrailsDomainHasEquals GrailsDomainHasToString GrailsDuplicateConstraint GrailsDuplicateMapping GrailsPublicControllerMethod GrailsServletContextReference GrailsSessionReference // DEPRECATED GrailsStatelessService // rulesets/groovyism.xml AssignCollectionSort AssignCollectionUnique ClosureAsLastMethodParameter CollectAllIsDeprecated ConfusingMultipleReturns ExplicitArrayListInstantiation ExplicitCallToAndMethod ExplicitCallToCompareToMethod ExplicitCallToDivMethod ExplicitCallToEqualsMethod ExplicitCallToGetAtMethod ExplicitCallToLeftShiftMethod ExplicitCallToMinusMethod ExplicitCallToModMethod ExplicitCallToMultiplyMethod ExplicitCallToOrMethod ExplicitCallToPlusMethod ExplicitCallToPowerMethod ExplicitCallToRightShiftMethod ExplicitCallToXorMethod ExplicitHashMapInstantiation ExplicitHashSetInstantiation ExplicitLinkedHashMapInstantiation ExplicitLinkedListInstantiation ExplicitStackInstantiation ExplicitTreeSetInstantiation GStringAsMapKey GetterMethodCouldBeProperty GroovyLangImmutable UseCollectMany UseCollectNested // rulesets/imports.xml DuplicateImport ImportFromSamePackage ImportFromSunPackages MisorderedStaticImports UnnecessaryGroovyImport UnusedImport // rulesets/jdbc.xml DirectConnectionManagement JdbcConnectionReference JdbcResultSetReference JdbcStatementReference // rulesets/junit.xml ChainedTest CoupledTestCase JUnitAssertAlwaysFails JUnitAssertAlwaysSucceeds JUnitFailWithoutMessage JUnitLostTest JUnitPublicNonTestMethod JUnitSetUpCallsSuper JUnitStyleAssertions JUnitTearDownCallsSuper JUnitTestMethodWithoutAssert JUnitUnnecessarySetUp JUnitUnnecessaryTearDown JUnitUnnecessaryThrowsException SpockIgnoreRestUsed UnnecessaryFail UseAssertEqualsInsteadOfAssertTrue UseAssertFalseInsteadOfNegation UseAssertNullInsteadOfAssertEquals UseAssertSameInsteadOfAssertTrue UseAssertTrueInsteadOfAssertEquals UseAssertTrueInsteadOfNegation // rulesets/logging.xml LoggerForDifferentClass LoggerWithWrongModifiers LoggingSwallowsStacktrace MultipleLoggers PrintStackTrace Println SystemErrPrint SystemOutPrint // rulesets/naming.xml AbstractClassName ClassName ConfusingMethodName FactoryMethodName FieldName InterfaceName MethodName ObjectOverrideMisspelledMethodName PackageName ParameterName PropertyName //VariableName // rulesets/security.xml FileCreateTempFile InsecureRandom NonFinalPublicField NonFinalSubclassOfSensitiveInterface ObjectFinalize PublicFinalizeMethod SystemExit UnsafeArrayDeclaration // rulesets/serialization.xml SerialPersistentFields SerialVersionUID SerializableClassMustDefineSerialVersionUID // rulesets/size.xml AbcComplexity // DEPRECATED: Use the AbcMetric rule instead. Requires the GMetrics jar AbcMetric // Requires the GMetrics jar ClassSize CrapMetric // Requires the GMetrics jar and a Cobertura coverage file CyclomaticComplexity // Requires the GMetrics jar MethodCount MethodSize NestedBlockDepth // rulesets/unnecessary.xml AddEmptyString ConsecutiveLiteralAppends ConsecutiveStringConcatenation UnnecessaryBigDecimalInstantiation UnnecessaryBigIntegerInstantiation UnnecessaryBooleanExpression UnnecessaryBooleanInstantiation UnnecessaryCallForLastElement UnnecessaryCallToSubstring UnnecessaryCatchBlock UnnecessaryCollectCall UnnecessaryCollectionCall UnnecessaryConstructor UnnecessaryDefInFieldDeclaration //UnnecessaryDefInMethodDeclaration UnnecessaryDefInVariableDeclaration UnnecessaryDotClass UnnecessaryDoubleInstantiation UnnecessaryElseStatement UnnecessaryFinalOnPrivateMethod UnnecessaryFloatInstantiation //UnnecessaryGString //UnnecessaryGetter UnnecessaryIfStatement UnnecessaryInstanceOfCheck UnnecessaryInstantiationToGetClass UnnecessaryIntegerInstantiation UnnecessaryLongInstantiation UnnecessaryModOne UnnecessaryNullCheck UnnecessaryNullCheckBeforeInstanceOf UnnecessaryObjectReferences UnnecessaryOverridingMethod UnnecessaryPackageReference UnnecessaryParenthesesForMethodCallWithClosure UnnecessaryPublicModifier UnnecessaryReturnKeyword UnnecessarySelfAssignment UnnecessarySemicolon UnnecessaryStringInstantiation UnnecessarySubstring UnnecessaryTernaryExpression UnnecessaryTransientModifier // rulesets/unused.xml UnusedArray UnusedMethodParameter UnusedObject UnusedPrivateField UnusedPrivateMethod UnusedPrivateMethodParameter UnusedVariable }