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
  • Field Details

    • MSG_KEY

      public static final String MSG_KEY
      Localization key for check violation.
      See Also:
    • MSG_IO_EXCEPTION_KEY

      public static final String MSG_IO_EXCEPTION_KEY
      Localization key for IO exception occurred on file open.
      See Also:
    • SPACE_PATTERN

      private static final Pattern SPACE_PATTERN
      Pattern matching single space.
  • Constructor Details

    • UniquePropertiesCheck

      public UniquePropertiesCheck()
      Construct the check with default values.
  • Method Details

    • processFiltered

      protected void processFiltered(File file, FileText fileText)
      Description copied from class: AbstractFileSetCheck
      Called to process a file that matches the specified file extensions.
      Specified by:
      processFiltered in class AbstractFileSetCheck
      Parameters:
      file - the file to be processed
      fileText - the contents of the file.
    • 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