Skip to content

Commit 524b8ba

Browse files
authored
Merge pull request #1 from jkroepke/sonar82-finterprint-fix
Sonar82 finterprint fix
2 parents ef4bc1f + 0008e9a commit 524b8ba

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

Diff for: src/main/java/com/talanlabs/sonar/plugins/gitlab/Reporter.java

+23-3
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,20 @@
1919
*/
2020
package com.talanlabs.sonar.plugins.gitlab;
2121

22+
import com.google.common.base.Charsets;
23+
import com.google.common.hash.HashCode;
24+
import com.google.common.hash.HashFunction;
25+
import com.google.common.hash.Hashing;
2226
import com.talanlabs.sonar.plugins.gitlab.models.*;
2327
import org.apache.commons.lang3.StringEscapeUtils;
2428
import org.sonar.api.batch.rule.Severity;
2529

2630
import javax.annotation.Nullable;
2731
import java.io.File;
32+
import java.nio.charset.StandardCharsets;
33+
import java.nio.file.Files;
34+
import java.security.MessageDigest;
35+
import java.security.NoSuchAlgorithmException;
2836
import java.util.*;
2937
import java.util.function.Function;
3038
import java.util.stream.Collectors;
@@ -231,10 +239,22 @@ public String buildJson() {
231239
private String buildIssueCodeQualityJson(ReportIssue reportIssue) {
232240
Issue issue = reportIssue.getIssue();
233241

242+
String description = prepareMessageJson(issue.getMessage());
243+
String location = buildLocationCodeQualityJson(reportIssue);
244+
245+
HashFunction hf = Hashing.md5();
246+
HashCode hc = hf.newHasher()
247+
.putString(description, Charsets.UTF_8)
248+
.putString(location, Charsets.UTF_8)
249+
.hash();
250+
251+
String fingerprint = hc.toString();
252+
234253
StringJoiner sj = new StringJoiner(",", "{", "}");
235-
sj.add("\"fingerprint\":\"" + issue.getKey() + "\"");
236-
sj.add("\"description\":\"" + prepareMessageJson(issue.getMessage()) + "\"");
237-
sj.add("\"location\":" + buildLocationCodeQualityJson(reportIssue));
254+
sj.add("\"fingerprint\":\"" + fingerprint + "\"");
255+
sj.add("\"description\":\"" + description + "\"");
256+
sj.add("\"severity\":\"" + issue.getSeverity().name().toLowerCase() + "\"");
257+
sj.add("\"location\":" + location);
238258
return sj.toString();
239259
}
240260

Diff for: src/test/java/com/talanlabs/sonar/plugins/gitlab/ReporterBuilderTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ public void testCommitAnalysisWithNewIssuesCodeClimate() {
545545
reporterBuilder.build(null, Arrays.asList(newIssue, globalIssue, issueOnProject, issueOnDir, fileNotInPR, lineNotVisible, notNewIssue));
546546

547547
Mockito.verify(commitFacade).writeJsonFile(Mockito.contains(
548-
"[{\"fingerprint\":\"null\",\"description\":\"msg\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":0,\"end\":0}}},{\"fingerprint\":\"null\",\"description\":\"msg4\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":0,\"end\":0}}},{\"fingerprint\":\"null\",\"description\":\"msg5\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":0,\"end\":0}}},{\"fingerprint\":\"null\",\"description\":\"msg1\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":1,\"end\":1}}},{\"fingerprint\":\"null\",\"description\":\"msg2\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":2,\"end\":2}}},{\"fingerprint\":\"null\",\"description\":\"msg3\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":1,\"end\":1}}}]"));
548+
"[{\"fingerprint\":\"06496daf6fab6a0f97d6e0469e23c314\",\"description\":\"msg\",\"severity\":\"blocker\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":0,\"end\":0}}},{\"fingerprint\":\"0c0d7bbe0396951af65c450966b422fb\",\"description\":\"msg4\",\"severity\":\"blocker\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":0,\"end\":0}}},{\"fingerprint\":\"7d626e4f4d387b14046054a2c2eff2ff\",\"description\":\"msg5\",\"severity\":\"blocker\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":0,\"end\":0}}},{\"fingerprint\":\"42e8b6ecbbab8acf76ead03757e49300\",\"description\":\"msg1\",\"severity\":\"blocker\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":1,\"end\":1}}},{\"fingerprint\":\"52660d2146c00c13d697e8a12be7cad3\",\"description\":\"msg2\",\"severity\":\"blocker\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":2,\"end\":2}}},{\"fingerprint\":\"c6acd4f8aa70e27dde47469a54efdebe\",\"description\":\"msg3\",\"severity\":\"blocker\",\"location\":{\"path\":\"null\",\"lines\": { \"begin\":1,\"end\":1}}}]"));
549549
}
550550

551551
@Test

0 commit comments

Comments
 (0)