mirror of
https://github.com/SonarSource/sonarqube.git
synced 2024-08-03 08:18:00 +02:00
SONAR-2358 Don't use org.codehaus.plexus.util.StringInputStream to calculate checksums for violations
This commit is contained in:
parent
9936a0250b
commit
5cc143c735
@ -23,10 +23,8 @@ import com.google.common.collect.LinkedHashMultimap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Multimap;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang.ObjectUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.codehaus.plexus.util.StringInputStream;
|
||||
import org.sonar.api.batch.*;
|
||||
import org.sonar.api.database.model.RuleFailureModel;
|
||||
import org.sonar.api.database.model.SnapshotSource;
|
||||
@ -35,11 +33,9 @@ import org.sonar.api.resources.Resource;
|
||||
import org.sonar.api.rules.Rule;
|
||||
import org.sonar.api.rules.RuleFinder;
|
||||
import org.sonar.api.rules.Violation;
|
||||
import org.sonar.api.utils.SonarException;
|
||||
import org.sonar.batch.components.PastViolationsLoader;
|
||||
import org.sonar.batch.index.ViolationPersister;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -108,19 +104,14 @@ public class ViolationPersisterDecorator implements Decorator {
|
||||
return source == null || source.getData() == null ? Collections.<String>emptyList() : getChecksums(source.getData());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param data can't be null
|
||||
*/
|
||||
static List<String> getChecksums(String data) {
|
||||
String[] lines = data.split("\r?\n|\r", -1);
|
||||
List<String> result = Lists.newArrayList();
|
||||
StringInputStream stream = new StringInputStream(data);
|
||||
try {
|
||||
List<String> lines = IOUtils.readLines(stream);
|
||||
for (String line : lines) {
|
||||
result.add(getChecksum(line));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new SonarException("Unable to calculate checksums", e);
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(stream);
|
||||
for (String line : lines) {
|
||||
result.add(getChecksum(line));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -145,7 +136,7 @@ public class ViolationPersisterDecorator implements Decorator {
|
||||
*/
|
||||
RuleFailureModel selectPastViolation(Violation violation, Multimap<Rule, RuleFailureModel> pastViolationsByRule) {
|
||||
Collection<RuleFailureModel> pastViolations = pastViolationsByRule.get(violation.getRule());
|
||||
if (pastViolations==null || pastViolations.isEmpty()) {
|
||||
if (pastViolations == null || pastViolations.isEmpty()) {
|
||||
// skip violation, if there is no past violations with same rule
|
||||
return null;
|
||||
}
|
||||
|
@ -48,9 +48,11 @@ public class ViolationPersisterDecoratorTest {
|
||||
public void shouldGenerateCorrectChecksums() {
|
||||
List<String> crlf = ViolationPersisterDecorator.getChecksums("Hello\r\nWorld");
|
||||
List<String> lf = ViolationPersisterDecorator.getChecksums("Hello\nWorld");
|
||||
List<String> cr = ViolationPersisterDecorator.getChecksums("Hello\rWorld");
|
||||
assertThat(crlf.size(), is(2));
|
||||
assertThat(crlf.get(0), not(equalTo(crlf.get(1))));
|
||||
assertThat(lf, equalTo(crlf));
|
||||
assertThat(cr, equalTo(crlf));
|
||||
|
||||
assertThat(ViolationPersisterDecorator.getChecksum("\tvoid method() {\n"),
|
||||
equalTo(ViolationPersisterDecorator.getChecksum(" void method() {")));
|
||||
|
Loading…
Reference in New Issue
Block a user