CodeNarc/CodeNarc (codenarc)
### [`v1.5`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-15-Nov-2019)
New Rules
- [#371](https://redirect.github.com/CodeNarc/CodeNarc/issues/371): **ImplicitClosureParameter** rule (convention). Checks for usages of the implicit `it` closure parameter.
- [#437](https://redirect.github.com/CodeNarc/CodeNarc/issues/437): **NoFloat** rule (convention) - Checks for use of the float or Float types, in fields, variables, method parameters and method return types.
- [#437](https://redirect.github.com/CodeNarc/CodeNarc/issues/437): **NoDouble** rule (convention) - Checks for use of the double or Double types, in fields, variables, method parameters and method return types.
Updated/Enhanced Rules and Bug Fixes
- [#426](https://redirect.github.com/CodeNarc/CodeNarc/issues/426): **UnusedImport** rule: No such property: staticImportAliases using Groovy 3.0.0-beta-1. Remove unused `GroovyVersion` class.
- [#427](https://redirect.github.com/CodeNarc/CodeNarc/issues/427): **PublicMethodsBeforeNonPublicMethods**: False alarm for static initializer.
- [#430](https://redirect.github.com/CodeNarc/CodeNarc/issues/430): **SpaceAroundMapEntryColon**: False positive when spread map operator is used.
- [#440](https://redirect.github.com/CodeNarc/CodeNarc/issues/440): **SpaceAfterClosingBrace**: Ignore if followed by opening parenthesis or opening square brace
- [#443](https://redirect.github.com/CodeNarc/CodeNarc/issues/443): **UnnecessaryGetter** false-positive; ignore within Spock method calls (`Mock()`, `Stub()` and `Spy()`), including those where an option Map is passed in.
- [#444](https://redirect.github.com/CodeNarc/CodeNarc/issues/444): **FieldTypeRequired**: Fix duplicate violations.
- [#256](https://redirect.github.com/CodeNarc/CodeNarc/issues/256): **JUnitPublicField**: Added support for skipping fields with fully-qualified [@org](https://redirect.github.com/org).junit.Rule and [@org](https://redirect.github.com/org).junit.ClassRule annotations.
Groovy 3.x Compatibility
- [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix "IllegalAccessError: null from ClosureAsLastMethodParameterRule". **AbstractMethodCallExpressionVisitor**: Changed `visitEmptyStatement()` to public.
- [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix "The variable \[xx] is declared final but is reassigned" errors w/Groovy 3. Fixed **CompileStaticRuleTest**.
- [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix "attempting to assign weaker access privileges; was public" errors: **AbstractFieldVisitor**, **AbstractMethodCallExpressionVisitor**, **AbstractMethodVisitor**.
- [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix **SpaceAroundMapEntryColonRule** "StringIndexOutOfBoundsException" errors w/Groovy 3.
- [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix **ClosureStatementOnOpeningLineOfMultipleLineClosureRule** "MissingPropertyException: No such property: statements for class: org.codehaus.groovy.ast.stmt.ExpressionStatement"
- [#423](https://redirect.github.com/CodeNarc/CodeNarc/issues/423): **UnnecessaryPublicModifierAstVisitor** and **AstUtil**. Resolves [#414](https://redirect.github.com/CodeNarc/CodeNarc/issues/414). (philippkrauss)
Framework and Infrastructure
- [#448](https://redirect.github.com/CodeNarc/CodeNarc/issues/448): Switch from groovy-all dependency to individual groovy component jars. Make GMetrics dependency transitive:false.
- [#442](https://redirect.github.com/CodeNarc/CodeNarc/issues/442): Move web site (online docs) from Sourceforge to GitHub.
- [#441](https://redirect.github.com/CodeNarc/CodeNarc/issues/441): Enable CodeNarc Ant Task to optionally fail for Groovy compile errors on source files. Add *failOnError* property to the Ant Task, defaults to *false*.
- [#445](https://redirect.github.com/CodeNarc/CodeNarc/issues/445): Support `@SuppressWarnings("all")` and `@SuppressWarnings("CodeNarc")`.
- [#429](https://redirect.github.com/CodeNarc/CodeNarc/issues/429): Normalize line endings to LF. (Marcin Erdmann)
- [#421](https://redirect.github.com/CodeNarc/CodeNarc/issues/421): Update to gradle 5.4.1, Only sign on uploadArchives. (Leonard Brünings)
- [#436](https://redirect.github.com/CodeNarc/CodeNarc/issues/436): Remove unnecessary CodeNarc logging.
### [`v1.4`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-14-May-2019)
New Rules
- [#418](https://redirect.github.com/CodeNarc/CodeNarc/issues/418): New **CompileStatic** convention rule enforces all classes are annotated with [@CompileStatic](https://redirect.github.com/CompileStatic), [@GrailsCompileStatic](https://redirect.github.com/GrailsCompileStatic) or [@CompileDynamic](https://redirect.github.com/CompileDynamic) annotations. (Sudhir Nimavat)
- [#420](https://redirect.github.com/CodeNarc/CodeNarc/issues/420): New **JavadocMissingParamDescription** rule (comments). Checks for missing description within [@param](https://redirect.github.com/param) javadoc tags.
- [#420](https://redirect.github.com/CodeNarc/CodeNarc/issues/420): New **JavadocMissingThrowsDescription** rule (comments). Checks for missing description within [@throws](https://redirect.github.com/throws) javadoc tags.
- [#420](https://redirect.github.com/CodeNarc/CodeNarc/issues/420): New **JavadocMissingExceptionDescription** rule (comments). Checks for missing description within [@exception](https://redirect.github.com/exception) javadoc tags.
Updated/Enhanced Rules and Bug Fixes
- [#402](https://redirect.github.com/CodeNarc/CodeNarc/issues/402): **ClosureAsLastMethodParameter** rule: fix typo in violation message. (Marcin Erdmann)
- [#397](https://redirect.github.com/CodeNarc/CodeNarc/issues/397): **ClassStartsWithBlankLine** and **ClassEndsWithBlankLine** rules - Fix failure when analysing code which consists of only a semicolon. (Marcin Erdmann)
- [#405](https://redirect.github.com/CodeNarc/CodeNarc/issues/405): **UnnecessaryGetter** rule: Add `ignoreMethodNames` property. (Marcin Erdmann)
- [#408](https://redirect.github.com/CodeNarc/CodeNarc/issues/408): Fix a typo in **ClosureAsLastMethodParameter** rule's violation message. Fixes [#402](https://redirect.github.com/CodeNarc/CodeNarc/issues/402). (Marcin Erdmann)
- [#410](https://redirect.github.com/CodeNarc/CodeNarc/issues/410): **IndentationRule**: Fix NPE on GStrings containing an if-statement. (debanne)
- [#398](https://redirect.github.com/CodeNarc/CodeNarc/issues/398): **ClassStartsWithBlankLine** and **ClassEndsWithBlankLine** rules: Ignore Script classes.
- [#399](https://redirect.github.com/CodeNarc/CodeNarc/issues/399): **AssignCollectionUnique** rule: Fix false positive for `unique(false)`, `unique(false, Comparator)` and `unique(false, Closure)`.
- [#400](https://redirect.github.com/CodeNarc/CodeNarc/issues/400): Update online documentation to reflect that ruleset file URLs can optionally be URL-encoded.
- [#415](https://redirect.github.com/CodeNarc/CodeNarc/issues/415): **ClassStartsWithBlankLine**: Add *ignoreInnerClasses* boolean flag.
- [#416](https://redirect.github.com/CodeNarc/CodeNarc/issues/416): **ClassEndsWithBlankLine**: Add *ignoreInnerClasses* boolean flag.
- [#401](https://redirect.github.com/CodeNarc/CodeNarc/issues/401): Fix false-negative in ClosureAsLastMethodParameter (method call within GString).
- [#419](https://redirect.github.com/CodeNarc/CodeNarc/issues/419): **IndentationRule**: Ignore List expressions.
- [#417](https://redirect.github.com/CodeNarc/CodeNarc/issues/417): **UnnecessaryGetter**: Add *checkIsMethods* property and then also check `is*` methods if true. \[NOTE: May introduce new violations; set *checkIsMethods=false* to revert new behavior]
Tests and Documentation
- [#411](https://redirect.github.com/CodeNarc/CodeNarc/issues/411): Consistent indentation on IndentationRuleTest.groovy. (debanne)
Framework and Infrastructure
- [#404](https://redirect.github.com/CodeNarc/CodeNarc/issues/404): Update Maven repository URL to use HTTPS. Fixes [#403](https://redirect.github.com/CodeNarc/CodeNarc/issues/403). (Jenn Strater)
### [`v1.3`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-13-Jan-2019)
New Rules (and new "comments" ruleset)
- [#359](https://redirect.github.com/CodeNarc/CodeNarc/issues/359): **ClassEndsWithBlankLine** rule (formatting) - Check whether the class ends with a blank line. (David Ausín)
- [#362](https://redirect.github.com/CodeNarc/CodeNarc/issues/362): **ClassStartsWithBlankLine** rule (formatting) - Check whether the class starts with a blank line. (David Ausín)
- [#377](https://redirect.github.com/CodeNarc/CodeNarc/issues/377): **ExplicitCallToPutAtMethod** rule - Detects when the `map.putAt(k, v)` method is called directly rather than using `map[k] = v`.
- [#385](https://redirect.github.com/CodeNarc/CodeNarc/issues/385): **JavadocEmptyFirstLine** rule (comments) - Check for javadoc comments with an empty top line.
- [#386](https://redirect.github.com/CodeNarc/CodeNarc/issues/386): **JavadocEmptyLastLine** rule (comments) - Check for javadoc comments with an empty line at the bottom.
- [#387](https://redirect.github.com/CodeNarc/CodeNarc/issues/387): **JavadocConsecutiveEmptyLines** rule (comments) - Checks for javadoc comments with more than one consecutive empty line.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptySeeTag** rule (comments) - Checks for empty [@see](https://redirect.github.com/see) tags within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyParamTag** rule (comments) - Checks for empty [@param](https://redirect.github.com/param) tags within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyReturnTag** rule (comments) - Checks for empty [@return](https://redirect.github.com/return) tags within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyThrowsTag** rule (comments) - Checks for empty [@throws](https://redirect.github.com/throws) tag within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyExceptionTag** rule (comments) - Checks for empty [@exception](https://redirect.github.com/exception) tag within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyAuthorTag** rule (comments) - Checks for empty [@author](https://redirect.github.com/author) tags within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptySinceTag** rule (comments) - Checks for empty [@since](https://redirect.github.com/since) tags within javadoc.
- [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyVersionTag** rule (comments) - Checks for empty [@version](https://redirect.github.com/version) tags within javadoc.
Updated/Enhanced Rules and Bug Fixes
- [#388](https://redirect.github.com/CodeNarc/CodeNarc/issues/388): **ClassJavadoc** rule: Moved from the "formatting" ruleset into the new "comments" ruleset. \[BREAKING CHANGE]
- [#364](https://redirect.github.com/CodeNarc/CodeNarc/issues/364): **UnnecessarySetter** rule: Fix StringIndexOutOfBoundsException for single-letter property names (e.g. account.setE(3)).
- [#363](https://redirect.github.com/CodeNarc/CodeNarc/issues/363): **CouldBeSwitchStatement** rule: Fix the false positive that occurs when if statements are in different methods of the same class. (Jenn Strater)
- [#360](https://redirect.github.com/CodeNarc/CodeNarc/issues/360): **NoWildcardImports** rule: Add a configuration option to ignore non-static imports. (Jenn Strater)
- [#357](https://redirect.github.com/CodeNarc/CodeNarc/issues/357): **PrivateFieldCouldBeFinal** rule: Fix the fasle positive that occurs when a field is marked with the Lazy annotation. (Jenn Strater)
- [#372](https://redirect.github.com/CodeNarc/CodeNarc/issues/372): **UnnecessaryGetter** rule: Also handle the "Spy" Spock method. (Boris Petrov)
- [#383](https://redirect.github.com/CodeNarc/CodeNarc/issues/383): **DuplicateImport** rule: Fix handling of imports with non-English characters.
- [#381](https://redirect.github.com/CodeNarc/CodeNarc/issues/381): **CloseWithoutCloseable** rule: Skip classes implementing Autocloseable. (Mitch Sans Souci)
- [#384](https://redirect.github.com/CodeNarc/CodeNarc/issues/384): **JUnitLostTest** rule: ignore abstract test methods.
- [#269](https://redirect.github.com/CodeNarc/CodeNarc/issues/269): Enhanced the "compilation failed" error message to also include the exception that caused it.
- [#380](https://redirect.github.com/CodeNarc/CodeNarc/issues/380): **JUnitAssertEqualsConstantActualValue** rule: Fix NoClassDefFoundError when JUnit not on the classpath.
- [#376](https://redirect.github.com/CodeNarc/CodeNarc/issues/376): **BracesForMethod** rule: Fix false positive when methods have annotations followed by comment lines.
- [#395](https://redirect.github.com/CodeNarc/CodeNarc/issues/395): **Indentation** rule: Fix false positive when constructor is called in a script method for a class declared in the script ifself. (René Scheibe).
- [#374](https://redirect.github.com/CodeNarc/CodeNarc/issues/374): **TrailingComma** rule. Ignore lists/maps with single elements. Add *ignoreSingleElementList* and *ignoreSingleElementMap*. default to true.
Framework and Infrastructure
- [#390](https://redirect.github.com/CodeNarc/CodeNarc/issues/390): CodeNarc command-line: Support `maxPriorityXViolations` command-line arguments.
- [#391](https://redirect.github.com/CodeNarc/CodeNarc/issues/391): Fix line endings in codenarc.groovy to enable running the script via `./codenarc.groovy` in Linux. (René Scheibe)
- [#392](https://redirect.github.com/CodeNarc/CodeNarc/issues/392): Fix compilation of Groovy class in incorrect folder. (René Scheibe)
- [#393](https://redirect.github.com/CodeNarc/CodeNarc/issues/393): Remove obsolete Java placeholder file. (René Scheibe)
### [`v1.2.1`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-121-Aug-2018)
Bug Fixes
- [#310](https://redirect.github.com/CodeNarc/CodeNarc/issues/310): **Indentation** rule: Fix handling of indent level within scripts and method call chaining.
- [#355](https://redirect.github.com/CodeNarc/CodeNarc/issues/355): **Indentation** rule: Spock labels on if stmt throw MissingPropertyException: No such property: expression.
- [#351](https://redirect.github.com/CodeNarc/CodeNarc/issues/351): **GrailsStatelessService** rule: Add `grailsApplication` to the default ignored fields. (Donald Oellerich)
- [#354](https://redirect.github.com/CodeNarc/CodeNarc/issues/354): **JUnitPublicField** rule: Also ignore [@ClassRule](https://redirect.github.com/ClassRule). (Daniel Spilker)
- [#348](https://redirect.github.com/CodeNarc/CodeNarc/issues/348): **SpaceAroundOperator** rule: Fix false-positive for annotated lines. Known limitation: Does not catch violations of missing space around the equals operator (=) for fields initialization if the field is annotated.
- [#349](https://redirect.github.com/CodeNarc/CodeNarc/issues/349): **NoJavaUtilDate** rule: Ignore `new Date()` if the class imports another `Date` class.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
1.2
->1.5
By merging this PR, the issue #262 will be automatically resolved and closed:
Release Notes
CodeNarc/CodeNarc (codenarc)
### [`v1.5`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-15-Nov-2019) New Rules - [#371](https://redirect.github.com/CodeNarc/CodeNarc/issues/371): **ImplicitClosureParameter** rule (convention). Checks for usages of the implicit `it` closure parameter. - [#437](https://redirect.github.com/CodeNarc/CodeNarc/issues/437): **NoFloat** rule (convention) - Checks for use of the float or Float types, in fields, variables, method parameters and method return types. - [#437](https://redirect.github.com/CodeNarc/CodeNarc/issues/437): **NoDouble** rule (convention) - Checks for use of the double or Double types, in fields, variables, method parameters and method return types. Updated/Enhanced Rules and Bug Fixes - [#426](https://redirect.github.com/CodeNarc/CodeNarc/issues/426): **UnusedImport** rule: No such property: staticImportAliases using Groovy 3.0.0-beta-1. Remove unused `GroovyVersion` class. - [#427](https://redirect.github.com/CodeNarc/CodeNarc/issues/427): **PublicMethodsBeforeNonPublicMethods**: False alarm for static initializer. - [#430](https://redirect.github.com/CodeNarc/CodeNarc/issues/430): **SpaceAroundMapEntryColon**: False positive when spread map operator is used. - [#440](https://redirect.github.com/CodeNarc/CodeNarc/issues/440): **SpaceAfterClosingBrace**: Ignore if followed by opening parenthesis or opening square brace - [#443](https://redirect.github.com/CodeNarc/CodeNarc/issues/443): **UnnecessaryGetter** false-positive; ignore within Spock method calls (`Mock()`, `Stub()` and `Spy()`), including those where an option Map is passed in. - [#444](https://redirect.github.com/CodeNarc/CodeNarc/issues/444): **FieldTypeRequired**: Fix duplicate violations. - [#256](https://redirect.github.com/CodeNarc/CodeNarc/issues/256): **JUnitPublicField**: Added support for skipping fields with fully-qualified [@org](https://redirect.github.com/org).junit.Rule and [@org](https://redirect.github.com/org).junit.ClassRule annotations. Groovy 3.x Compatibility - [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix "IllegalAccessError: null from ClosureAsLastMethodParameterRule". **AbstractMethodCallExpressionVisitor**: Changed `visitEmptyStatement()` to public. - [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix "The variable \[xx] is declared final but is reassigned" errors w/Groovy 3. Fixed **CompileStaticRuleTest**. - [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix "attempting to assign weaker access privileges; was public" errors: **AbstractFieldVisitor**, **AbstractMethodCallExpressionVisitor**, **AbstractMethodVisitor**. - [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix **SpaceAroundMapEntryColonRule** "StringIndexOutOfBoundsException" errors w/Groovy 3. - [#432](https://redirect.github.com/CodeNarc/CodeNarc/issues/432): Fix **ClosureStatementOnOpeningLineOfMultipleLineClosureRule** "MissingPropertyException: No such property: statements for class: org.codehaus.groovy.ast.stmt.ExpressionStatement" - [#423](https://redirect.github.com/CodeNarc/CodeNarc/issues/423): **UnnecessaryPublicModifierAstVisitor** and **AstUtil**. Resolves [#414](https://redirect.github.com/CodeNarc/CodeNarc/issues/414). (philippkrauss) Framework and Infrastructure - [#448](https://redirect.github.com/CodeNarc/CodeNarc/issues/448): Switch from groovy-all dependency to individual groovy component jars. Make GMetrics dependency transitive:false. - [#442](https://redirect.github.com/CodeNarc/CodeNarc/issues/442): Move web site (online docs) from Sourceforge to GitHub. - [#441](https://redirect.github.com/CodeNarc/CodeNarc/issues/441): Enable CodeNarc Ant Task to optionally fail for Groovy compile errors on source files. Add *failOnError* property to the Ant Task, defaults to *false*. - [#445](https://redirect.github.com/CodeNarc/CodeNarc/issues/445): Support `@SuppressWarnings("all")` and `@SuppressWarnings("CodeNarc")`. - [#429](https://redirect.github.com/CodeNarc/CodeNarc/issues/429): Normalize line endings to LF. (Marcin Erdmann) - [#421](https://redirect.github.com/CodeNarc/CodeNarc/issues/421): Update to gradle 5.4.1, Only sign on uploadArchives. (Leonard Brünings) - [#436](https://redirect.github.com/CodeNarc/CodeNarc/issues/436): Remove unnecessary CodeNarc logging. ### [`v1.4`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-14-May-2019) New Rules - [#418](https://redirect.github.com/CodeNarc/CodeNarc/issues/418): New **CompileStatic** convention rule enforces all classes are annotated with [@CompileStatic](https://redirect.github.com/CompileStatic), [@GrailsCompileStatic](https://redirect.github.com/GrailsCompileStatic) or [@CompileDynamic](https://redirect.github.com/CompileDynamic) annotations. (Sudhir Nimavat) - [#420](https://redirect.github.com/CodeNarc/CodeNarc/issues/420): New **JavadocMissingParamDescription** rule (comments). Checks for missing description within [@param](https://redirect.github.com/param) javadoc tags. - [#420](https://redirect.github.com/CodeNarc/CodeNarc/issues/420): New **JavadocMissingThrowsDescription** rule (comments). Checks for missing description within [@throws](https://redirect.github.com/throws) javadoc tags. - [#420](https://redirect.github.com/CodeNarc/CodeNarc/issues/420): New **JavadocMissingExceptionDescription** rule (comments). Checks for missing description within [@exception](https://redirect.github.com/exception) javadoc tags. Updated/Enhanced Rules and Bug Fixes - [#402](https://redirect.github.com/CodeNarc/CodeNarc/issues/402): **ClosureAsLastMethodParameter** rule: fix typo in violation message. (Marcin Erdmann) - [#397](https://redirect.github.com/CodeNarc/CodeNarc/issues/397): **ClassStartsWithBlankLine** and **ClassEndsWithBlankLine** rules - Fix failure when analysing code which consists of only a semicolon. (Marcin Erdmann) - [#405](https://redirect.github.com/CodeNarc/CodeNarc/issues/405): **UnnecessaryGetter** rule: Add `ignoreMethodNames` property. (Marcin Erdmann) - [#408](https://redirect.github.com/CodeNarc/CodeNarc/issues/408): Fix a typo in **ClosureAsLastMethodParameter** rule's violation message. Fixes [#402](https://redirect.github.com/CodeNarc/CodeNarc/issues/402). (Marcin Erdmann) - [#410](https://redirect.github.com/CodeNarc/CodeNarc/issues/410): **IndentationRule**: Fix NPE on GStrings containing an if-statement. (debanne) - [#398](https://redirect.github.com/CodeNarc/CodeNarc/issues/398): **ClassStartsWithBlankLine** and **ClassEndsWithBlankLine** rules: Ignore Script classes. - [#399](https://redirect.github.com/CodeNarc/CodeNarc/issues/399): **AssignCollectionUnique** rule: Fix false positive for `unique(false)`, `unique(false, Comparator)` and `unique(false, Closure)`. - [#400](https://redirect.github.com/CodeNarc/CodeNarc/issues/400): Update online documentation to reflect that ruleset file URLs can optionally be URL-encoded. - [#415](https://redirect.github.com/CodeNarc/CodeNarc/issues/415): **ClassStartsWithBlankLine**: Add *ignoreInnerClasses* boolean flag. - [#416](https://redirect.github.com/CodeNarc/CodeNarc/issues/416): **ClassEndsWithBlankLine**: Add *ignoreInnerClasses* boolean flag. - [#401](https://redirect.github.com/CodeNarc/CodeNarc/issues/401): Fix false-negative in ClosureAsLastMethodParameter (method call within GString). - [#419](https://redirect.github.com/CodeNarc/CodeNarc/issues/419): **IndentationRule**: Ignore List expressions. - [#417](https://redirect.github.com/CodeNarc/CodeNarc/issues/417): **UnnecessaryGetter**: Add *checkIsMethods* property and then also check `is*` methods if true. \[NOTE: May introduce new violations; set *checkIsMethods=false* to revert new behavior] Tests and Documentation - [#411](https://redirect.github.com/CodeNarc/CodeNarc/issues/411): Consistent indentation on IndentationRuleTest.groovy. (debanne) Framework and Infrastructure - [#404](https://redirect.github.com/CodeNarc/CodeNarc/issues/404): Update Maven repository URL to use HTTPS. Fixes [#403](https://redirect.github.com/CodeNarc/CodeNarc/issues/403). (Jenn Strater) ### [`v1.3`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-13-Jan-2019) New Rules (and new "comments" ruleset) - [#359](https://redirect.github.com/CodeNarc/CodeNarc/issues/359): **ClassEndsWithBlankLine** rule (formatting) - Check whether the class ends with a blank line. (David Ausín) - [#362](https://redirect.github.com/CodeNarc/CodeNarc/issues/362): **ClassStartsWithBlankLine** rule (formatting) - Check whether the class starts with a blank line. (David Ausín) - [#377](https://redirect.github.com/CodeNarc/CodeNarc/issues/377): **ExplicitCallToPutAtMethod** rule - Detects when the `map.putAt(k, v)` method is called directly rather than using `map[k] = v`. - [#385](https://redirect.github.com/CodeNarc/CodeNarc/issues/385): **JavadocEmptyFirstLine** rule (comments) - Check for javadoc comments with an empty top line. - [#386](https://redirect.github.com/CodeNarc/CodeNarc/issues/386): **JavadocEmptyLastLine** rule (comments) - Check for javadoc comments with an empty line at the bottom. - [#387](https://redirect.github.com/CodeNarc/CodeNarc/issues/387): **JavadocConsecutiveEmptyLines** rule (comments) - Checks for javadoc comments with more than one consecutive empty line. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptySeeTag** rule (comments) - Checks for empty [@see](https://redirect.github.com/see) tags within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyParamTag** rule (comments) - Checks for empty [@param](https://redirect.github.com/param) tags within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyReturnTag** rule (comments) - Checks for empty [@return](https://redirect.github.com/return) tags within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyThrowsTag** rule (comments) - Checks for empty [@throws](https://redirect.github.com/throws) tag within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyExceptionTag** rule (comments) - Checks for empty [@exception](https://redirect.github.com/exception) tag within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyAuthorTag** rule (comments) - Checks for empty [@author](https://redirect.github.com/author) tags within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptySinceTag** rule (comments) - Checks for empty [@since](https://redirect.github.com/since) tags within javadoc. - [#389](https://redirect.github.com/CodeNarc/CodeNarc/issues/389): **JavadocEmptyVersionTag** rule (comments) - Checks for empty [@version](https://redirect.github.com/version) tags within javadoc. Updated/Enhanced Rules and Bug Fixes - [#388](https://redirect.github.com/CodeNarc/CodeNarc/issues/388): **ClassJavadoc** rule: Moved from the "formatting" ruleset into the new "comments" ruleset. \[BREAKING CHANGE] - [#364](https://redirect.github.com/CodeNarc/CodeNarc/issues/364): **UnnecessarySetter** rule: Fix StringIndexOutOfBoundsException for single-letter property names (e.g. account.setE(3)). - [#363](https://redirect.github.com/CodeNarc/CodeNarc/issues/363): **CouldBeSwitchStatement** rule: Fix the false positive that occurs when if statements are in different methods of the same class. (Jenn Strater) - [#360](https://redirect.github.com/CodeNarc/CodeNarc/issues/360): **NoWildcardImports** rule: Add a configuration option to ignore non-static imports. (Jenn Strater) - [#357](https://redirect.github.com/CodeNarc/CodeNarc/issues/357): **PrivateFieldCouldBeFinal** rule: Fix the fasle positive that occurs when a field is marked with the Lazy annotation. (Jenn Strater) - [#372](https://redirect.github.com/CodeNarc/CodeNarc/issues/372): **UnnecessaryGetter** rule: Also handle the "Spy" Spock method. (Boris Petrov) - [#383](https://redirect.github.com/CodeNarc/CodeNarc/issues/383): **DuplicateImport** rule: Fix handling of imports with non-English characters. - [#381](https://redirect.github.com/CodeNarc/CodeNarc/issues/381): **CloseWithoutCloseable** rule: Skip classes implementing Autocloseable. (Mitch Sans Souci) - [#384](https://redirect.github.com/CodeNarc/CodeNarc/issues/384): **JUnitLostTest** rule: ignore abstract test methods. - [#269](https://redirect.github.com/CodeNarc/CodeNarc/issues/269): Enhanced the "compilation failed" error message to also include the exception that caused it. - [#380](https://redirect.github.com/CodeNarc/CodeNarc/issues/380): **JUnitAssertEqualsConstantActualValue** rule: Fix NoClassDefFoundError when JUnit not on the classpath. - [#376](https://redirect.github.com/CodeNarc/CodeNarc/issues/376): **BracesForMethod** rule: Fix false positive when methods have annotations followed by comment lines. - [#395](https://redirect.github.com/CodeNarc/CodeNarc/issues/395): **Indentation** rule: Fix false positive when constructor is called in a script method for a class declared in the script ifself. (René Scheibe). - [#374](https://redirect.github.com/CodeNarc/CodeNarc/issues/374): **TrailingComma** rule. Ignore lists/maps with single elements. Add *ignoreSingleElementList* and *ignoreSingleElementMap*. default to true. Framework and Infrastructure - [#390](https://redirect.github.com/CodeNarc/CodeNarc/issues/390): CodeNarc command-line: Support `maxPriorityXViolations` command-line arguments. - [#391](https://redirect.github.com/CodeNarc/CodeNarc/issues/391): Fix line endings in codenarc.groovy to enable running the script via `./codenarc.groovy` in Linux. (René Scheibe) - [#392](https://redirect.github.com/CodeNarc/CodeNarc/issues/392): Fix compilation of Groovy class in incorrect folder. (René Scheibe) - [#393](https://redirect.github.com/CodeNarc/CodeNarc/issues/393): Remove obsolete Java placeholder file. (René Scheibe) ### [`v1.2.1`](https://redirect.github.com/CodeNarc/CodeNarc/blob/HEAD/CHANGELOG.md#Version-121-Aug-2018) Bug Fixes - [#310](https://redirect.github.com/CodeNarc/CodeNarc/issues/310): **Indentation** rule: Fix handling of indent level within scripts and method call chaining. - [#355](https://redirect.github.com/CodeNarc/CodeNarc/issues/355): **Indentation** rule: Spock labels on if stmt throw MissingPropertyException: No such property: expression. - [#351](https://redirect.github.com/CodeNarc/CodeNarc/issues/351): **GrailsStatelessService** rule: Add `grailsApplication` to the default ignored fields. (Donald Oellerich) - [#354](https://redirect.github.com/CodeNarc/CodeNarc/issues/354): **JUnitPublicField** rule: Also ignore [@ClassRule](https://redirect.github.com/ClassRule). (Daniel Spilker) - [#348](https://redirect.github.com/CodeNarc/CodeNarc/issues/348): **SpaceAroundOperator** rule: Fix false-positive for annotated lines. Known limitation: Does not catch violations of missing space around the equals operator (=) for fields initialization if the field is annotated. - [#349](https://redirect.github.com/CodeNarc/CodeNarc/issues/349): **NoJavaUtilDate** rule: Ignore `new Date()` if the class imports another `Date` class.