Skip to content

Commit 114c8af

Browse files
committed
Issue #451: add ParameterNumber to checkstyle config
1 parent 8aa9e1c commit 114c8af

15 files changed

Lines changed: 132 additions & 345 deletions

config/checkstyle-checks.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,7 @@
578578
</module>
579579
<module name="MethodLength"/>
580580
<module name="OuterTypeNumber"/>
581+
<module name="ParameterNumber"/>
581582
<module name="RecordComponentNumber"/>
582583

583584
<!-- Whitespace -->

net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/builder/Auditor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public void addError(AuditEvent error) {
319319
metaData = MetadataFactory.createGenericMetadata(module);
320320
}
321321

322-
mMarkerAttributes.put(CheckstyleMarker.MODULE_NAME, metaData.getInternalName());
322+
mMarkerAttributes.put(CheckstyleMarker.MODULE_NAME, metaData.identity().internalName());
323323
mMarkerAttributes.put(CheckstyleMarker.MESSAGE_KEY,
324324
error.getViolation().getKey());
325325
String moduleId = error.getModuleId();
@@ -494,7 +494,7 @@ private String getMessage(AuditEvent error) {
494494
if (moduleId == null) {
495495
RuleMetadata metaData = MetadataFactory.getRuleMetadata(error.getSourceName());
496496
if (metaData != null) {
497-
moduleId = metaData.getInternalName();
497+
moduleId = metaData.identity().internalName();
498498
}
499499
}
500500

@@ -525,7 +525,7 @@ private String getRuleName(AuditEvent error) {
525525
if (metaData == null) {
526526
return Messages.Auditor_txtUnknownModule;
527527
}
528-
return metaData.getInternalName();
528+
return metaData.identity().internalName();
529529
}
530530
}
531531
}

net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/ConfigurationWriter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ private static void writeModule(Module module, Branch parent, Severity parentSev
147147

148148
// Start the module
149149
Element moduleEl = parent.addElement(XMLTags.MODULE_TAG);
150-
moduleEl.addAttribute(XMLTags.NAME_TAG, module.getMetaData().getInternalName());
150+
moduleEl.addAttribute(XMLTags.NAME_TAG, module.getMetaData().identity().internalName());
151151

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

236236
for (Module tmp : remainingModules) {
237237

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

241241
// only the checker module has no parent
242242
if (parentInternalName == null && "Root".equals(childParent)) {

net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/Module.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public Module(RuleMetadata metaData, boolean withDefaults) {
8484
if (metaData != null) {
8585

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

@@ -97,8 +97,8 @@ public Module(RuleMetadata metaData, boolean withDefaults) {
9797
}
9898
}
9999

100-
if (metaData.getDefaultSeverityLevel() != null) {
101-
mSeverityLevel = metaData.getDefaultSeverityLevel();
100+
if (metaData.defaultSeverity() != null) {
101+
mSeverityLevel = metaData.defaultSeverity();
102102
}
103103
}
104104
}
@@ -119,7 +119,7 @@ public Module(String name) {
119119
* @return the name of the module
120120
*/
121121
public String getName() {
122-
return mMetaData != null ? mMetaData.getRuleName() : mName;
122+
return mMetaData != null ? mMetaData.identity().ruleName() : mName;
123123
}
124124

125125
/**
@@ -228,7 +228,7 @@ public void setComment(String comment) {
228228
public Severity getSeverity() {
229229
if (mMetaData != null && mMetaData.hasSeverity()) {
230230

231-
return mSeverityLevel != null ? mSeverityLevel : getMetaData().getDefaultSeverityLevel();
231+
return mSeverityLevel != null ? mSeverityLevel : getMetaData().defaultSeverity();
232232
} else {
233233
return null;
234234
}
@@ -265,7 +265,7 @@ public void setSeverity(Severity severityLevel) {
265265
Severity defaultLevel = null;
266266

267267
if (mMetaData != null && mMetaData.hasSeverity()) {
268-
defaultLevel = getMetaData().getDefaultSeverityLevel();
268+
defaultLevel = getMetaData().defaultSeverity();
269269
} else if (mMetaData == null) {
270270
defaultLevel = MetadataFactory.getDefaultSeverity();
271271
}

net.sf.eclipsecs.core/src/net/sf/eclipsecs/core/config/meta/MetadataFactory.java

Lines changed: 47 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,13 @@ public static RuleMetadata createGenericMetadata(Module module) {
179179
}
180180

181181
RuleGroupMetadata otherGroup = getRuleGroupMetadata(XMLTags.OTHER_GROUP);
182-
RuleMetadata ruleMeta = new RuleMetadata(module.getName(), module.getName(), parent,
183-
MetadataFactory.getDefaultSeverity(), false, true, true, false, otherGroup);
182+
RuleMetadata ruleMeta = new RuleMetadata(
183+
new RuleIdentity(module.getName(), module.getName(), parent, otherGroup, null,
184+
Collections.emptyList()),
185+
MetadataFactory.getDefaultSeverity(), false, true, true, false, Collections.emptyList(),
186+
Collections.emptyList());
184187
module.setMetaData(ruleMeta);
185-
sRuleMetadata.put(ruleMeta.getInternalName(), ruleMeta);
188+
sRuleMetadata.put(ruleMeta.identity().internalName(), ruleMeta);
186189

187190
List<ConfigProperty> properties = module.getProperties();
188191
int size = properties != null ? properties.size() : 0;
@@ -228,23 +231,25 @@ private static RuleMetadata createRuleMetadata(ModuleDetails moduleDetails) {
228231
}
229232
}
230233
final String[] packageTokens = moduleDetails.getParent().split(DOT_PATTERN);
231-
RuleMetadata ruleMeta = new RuleMetadata(moduleDetails.getName(), moduleDetails.getName(),
232-
packageTokens[packageTokens.length - 1], MetadataFactory.getDefaultSeverity(),
233-
false, true, true, false, group);
234-
ruleMeta.setDescription(moduleDetails.getDescription());
235-
236-
var altName = moduleDetails.getFullQualifiedName();
237-
registerAlternative(altName, ruleMeta);
238-
239-
moduleDetails.getProperties().forEach(modulePropertyDetails -> ruleMeta.getPropertyMetadata()
240-
.add(createPropertyConfig(moduleDetails, modulePropertyDetails)));
234+
List<String> alternativeNames = List.of(moduleDetails.getFullQualifiedName());
235+
List<ConfigPropertyMetadata> properties = moduleDetails.getProperties().stream()
236+
.map(modulePropertyDetails -> createPropertyConfig(moduleDetails, modulePropertyDetails))
237+
.toList();
238+
RuleMetadata ruleMeta = new RuleMetadata(
239+
new RuleIdentity(moduleDetails.getName(), moduleDetails.getName(),
240+
packageTokens[packageTokens.length - 1], group, moduleDetails.getDescription(),
241+
alternativeNames),
242+
MetadataFactory.getDefaultSeverity(), false, true, true, false, Collections.emptyList(),
243+
properties);
244+
245+
registerAlternativeNames(ruleMeta);
241246

242247
return ruleMeta;
243248
}
244249

245-
private static void registerAlternative(String alternativeName, RuleMetadata ruleMetadata) {
246-
ruleMetadata.addAlternativeName(alternativeName);
247-
sAlternativeNamesMap.put(alternativeName, ruleMetadata);
250+
private static void registerAlternativeNames(RuleMetadata ruleMetadata) {
251+
ruleMetadata.identity().alternativeNames()
252+
.forEach(alternativeName -> sAlternativeNamesMap.put(alternativeName, ruleMetadata));
248253
}
249254

250255
/**
@@ -503,8 +508,8 @@ private static String getStandardMessage(String messageKey, RuleMetadata rule) {
503508
}
504509

505510
List<String> namesToCheck = new ArrayList<>();
506-
namesToCheck.add(rule.getInternalName());
507-
namesToCheck.addAll(rule.getAlternativeNames());
511+
namesToCheck.add(rule.identity().internalName());
512+
namesToCheck.addAll(rule.identity().alternativeNames());
508513

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

754-
// create rule metadata
755-
RuleMetadata module = new RuleMetadata(name, internalName, parentName, severity, hidden,
756-
hasSeverity, deletable, isSingleton, groupMetadata);
757-
758-
// register internal name
759-
sRuleMetadata.put(internalName, module);
760-
761759
// process description
762760
String description = moduleEl.elementTextTrim(XMLTags.DESCRIPTION_TAG);
763761
description = localize(description, metadataBundle);
764-
module.setDescription(description);
765-
766-
// process properties
767-
processProperties(moduleEl, module, metadataBundle);
768762

769763
// process alternative names
770-
for (Element altNameEl : moduleEl.elements(XMLTags.ALTERNATIVE_NAME_TAG)) {
771-
772-
String alternativeName = altNameEl.attributeValue(XMLTags.INTERNAL_NAME_TAG);
773-
registerAlternative(alternativeName, module);
774-
}
764+
List<String> alternativeNames = moduleEl.elements(XMLTags.ALTERNATIVE_NAME_TAG).stream()
765+
.map(altNameEl -> altNameEl.attributeValue(XMLTags.INTERNAL_NAME_TAG))
766+
.toList();
775767

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

779-
String messageKey = quickfixEl.attributeValue(XMLTags.KEY_TAG);
780-
module.addMessageKey(messageKey);
781-
}
773+
// process properties
774+
List<ConfigPropertyMetadata> properties = processProperties(moduleEl, metadataBundle);
775+
776+
// create rule metadata
777+
RuleMetadata module = new RuleMetadata(
778+
new RuleIdentity(name, internalName, parentName, groupMetadata, description,
779+
alternativeNames),
780+
severity, hidden, hasSeverity, deletable, isSingleton, messageKeys, properties);
781+
782+
registerAlternativeNames(module);
783+
784+
// register internal name
785+
sRuleMetadata.put(internalName, module);
782786

783787
groupMetadata.getRuleMetadata().add(module);
784788
}
785789
}
786790

787791
@SuppressWarnings("unchecked")
788-
private static void processProperties(Element moduleElement, RuleMetadata moduleMetadata,
792+
private static List<ConfigPropertyMetadata> processProperties(Element moduleElement,
789793
ResourceBundle metadataBundle) throws CheckstylePluginException {
794+
List<ConfigPropertyMetadata> properties = new ArrayList<>();
790795

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

810-
moduleMetadata.getPropertyMetadata().add(property);
815+
properties.add(property);
811816

812817
// get description
813818
String description = propertyEl.elementTextTrim(XMLTags.DESCRIPTION_TAG);
@@ -849,6 +854,7 @@ private static void processProperties(Element moduleElement, RuleMetadata module
849854
}
850855
}
851856
}
857+
return properties;
852858
}
853859

854860
private static String localize(String localizationCandidate, ResourceBundle metadataBundle) {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//============================================================================
2+
//
3+
// Copyright (C) 2003-2023 the original author or authors.
4+
//
5+
// This library is free software; you can redistribute it and/or
6+
// modify it under the terms of the GNU Lesser General Public
7+
// License as published by the Free Software Foundation; either
8+
// version 2.1 of the License, or (at your option) any later version.
9+
//
10+
// This library is distributed in the hope that it will be useful,
11+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13+
// Lesser General Public License for more details.
14+
//
15+
// You should have received a copy of the GNU Lesser General Public
16+
// License along with this library; if not, write to the Free Software
17+
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18+
//
19+
//============================================================================
20+
21+
package net.sf.eclipsecs.core.config.meta;
22+
23+
import java.util.List;
24+
25+
public record RuleIdentity(String ruleName, String internalName, String parent, RuleGroupMetadata group,
26+
String description, List<String> alternativeNames) {
27+
28+
}

0 commit comments

Comments
 (0)