SONAR-2867 Standard copy-paste detection should happen within a project, not only within a module

This commit is contained in:
Duarte Meneses 2015-12-23 11:29:14 +01:00
parent 7f5a8542ce
commit 638244f43d

View File

@ -93,13 +93,25 @@ public class CpdExecutor {
}
InputFile inputFile = (InputFile) component.inputComponent();
Predicate<CloneGroup> minimumTokensPredicate = DuplicationPredicates.numberOfUnitsNotLessThan(getMinimumTokens(inputFile.language()));
List<CloneGroup> filtered = from(duplications).filter(minimumTokensPredicate).toList();
List<CloneGroup> filtered;
if (!"java".equalsIgnoreCase(inputFile.language())) {
Predicate<CloneGroup> minimumTokensPredicate = DuplicationPredicates.numberOfUnitsNotLessThan(getMinimumTokens(inputFile.language()));
filtered = from(duplications).filter(minimumTokensPredicate).toList();
} else {
filtered = duplications;
}
saveDuplications(component, filtered);
}
@VisibleForTesting
/**
* Not applicable to Java, as the {@link BlockChunker} that it uses does not record start and end units of each block.
* Also, it uses statements instead of tokens.
* @param languageKey
* @return
*/
int getMinimumTokens(String languageKey) {
int minimumTokens = settings.getInt("sonar.cpd." + languageKey + ".minimumTokens");
if (minimumTokens == 0) {