/** * Two groups are equal, if they have same length, same origins and contain same parts in same order. */ @Override public boolean equals(Object object) { if (!(object instanceof CloneGroup)) { return false; } CloneGroup another = (CloneGroup) object; if (another.cloneLength != cloneLength || parts.size() != another.parts.size()) { return false; } if (!originPart.equals(another.originPart)) { return false; } boolean result = true; for (int i = 0; i < parts.size(); i++) { result &= another.parts.get(i).equals(parts.get(i)); } return result; }
@Override public boolean matchesSafely(CloneGroup cloneGroup) { // Check length if (expectedLen != cloneGroup.getCloneUnitLength()) { return false; } // Check number of parts if (expectedParts.length != cloneGroup.getCloneParts().size()) { return false; } // Check origin if (!expectedParts[0].equals(cloneGroup.getOriginPart())) { return false; } // Check parts for (ClonePart expectedPart : expectedParts) { boolean matched = false; for (ClonePart part : cloneGroup.getCloneParts()) { if (part.equals(expectedPart)) { matched = true; break; } } if (!matched) { return false; } } return true; }
int clonePartCount = 0; for (ClonePart duplicate : input.getCloneParts()) { if (!duplicate.equals(originBlock)) { clonePartCount++; if (clonePartCount > MAX_CLONE_PART_PER_GROUP) {
/** * Two groups are equal, if they have same length, same origins and contain same parts in same order. */ @Override public boolean equals(Object object) { if (!(object instanceof CloneGroup)) { return false; } CloneGroup another = (CloneGroup) object; if (another.cloneLength != cloneLength || parts.size() != another.parts.size()) { return false; } if (!originPart.equals(another.originPart)) { return false; } boolean result = true; for (int i = 0; i < parts.size(); i++) { result &= another.parts.get(i).equals(parts.get(i)); } return result; }
private static void saveDuplications(org.sonar.api.batch.sensor.SensorContext context, InputFile inputFile, Iterable<CloneGroup> duplications) { int cloneGroupCount = 0; for (CloneGroup duplication : duplications) { cloneGroupCount++; if (cloneGroupCount > MAX_CLONE_GROUP_PER_FILE) { LOG.warn("Too many duplication groups on file " + inputFile.relativePath() + ". Keep only the first " + MAX_CLONE_GROUP_PER_FILE + " groups."); break; } NewDuplication builder = context.newDuplication(); ClonePart originPart = duplication.getOriginPart(); builder.originBlock(inputFile, originPart.getStartLine(), originPart.getEndLine()); int clonePartCount = 0; for (ClonePart part : duplication.getCloneParts()) { if (!part.equals(originPart)) { clonePartCount++; if (clonePartCount > MAX_CLONE_PART_PER_GROUP) { LOG.warn("Too many duplication references on file " + inputFile.relativePath() + " for block at line " + originPart.getStartLine() + ". Keep only the first " + MAX_CLONE_PART_PER_GROUP + " references."); break; } ((DefaultDuplication) builder).isDuplicatedBy(part.getResourceId(), part.getStartLine(), part.getEndLine()); } } builder.save(); } }
int clonePartCount = 0; for (ClonePart duplicate : input.getCloneParts()) { if (!duplicate.equals(originBlock)) { clonePartCount++; if (clonePartCount > MAX_CLONE_PART_PER_GROUP) {
int clonePartCount = 0; for (ClonePart duplicate : input.getCloneParts()) { if (!duplicate.equals(originBlock)) { clonePartCount++; if (clonePartCount > MAX_CLONE_PART_PER_GROUP) {