Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/checkstyle-checks.xml
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,7 @@
</module>
<module name="MethodLength"/>
<module name="OuterTypeNumber"/>
<module name="ParameterNumber"/>
<module name="RecordComponentNumber"/>

<!-- Whitespace -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ public void addError(AuditEvent error) {
metaData = MetadataFactory.createGenericMetadata(module);
}

mMarkerAttributes.put(CheckstyleMarker.MODULE_NAME, metaData.getInternalName());
mMarkerAttributes.put(CheckstyleMarker.MODULE_NAME, metaData.identity().internalName());
mMarkerAttributes.put(CheckstyleMarker.MESSAGE_KEY,
error.getViolation().getKey());
String moduleId = error.getModuleId();
Expand Down Expand Up @@ -494,7 +494,7 @@ private String getMessage(AuditEvent error) {
if (moduleId == null) {
RuleMetadata metaData = MetadataFactory.getRuleMetadata(error.getSourceName());
if (metaData != null) {
moduleId = metaData.getInternalName();
moduleId = metaData.identity().internalName();
}
}

Expand Down Expand Up @@ -525,7 +525,7 @@ private String getRuleName(AuditEvent error) {
if (metaData == null) {
return Messages.Auditor_txtUnknownModule;
}
return metaData.getInternalName();
return metaData.identity().internalName();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ private static void writeModule(Module module, Branch parent, Severity parentSev

// Start the module
Element moduleEl = parent.addElement(XMLTags.MODULE_TAG);
moduleEl.addAttribute(XMLTags.NAME_TAG, module.getMetaData().getInternalName());
moduleEl.addAttribute(XMLTags.NAME_TAG, module.getMetaData().identity().internalName());

// Write comment
if (Strings.emptyToNull(module.getComment()) != null) {
Expand Down Expand Up @@ -235,8 +235,8 @@ private static List<Module> getChildModules(Module module, List<Module> remainin

for (Module tmp : remainingModules) {

String parentInternalName = module != null ? module.getMetaData().getInternalName() : null;
String childParent = tmp.getMetaData().getParentModule();
String parentInternalName = module != null ? module.getMetaData().identity().internalName() : null;
String childParent = tmp.getMetaData().identity().parent();

// only the checker module has no parent
if (parentInternalName == null && "Root".equals(childParent)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public Module(RuleMetadata metaData, boolean withDefaults) {
if (metaData != null) {

// create the properties according to the meta data
List<ConfigPropertyMetadata> propMetas = metaData.getPropertyMetadata();
List<ConfigPropertyMetadata> propMetas = metaData.configPropMetadata();
int size = propMetas != null ? propMetas.size() : 0;
for (int i = 0; i < size; i++) {

Expand All @@ -97,8 +97,8 @@ public Module(RuleMetadata metaData, boolean withDefaults) {
}
}

if (metaData.getDefaultSeverityLevel() != null) {
mSeverityLevel = metaData.getDefaultSeverityLevel();
if (metaData.defaultSeverity() != null) {
mSeverityLevel = metaData.defaultSeverity();
}
}
}
Expand All @@ -119,7 +119,7 @@ public Module(String name) {
* @return the name of the module
*/
public String getName() {
return mMetaData != null ? mMetaData.getRuleName() : mName;
return mMetaData != null ? mMetaData.identity().ruleName() : mName;
}

/**
Expand Down Expand Up @@ -228,7 +228,7 @@ public void setComment(String comment) {
public Severity getSeverity() {
if (mMetaData != null && mMetaData.hasSeverity()) {

return mSeverityLevel != null ? mSeverityLevel : getMetaData().getDefaultSeverityLevel();
return mSeverityLevel != null ? mSeverityLevel : getMetaData().defaultSeverity();
} else {
return null;
}
Expand Down Expand Up @@ -265,7 +265,7 @@ public void setSeverity(Severity severityLevel) {
Severity defaultLevel = null;

if (mMetaData != null && mMetaData.hasSeverity()) {
defaultLevel = getMetaData().getDefaultSeverityLevel();
defaultLevel = getMetaData().defaultSeverity();
} else if (mMetaData == null) {
defaultLevel = MetadataFactory.getDefaultSeverity();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,13 @@ public static RuleMetadata createGenericMetadata(Module module) {
}

RuleGroupMetadata otherGroup = getRuleGroupMetadata(XMLTags.OTHER_GROUP);
RuleMetadata ruleMeta = new RuleMetadata(module.getName(), module.getName(), parent,
MetadataFactory.getDefaultSeverity(), false, true, true, false, otherGroup);
RuleMetadata ruleMeta = new RuleMetadata(
new RuleIdentity(module.getName(), module.getName(), parent, otherGroup, null,
Collections.emptyList()),
MetadataFactory.getDefaultSeverity(), false, true, true, false, Collections.emptyList(),
Collections.emptyList());
module.setMetaData(ruleMeta);
sRuleMetadata.put(ruleMeta.getInternalName(), ruleMeta);
sRuleMetadata.put(ruleMeta.identity().internalName(), ruleMeta);

List<ConfigProperty> properties = module.getProperties();
int size = properties != null ? properties.size() : 0;
Expand Down Expand Up @@ -228,23 +231,25 @@ private static RuleMetadata createRuleMetadata(ModuleDetails moduleDetails) {
}
}
final String[] packageTokens = moduleDetails.getParent().split(DOT_PATTERN);
RuleMetadata ruleMeta = new RuleMetadata(moduleDetails.getName(), moduleDetails.getName(),
packageTokens[packageTokens.length - 1], MetadataFactory.getDefaultSeverity(),
false, true, true, false, group);
ruleMeta.setDescription(moduleDetails.getDescription());

var altName = moduleDetails.getFullQualifiedName();
registerAlternative(altName, ruleMeta);

moduleDetails.getProperties().forEach(modulePropertyDetails -> ruleMeta.getPropertyMetadata()
.add(createPropertyConfig(moduleDetails, modulePropertyDetails)));
List<String> alternativeNames = List.of(moduleDetails.getFullQualifiedName());
List<ConfigPropertyMetadata> properties = moduleDetails.getProperties().stream()
.map(modulePropertyDetails -> createPropertyConfig(moduleDetails, modulePropertyDetails))
.toList();
RuleMetadata ruleMeta = new RuleMetadata(
new RuleIdentity(moduleDetails.getName(), moduleDetails.getName(),
packageTokens[packageTokens.length - 1], group, moduleDetails.getDescription(),
alternativeNames),
MetadataFactory.getDefaultSeverity(), false, true, true, false, Collections.emptyList(),
properties);

registerAlternativeNames(ruleMeta);

return ruleMeta;
}

private static void registerAlternative(String alternativeName, RuleMetadata ruleMetadata) {
ruleMetadata.addAlternativeName(alternativeName);
sAlternativeNamesMap.put(alternativeName, ruleMetadata);
private static void registerAlternativeNames(RuleMetadata ruleMetadata) {
ruleMetadata.identity().alternativeNames()
.forEach(alternativeName -> sAlternativeNamesMap.put(alternativeName, ruleMetadata));
}

/**
Expand Down Expand Up @@ -503,8 +508,8 @@ private static String getStandardMessage(String messageKey, RuleMetadata rule) {
}

List<String> namesToCheck = new ArrayList<>();
namesToCheck.add(rule.getInternalName());
namesToCheck.addAll(rule.getAlternativeNames());
namesToCheck.add(rule.identity().internalName());
namesToCheck.addAll(rule.identity().alternativeNames());

for (String moduleClass : namesToCheck) {
try {
Expand Down Expand Up @@ -592,7 +597,7 @@ private static void loadRuleMetadata() {
final ModuleDetails moduleDetails = entry.getValue();
final RuleMetadata createdRuleMetadata = createRuleMetadata(moduleDetails);
sRuleMetadata.put(moduleDetails.getName(), createdRuleMetadata);
sRuleGroupMetadata.get(createdRuleMetadata.getGroup().getGroupName())
sRuleGroupMetadata.get(createdRuleMetadata.identity().group().getGroupName())
.getRuleMetadata().add(createdRuleMetadata);
}
}
Expand Down Expand Up @@ -751,42 +756,42 @@ private static void processModules(Element groupElement, RuleGroupMetadata group
boolean deletable = !"false".equals(moduleEl.attributeValue(XMLTags.DELETABLE_TAG)); //$NON-NLS-1$
boolean isSingleton = Boolean.parseBoolean(moduleEl.attributeValue(XMLTags.IS_SINGLETON_TAG));

// create rule metadata
RuleMetadata module = new RuleMetadata(name, internalName, parentName, severity, hidden,
hasSeverity, deletable, isSingleton, groupMetadata);

// register internal name
sRuleMetadata.put(internalName, module);

// process description
String description = moduleEl.elementTextTrim(XMLTags.DESCRIPTION_TAG);
description = localize(description, metadataBundle);
module.setDescription(description);

// process properties
processProperties(moduleEl, module, metadataBundle);

// process alternative names
for (Element altNameEl : moduleEl.elements(XMLTags.ALTERNATIVE_NAME_TAG)) {

String alternativeName = altNameEl.attributeValue(XMLTags.INTERNAL_NAME_TAG);
registerAlternative(alternativeName, module);
}
List<String> alternativeNames = moduleEl.elements(XMLTags.ALTERNATIVE_NAME_TAG).stream()
.map(altNameEl -> altNameEl.attributeValue(XMLTags.INTERNAL_NAME_TAG))
.toList();

// process message keys
for (Element quickfixEl : moduleEl.elements(XMLTags.MESSAGEKEY_TAG)) {
List<String> messageKeys = moduleEl.elements(XMLTags.MESSAGEKEY_TAG).stream()
.map(quickfixEl -> quickfixEl.attributeValue(XMLTags.KEY_TAG))
.toList();

String messageKey = quickfixEl.attributeValue(XMLTags.KEY_TAG);
module.addMessageKey(messageKey);
}
// process properties
List<ConfigPropertyMetadata> properties = processProperties(moduleEl, metadataBundle);

// create rule metadata
RuleMetadata module = new RuleMetadata(
new RuleIdentity(name, internalName, parentName, groupMetadata, description,
alternativeNames),
severity, hidden, hasSeverity, deletable, isSingleton, messageKeys, properties);

registerAlternativeNames(module);

// register internal name
sRuleMetadata.put(internalName, module);

groupMetadata.getRuleMetadata().add(module);
}
}

@SuppressWarnings("unchecked")
private static void processProperties(Element moduleElement, RuleMetadata moduleMetadata,
private static List<ConfigPropertyMetadata> processProperties(Element moduleElement,
ResourceBundle metadataBundle) throws CheckstylePluginException {
List<ConfigPropertyMetadata> properties = new ArrayList<>();

List<Element> propertyElements = moduleElement.elements(XMLTags.PROPERTY_METADATA_TAG);
for (Element propertyEl : propertyElements) {
Expand All @@ -807,7 +812,7 @@ private static void processProperties(Element moduleElement, RuleMetadata module
ConfigPropertyMetadata property = new ConfigPropertyMetadata(type, name, defaultValue,
overrideDefaultValue);

moduleMetadata.getPropertyMetadata().add(property);
properties.add(property);

// get description
String description = propertyEl.elementTextTrim(XMLTags.DESCRIPTION_TAG);
Expand Down Expand Up @@ -849,6 +854,7 @@ private static void processProperties(Element moduleElement, RuleMetadata module
}
}
}
return properties;
}

private static String localize(String localizationCandidate, ResourceBundle metadataBundle) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//============================================================================
//
// Copyright (C) 2003-2023 the original author or authors.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
//============================================================================

package net.sf.eclipsecs.core.config.meta;

import java.util.List;

public record RuleIdentity(String ruleName, String internalName, String parent, RuleGroupMetadata group,
String description, List<String> alternativeNames) {

}
Loading
Loading