Class UniquePropertiesCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable, FileSetCheck

    public class UniquePropertiesCheck
    extends AbstractFileSetCheck

    Detects duplicated keys in properties files.

    Rationale: Multiple property keys usually appear after merge or rebase of several branches. While there are no problems in runtime, there can be a confusion due to having different values for the duplicated properties.

    • Property fileExtensions - Specify file type extension of the files to check. Type is java.lang.String[]. Default value is .properties.

    To configure the check:

     <module name="UniqueProperties"/>
     

    Example: in foo.properties file

     key.one=44
     key.two=32 // OK
     key.one=54 // violation
     

    To configure the check to scan custom file extensions:

     <module name="UniqueProperties">
      <property name="fileExtensions" value="customProperties"/>
     </module>
     

    Example: in foo.customProperties file

     key.one=44
     key.two=32 // OK
     key.one=54 // violation
     

    Example: in foo.properties file

     key.one=44
     key.two=32 // OK
     key.one=54 // OK, file is not checked
     

    Parent is com.puppycrawl.tools.checkstyle.Checker

    Violation Message Keys:

    • properties.duplicate.property
    • unable.open.cause
    Since:
    5.7
    • Constructor Detail

    • Method Detail

      • getLineNumber

        private static int getLineNumber​(FileText fileText,
                                         String keyName)
        Method returns line number the key is detected in the checked properties files first.
        Parameters:
        fileText - FileText object contains the lines to process
        keyName - key name to look for
        Returns:
        line number of first occurrence. If no key found in properties file, 1 is returned
      • getKeyPattern

        private static Pattern getKeyPattern​(String keyName)
        Method returns regular expression pattern given key name.
        Parameters:
        keyName - key name to look for
        Returns:
        regular expression pattern given key name