this.cmp = new HashedSequenceComparator<StringText>(cmp);
}
+ public boolean isValidLineInReference(int line) {
+ return (0 <= line) && (line < a.length());
+ }
+
+ public boolean isValidLineInSource(int line) {
+ return (0 <= line) && (line < b.length());
+ }
+
/**
* @param startA number of line from first version of text (numbering starts from 0)
* @param startB number of line from second version of text (numbering starts from 0)
List<ViolationPair> possiblePairs = Lists.newArrayList();
for (Violation newViolation : newViolations) {
- if (newViolation.getLineId() != null) {
+ if (newViolation.getLineId() != null && rec.isValidLineInSource(newViolation.getLineId() - 1)) {
for (RuleFailureModel pastViolation : pastViolationsByRule.get(newViolation.getRule().getId())) {
- if (pastViolation.getLine() != null) {
+ if (pastViolation.getLine() != null && rec.isValidLineInReference(pastViolation.getLine() - 1)) {
int weight = rec.computeLengthOfMaximalBlock(pastViolation.getLine() - 1, newViolation.getLineId() - 1);
possiblePairs.add(new ViolationPair(pastViolation, newViolation, weight));
}
}
public boolean equals(HashedSequence<S> a, int ai, HashedSequence<S> b, int bi) {
- return a.hashes[ai] == b.hashes[bi] && cmp.equals(a.base, ai, b.base, bi);
+ if (a.hashes[ai] == b.hashes[bi]) {
+ return cmp.equals(a.base, ai, b.base, bi);
+ }
+ return false;
}
public int hash(HashedSequence<S> seq, int i) {