Skip to content

New Check NoArrayTrailingComma #6971

@Vampire

Description

@Vampire

Followup 1 to #6469

Imho it looks strange to have a trailing comma, so I'd rather like to be able to check that no trailing comma is ever used. This will be directly competing with ArrayTrailingComma.

Examples:

String[] foo1 = {
  "FOO", // OK
  "BAR", // violation
};
String[] foo2 = { "FOO", "BAR", }; // violation
String[] foo3 = {
  "FOO", // OK
  "BAR" // OK
};
String[] foo4 = { "FOO", "BAR" }; // OK

Current Work-Around only for arrays:

<module name="IllegalToken">
    <property name="id" value="trailingArrayComma"/>
    <property name="tokens" value="COMMA"/>
    <message key="illegal.token" value="Do not use trailing array comma."/>
</module>
<module name="SuppressionXpathSingleFilter">
    <property name="id" value="trailingArrayComma"/>
    <property name="query" value="(
                                      //ARRAY_INIT/*[self::COMMA and not(position() = (last() - 1))],
                                      //COMMA[not(parent::ARRAY_INIT)]
                                  )"/>
</module>

Current Work-Around for arrays and enums:

<module name="IllegalToken">
    <property name="id" value="trailingComma"/>
    <property name="tokens" value="COMMA"/>
    <message key="illegal.token" value="Do not use trailing comma."/>
</module>
<module name="SuppressionXpathSingleFilter">
    <property name="id" value="trailingComma"/>
    <property name="query" value="(
                                      //ARRAY_INIT/*[self::COMMA and not(position() = (last() - 1))],
                                      //ENUM_DEF/OBJBLOCK/*[self::COMMA and not(position() = (last() - 1))],
                                      //COMMA[not(parent::ARRAY_INIT or parent::OBJBLOCK/parent::ENUM_DEF)]
                                  )"/>
</module>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions