Class SiteUtil
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.site.SiteUtil
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
SiteUtil.DescriptionExtractor
Utility class for extracting description from a method's Javadoc.
-
Field Summary
Fields Modifier and Type Field Description private static String
CHARSET
The string 'charset'.private static Set<String>
CHECK_PROPERTIES
Set of properties that every check has.private static String
CHECKS
The string 'checks'.private static String
CHECKSTYLE_ORG_URL
The url of the checkstyle website.private static Map<Class<?>,String>
CLASS_TO_PARENT_MODULE
Class name and their corresponding parent module name.static String
COMMA_SPACE
The string ', '.private static String
CURLY_BRACKETS
The string '{}'.static String
DOT
The string '.'.private static String
FILE_EXTENSIONS
The string 'fileExtensions'.private static Set<String>
FILESET_PROPERTIES
Set of properties that every FileSet check has.private static String
HEADER_CHECK_HEADER
Check and property name.private static Set<String>
JAVADOC_CHECK_PROPERTIES
Set of properties that every Javadoc check has.static String
JAVADOC_TOKENS
The string 'javadocTokens'.private static String
MAIN_FOLDER_PATH
Path to main source code folder.private static List<File>
MODULE_SUPER_CLASS_FILES
List of files who are superclasses and contain certain properties that checks inherit.private static String
NAMING
The string 'naming'.static String
PATH_TO_JAVADOC_TOKEN_TYPES
The path to the JavadocTokenTypes.html file.static String
PATH_TO_TOKEN_TYPES
The path to the TokenTypes.html file.private static Set<String>
PROPERTIES_ALLOWED_GET_TYPES_FROM_METHOD
Properties that can not be gathered from class instance.private static String
REGEXP_HEADER_CHECK_HEADER
Check and property name.private static Pattern
SETTER_PATTERN
Precompiled regex pattern to remove the "Setter to " prefix from strings.private static Map<String,String>
SINCE_VERSION_FOR_INHERITED_PROPERTY
Map of properties whose since version is different from module version but are not specified in code because they are inherited from their super class(es).private static String
SRC
The string 'src'.private static Map<String,DetailNode>
SUPER_CLASS_PROPERTIES_JAVADOCS
Map of all superclasses properties and their javadocs.static String
TOKEN_TYPES
The string 'TokenTypes'.static String
TOKENS
The string 'tokens'.private static Set<String>
UNDOCUMENTED_PROPERTIES
Set of properties that are undocumented.private static String
VERSION_3_0
Frequent version.private static String
VERSION_3_2
Frequent version.private static String
VERSION_3_4
Frequent version.private static String
VERSION_5_0
Frequent version.private static String
VERSION_5_1
Frequent version.private static String
VERSION_5_7
Frequent version.private static String
VERSION_6_9
Frequent version.private static String
VERSION_7_7
Frequent version.private static String
VERSION_8_24
Frequent version.private static String
VERSION_8_36
Frequent version.
-
Constructor Summary
Constructors Modifier Constructor Description private
SiteUtil()
Private utility constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static void
assertAllPropertySetterJavadocsAreFound(Set<String> properties, String moduleName, Map<String,DetailNode> javadocs)
Assert that each property has a corresponding setter javadoc that is not null.private static Set<Field>
getCheckMessageKeys(Class<?> module)
Gets the check's messages keys.static String
getDefaultValue(String propertyName, Field field, Object classInstance, String moduleName)
Get the default value of the property.static List<Integer>
getDifference(int[] tokens, int... subtractions)
Get the difference between two lists of tokens.static Field
getField(Class<?> fieldClass, String propertyName)
Gets the field with the given name from the given class.private static Class<?>
getFieldClass(Field field, String propertyName, String moduleName, Object instance)
Gets the class of the given field.static Object
getFieldValue(Field field, Object instance)
Returns the value of the given field.private static String
getIntArrayPropertyValue(Object value)
Returns the name of the bean property's default value for the int array class.private static IntStream
getIntStream(Object value)
Get the int stream from the given value.static String
getLinkToDocument(String moduleName, String document)
Constructs string with relative link to the provided document.static Set<String>
getMessageKeys(Class<?> module)
Get string values of the message keys from the given check class.static Object
getModuleInstance(String moduleName)
Returns the instance of the module with the given name.static String
getNewlineAndIndentSpaces(int amountOfSpaces)
Construct a string with a leading newline character and followed by the given amount of spaces.private static Set<String>
getNonExplicitProperties(Object instance, Class<?> clss)
Gets properties that are not explicitly captured but should be documented if certain conditions are met.private static PackageObjectFactory
getPackageObjectFactory()
Returns the default PackageObjectFactory with the default package names.static String
getParentModule(Class<?> moduleClass)
Returns the parent module name for the given module class.private static String
getPatternArrayPropertyValue(Object fieldValue)
Gets the name of the bean property's default value for the Pattern array class.static Set<String>
getProperties(Class<?> clss)
Get a set of properties for the given class.static Set<String>
getPropertiesForDocumentation(Class<?> clss, Object instance)
Get a set of properties for the given class that should be documented.static Map<String,DetailNode>
getPropertiesJavadocs(Set<String> properties, String moduleName, File moduleFile)
Get the javadocs of the properties of the module.static Class<?>
getPropertyClass(String propertyName, Object instance)
Gets the class of the given java property.static String
getPropertyDescription(String propertyName, DetailNode javadoc, String moduleName)
Get the description of the property.private static DetailNode
getSinceJavadocTag(DetailNode javadoc)
Find the since Javadoc tag node in the given Javadoc.static String
getSinceVersion(String moduleName, DetailNode moduleJavadoc, String propertyName, DetailNode propertyJavadoc)
Get the since version of the property.private static String
getSinceVersionFromJavadoc(DetailNode javadoc)
Extract the since version from the Javadoc.private static String
getStringArrayPropertyValue(String propertyName, Object value)
Gets the name of the bean property's default value for the string array class.static Path
getTemplatePath(String moduleName)
Returns path to the template for the given module name or throws an exception if the template cannot be found.static String
getType(Field field, String propertyName, String moduleName, Object instance)
Get the type of the property.private static Stream<?>
getValuesStream(Object value)
Generates a stream of values from the given value.static Set<Path>
getXdocsTemplatesFilePaths()
Gets xdocs template file paths.private static boolean
isGlobalProperty(Class<?> clss, String propertyName)
Checks if the property is a global property.private static boolean
isUndocumentedProperty(Class<?> clss, String propertyName)
Checks if the property is supposed to be documented.private static void
processModule(String moduleName, File moduleFile)
Scrape the Javadocs of the class and its properties setters with ClassAndPropertiesSettersJavadocScraper.private static void
processSuperclasses()
Collect the properties setters javadocs of the superclasses.private static String
removeSquareBrackets(String value)
Removes square brackets [ and ] from the given string.
-
-
-
Field Detail
-
TOKENS
public static final String TOKENS
The string 'tokens'.- See Also:
- Constant Field Values
-
JAVADOC_TOKENS
public static final String JAVADOC_TOKENS
The string 'javadocTokens'.- See Also:
- Constant Field Values
-
DOT
public static final String DOT
The string '.'.- See Also:
- Constant Field Values
-
COMMA_SPACE
public static final String COMMA_SPACE
The string ', '.- See Also:
- Constant Field Values
-
TOKEN_TYPES
public static final String TOKEN_TYPES
The string 'TokenTypes'.- See Also:
- Constant Field Values
-
PATH_TO_TOKEN_TYPES
public static final String PATH_TO_TOKEN_TYPES
The path to the TokenTypes.html file.- See Also:
- Constant Field Values
-
PATH_TO_JAVADOC_TOKEN_TYPES
public static final String PATH_TO_JAVADOC_TOKEN_TYPES
The path to the JavadocTokenTypes.html file.- See Also:
- Constant Field Values
-
CHECKSTYLE_ORG_URL
private static final String CHECKSTYLE_ORG_URL
The url of the checkstyle website.- See Also:
- Constant Field Values
-
CHARSET
private static final String CHARSET
The string 'charset'.- See Also:
- Constant Field Values
-
CURLY_BRACKETS
private static final String CURLY_BRACKETS
The string '{}'.- See Also:
- Constant Field Values
-
FILE_EXTENSIONS
private static final String FILE_EXTENSIONS
The string 'fileExtensions'.- See Also:
- Constant Field Values
-
CHECKS
private static final String CHECKS
The string 'checks'.- See Also:
- Constant Field Values
-
NAMING
private static final String NAMING
The string 'naming'.- See Also:
- Constant Field Values
-
SRC
private static final String SRC
The string 'src'.- See Also:
- Constant Field Values
-
SETTER_PATTERN
private static final Pattern SETTER_PATTERN
Precompiled regex pattern to remove the "Setter to " prefix from strings.
-
CLASS_TO_PARENT_MODULE
private static final Map<Class<?>,String> CLASS_TO_PARENT_MODULE
Class name and their corresponding parent module name.
-
CHECK_PROPERTIES
private static final Set<String> CHECK_PROPERTIES
Set of properties that every check has.
-
JAVADOC_CHECK_PROPERTIES
private static final Set<String> JAVADOC_CHECK_PROPERTIES
Set of properties that every Javadoc check has.
-
FILESET_PROPERTIES
private static final Set<String> FILESET_PROPERTIES
Set of properties that every FileSet check has.
-
HEADER_CHECK_HEADER
private static final String HEADER_CHECK_HEADER
Check and property name.- See Also:
- Constant Field Values
-
REGEXP_HEADER_CHECK_HEADER
private static final String REGEXP_HEADER_CHECK_HEADER
Check and property name.- See Also:
- Constant Field Values
-
UNDOCUMENTED_PROPERTIES
private static final Set<String> UNDOCUMENTED_PROPERTIES
Set of properties that are undocumented. Those are internal properties.
-
PROPERTIES_ALLOWED_GET_TYPES_FROM_METHOD
private static final Set<String> PROPERTIES_ALLOWED_GET_TYPES_FROM_METHOD
Properties that can not be gathered from class instance.
-
VERSION_6_9
private static final String VERSION_6_9
Frequent version.- See Also:
- Constant Field Values
-
VERSION_5_0
private static final String VERSION_5_0
Frequent version.- See Also:
- Constant Field Values
-
VERSION_3_2
private static final String VERSION_3_2
Frequent version.- See Also:
- Constant Field Values
-
VERSION_8_24
private static final String VERSION_8_24
Frequent version.- See Also:
- Constant Field Values
-
VERSION_8_36
private static final String VERSION_8_36
Frequent version.- See Also:
- Constant Field Values
-
VERSION_3_0
private static final String VERSION_3_0
Frequent version.- See Also:
- Constant Field Values
-
VERSION_7_7
private static final String VERSION_7_7
Frequent version.- See Also:
- Constant Field Values
-
VERSION_5_7
private static final String VERSION_5_7
Frequent version.- See Also:
- Constant Field Values
-
VERSION_5_1
private static final String VERSION_5_1
Frequent version.- See Also:
- Constant Field Values
-
VERSION_3_4
private static final String VERSION_3_4
Frequent version.- See Also:
- Constant Field Values
-
SINCE_VERSION_FOR_INHERITED_PROPERTY
private static final Map<String,String> SINCE_VERSION_FOR_INHERITED_PROPERTY
Map of properties whose since version is different from module version but are not specified in code because they are inherited from their super class(es). Until #14052.
-
SUPER_CLASS_PROPERTIES_JAVADOCS
private static final Map<String,DetailNode> SUPER_CLASS_PROPERTIES_JAVADOCS
Map of all superclasses properties and their javadocs.
-
MAIN_FOLDER_PATH
private static final String MAIN_FOLDER_PATH
Path to main source code folder.
-
MODULE_SUPER_CLASS_FILES
private static final List<File> MODULE_SUPER_CLASS_FILES
List of files who are superclasses and contain certain properties that checks inherit.
-
-
Constructor Detail
-
SiteUtil
private SiteUtil()
Private utility constructor.
-
-
Method Detail
-
getMessageKeys
public static Set<String> getMessageKeys(Class<?> module) throws org.apache.maven.doxia.macro.MacroExecutionException
Get string values of the message keys from the given check class.- Parameters:
module
- class to examine.- Returns:
- a set of checkstyle's module message keys.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if extraction of message keys fails.
-
getCheckMessageKeys
private static Set<Field> getCheckMessageKeys(Class<?> module) throws org.apache.maven.doxia.macro.MacroExecutionException
Gets the check's messages keys.- Parameters:
module
- class to examine.- Returns:
- a set of checkstyle's module message fields.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the attempt to read a protected class fails.
-
getFieldValue
public static Object getFieldValue(Field field, Object instance) throws org.apache.maven.doxia.macro.MacroExecutionException
Returns the value of the given field.- Parameters:
field
- the field.instance
- the instance of the module.- Returns:
- the value of the field.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the value could not be retrieved.
-
getModuleInstance
public static Object getModuleInstance(String moduleName) throws org.apache.maven.doxia.macro.MacroExecutionException
Returns the instance of the module with the given name.- Parameters:
moduleName
- the name of the module.- Returns:
- the instance of the module.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the module could not be created.
-
getPackageObjectFactory
private static PackageObjectFactory getPackageObjectFactory() throws org.apache.maven.doxia.macro.MacroExecutionException
Returns the default PackageObjectFactory with the default package names.- Returns:
- the default PackageObjectFactory.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the PackageObjectFactory cannot be created.
-
getNewlineAndIndentSpaces
public static String getNewlineAndIndentSpaces(int amountOfSpaces)
Construct a string with a leading newline character and followed by the given amount of spaces. We use this method only to match indentation in regular xdocs and have minimal diff when parsing the templates. This method exists until 13426- Parameters:
amountOfSpaces
- the amount of spaces to add after the newline.- Returns:
- the constructed string.
-
getTemplatePath
public static Path getTemplatePath(String moduleName) throws org.apache.maven.doxia.macro.MacroExecutionException
Returns path to the template for the given module name or throws an exception if the template cannot be found.- Parameters:
moduleName
- the module whose template we are looking for.- Returns:
- path to the template.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the template cannot be found.
-
getXdocsTemplatesFilePaths
public static Set<Path> getXdocsTemplatesFilePaths() throws org.apache.maven.doxia.macro.MacroExecutionException
Gets xdocs template file paths. These are files ending with .xml.template. This method will be changed to gather .xml once #13426 is resolved.- Returns:
- a set of xdocs template file paths.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an I/O error occurs.
-
getParentModule
public static String getParentModule(Class<?> moduleClass) throws org.apache.maven.doxia.macro.MacroExecutionException
Returns the parent module name for the given module class. Returns either "TreeWalker" or "Checker". Returns null if the module class is null.- Parameters:
moduleClass
- the module class.- Returns:
- the parent module name as a string.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the parent module cannot be found.
-
getPropertiesForDocumentation
public static Set<String> getPropertiesForDocumentation(Class<?> clss, Object instance)
Get a set of properties for the given class that should be documented.- Parameters:
clss
- the class to get the properties for.instance
- the instance of the module.- Returns:
- a set of properties for the given class.
-
getPropertiesJavadocs
public static Map<String,DetailNode> getPropertiesJavadocs(Set<String> properties, String moduleName, File moduleFile) throws org.apache.maven.doxia.macro.MacroExecutionException
Get the javadocs of the properties of the module. If the property is not present in the module, then the javadoc of the property from the superclass(es) is used.- Parameters:
properties
- the properties of the module.moduleName
- the name of the module.moduleFile
- the module file.- Returns:
- the javadocs of the properties of the module.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during processing.
-
assertAllPropertySetterJavadocsAreFound
private static void assertAllPropertySetterJavadocsAreFound(Set<String> properties, String moduleName, Map<String,DetailNode> javadocs) throws org.apache.maven.doxia.macro.MacroExecutionException
Assert that each property has a corresponding setter javadoc that is not null. 'tokens' and 'javadocTokens' are excluded from this check, because their description is different from the description of the setter.- Parameters:
properties
- the properties of the module.moduleName
- the name of the module.javadocs
- the javadocs of the properties of the module.- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during processing.
-
processSuperclasses
private static void processSuperclasses() throws org.apache.maven.doxia.macro.MacroExecutionException
Collect the properties setters javadocs of the superclasses.- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during processing.
-
processModule
private static void processModule(String moduleName, File moduleFile) throws org.apache.maven.doxia.macro.MacroExecutionException
Scrape the Javadocs of the class and its properties setters with ClassAndPropertiesSettersJavadocScraper.- Parameters:
moduleName
- the name of the module.moduleFile
- the module file.- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during processing.
-
getProperties
public static Set<String> getProperties(Class<?> clss)
Get a set of properties for the given class.- Parameters:
clss
- the class to get the properties for.- Returns:
- a set of properties for the given class.
-
isGlobalProperty
private static boolean isGlobalProperty(Class<?> clss, String propertyName)
Checks if the property is a global property. Global properties come from the base classes and are common to all checks. For example id, severity, tabWidth, etc.- Parameters:
clss
- the class of the module.propertyName
- the name of the property.- Returns:
- true if the property is a global property.
-
isUndocumentedProperty
private static boolean isUndocumentedProperty(Class<?> clss, String propertyName)
Checks if the property is supposed to be documented.- Parameters:
clss
- the class of the module.propertyName
- the name of the property.- Returns:
- true if the property is supposed to be documented.
-
getNonExplicitProperties
private static Set<String> getNonExplicitProperties(Object instance, Class<?> clss)
Gets properties that are not explicitly captured but should be documented if certain conditions are met.- Parameters:
instance
- the instance of the module.clss
- the class of the module.- Returns:
- the non explicit properties.
-
getPropertyDescription
public static String getPropertyDescription(String propertyName, DetailNode javadoc, String moduleName) throws org.apache.maven.doxia.macro.MacroExecutionException
Get the description of the property.- Parameters:
propertyName
- the name of the property.javadoc
- the Javadoc of the property setter method.moduleName
- the name of the module.- Returns:
- the description of the property.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the description could not be extracted.
-
getSinceVersion
public static String getSinceVersion(String moduleName, DetailNode moduleJavadoc, String propertyName, DetailNode propertyJavadoc) throws org.apache.maven.doxia.macro.MacroExecutionException
Get the since version of the property.- Parameters:
moduleName
- the name of the module.moduleJavadoc
- the Javadoc of the module.propertyName
- the name of the property.propertyJavadoc
- the Javadoc of the property setter method.- Returns:
- the since version of the property.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if the since version could not be extracted.
-
getSinceVersionFromJavadoc
@Nullable private static String getSinceVersionFromJavadoc(DetailNode javadoc)
Extract the since version from the Javadoc.- Parameters:
javadoc
- the Javadoc to extract the since version from.- Returns:
- the since version of the setter.
-
getSinceJavadocTag
private static DetailNode getSinceJavadocTag(DetailNode javadoc)
Find the since Javadoc tag node in the given Javadoc.- Parameters:
javadoc
- the Javadoc to search.- Returns:
- the since Javadoc tag node or null if not found.
-
getType
public static String getType(Field field, String propertyName, String moduleName, Object instance) throws org.apache.maven.doxia.macro.MacroExecutionException
Get the type of the property.- Parameters:
field
- the field to get the type of.propertyName
- the name of the property.moduleName
- the name of the module.instance
- the instance of the module.- Returns:
- the type of the property.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during getting the type.
-
getDefaultValue
public static String getDefaultValue(String propertyName, Field field, Object classInstance, String moduleName) throws org.apache.maven.doxia.macro.MacroExecutionException
Get the default value of the property.- Parameters:
propertyName
- the name of the property.field
- the field to get the default value of.classInstance
- the instance of the class to get the default value of.moduleName
- the name of the module.- Returns:
- the default value of the property.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during getting the default value.
-
getPatternArrayPropertyValue
private static String getPatternArrayPropertyValue(Object fieldValue)
Gets the name of the bean property's default value for the Pattern array class.- Parameters:
fieldValue
- The bean property's value- Returns:
- String form of property's default value
-
removeSquareBrackets
private static String removeSquareBrackets(String value)
Removes square brackets [ and ] from the given string.- Parameters:
value
- the string to remove square brackets from.- Returns:
- the string without square brackets.
-
getStringArrayPropertyValue
private static String getStringArrayPropertyValue(String propertyName, Object value)
Gets the name of the bean property's default value for the string array class.- Parameters:
propertyName
- The bean property's namevalue
- The bean property's value- Returns:
- String form of property's default value
-
getValuesStream
private static Stream<?> getValuesStream(Object value)
Generates a stream of values from the given value.- Parameters:
value
- the value to generate the stream from.- Returns:
- the stream of values.
-
getIntArrayPropertyValue
private static String getIntArrayPropertyValue(Object value)
Returns the name of the bean property's default value for the int array class.- Parameters:
value
- The bean property's value.- Returns:
- String form of property's default value.
-
getIntStream
private static IntStream getIntStream(Object value)
Get the int stream from the given value.- Parameters:
value
- the value to get the int stream from.- Returns:
- the int stream.
-
getFieldClass
private static Class<?> getFieldClass(Field field, String propertyName, String moduleName, Object instance) throws org.apache.maven.doxia.macro.MacroExecutionException
Gets the class of the given field.- Parameters:
field
- the field to get the class of.propertyName
- the name of the property.moduleName
- the name of the module.instance
- the instance of the module.- Returns:
- the class of the field.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during getting the class.
-
getPropertyClass
public static Class<?> getPropertyClass(String propertyName, Object instance) throws org.apache.maven.doxia.macro.MacroExecutionException
Gets the class of the given java property.- Parameters:
propertyName
- the name of the property.instance
- the instance of the module.- Returns:
- the class of the java property.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if an error occurs during getting the class.
-
getDifference
public static List<Integer> getDifference(int[] tokens, int... subtractions)
Get the difference between two lists of tokens.- Parameters:
tokens
- the list of tokens to remove from.subtractions
- the tokens to remove.- Returns:
- the difference between the two lists.
-
getField
public static Field getField(Class<?> fieldClass, String propertyName)
Gets the field with the given name from the given class.- Parameters:
fieldClass
- the class to get the field from.propertyName
- the name of the field.- Returns:
- the field we are looking for.
-
getLinkToDocument
public static String getLinkToDocument(String moduleName, String document) throws org.apache.maven.doxia.macro.MacroExecutionException
Constructs string with relative link to the provided document.- Parameters:
moduleName
- the name of the module.document
- the path of the document.- Returns:
- relative link to the document.
- Throws:
org.apache.maven.doxia.macro.MacroExecutionException
- if link to the document cannot be constructed.
-
-