Skip to content
This repository was archived by the owner on Feb 1, 2023. It is now read-only.

Commit ac0507c

Browse files
authored
Merge pull request #31 from snyk/feat/add_sharding_to_get_analysis
feat: ✨ support sharding in snyk code
2 parents 5edb5b6 + fa85c6e commit ac0507c

File tree

7 files changed

+39
-26
lines changed

7 files changed

+39
-26
lines changed

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
## [2.2.1] - 2020-12-10
1+
## [2.2.2] - 2022-03
2+
- feat: provide unique (per project) `shard` to getAnalysis call
3+
4+
## [2.2.1] - 2021-12-10
25
- fix: don't upload empty files
36

47
## [2.2.0] - 2020-11-29

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66

77
group = "io.snyk.code.sdk"
88
archivesBaseName = "snyk-code-client"
9-
version = "2.2.1"
9+
version = "2.2.2"
1010

1111
repositories {
1212
mavenLocal()

src/integTest/java/ai/deepcode/javaclient/DeepCodeRestApiTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ private GetAnalysisResponse doAnalysisAndWait(List<String> analysedFiles, Intege
370370
throws InterruptedException {
371371
GetAnalysisResponse response = null;
372372
for (int i = 0; i < 120; i++) {
373-
response = DeepCodeRestApi.getAnalysis(loggedToken, bundleId, severity, analysedFiles);
373+
response = DeepCodeRestApi.getAnalysis(loggedToken, bundleId, severity, analysedFiles, bundleId);
374374
if (response.getStatus().equals("COMPLETE")) break;
375375
Thread.sleep(1000);
376376
}

src/main/java/ai/deepcode/javaclient/DeepCodeRestApi.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,12 +338,12 @@ Call<GetAnalysisResponse> doGetAnalysis(
338338
*/
339339
@NotNull
340340
public static GetAnalysisResponse getAnalysis(
341-
String token, String bundleId, Integer severity, List<String> filesToAnalyse) {
341+
String token, String bundleId, Integer severity, List<String> filesToAnalyse, String shard) {
342342
GetAnalysisCall getAnalysisCall = retrofit.create(GetAnalysisCall.class);
343343
try {
344344
Response<GetAnalysisResponse> retrofitResponse =
345345
getAnalysisCall
346-
.doGetAnalysis(token, new GetAnalysisRequest(bundleId, filesToAnalyse, severity))
346+
.doGetAnalysis(token, new GetAnalysisRequest(bundleId, filesToAnalyse, severity, shard))
347347
.execute();
348348
GetAnalysisResponse result = retrofitResponse.body();
349349
if (result == null) result = new GetAnalysisResponse();

src/main/java/ai/deepcode/javaclient/core/AnalysisDataBase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,7 +577,9 @@ private GetAnalysisResponse doGetAnalysis(
577577
deepCodeParams.getSessionToken(),
578578
bundleId,
579579
deepCodeParams.getMinSeverity(),
580-
filesToAnalyse);
580+
filesToAnalyse,
581+
HashContentUtilsBase.calculateHash(pdUtils.getProjectName(project))
582+
);
581583

582584
pdUtils.progressCheckCanceled(progress);
583585
dcLogger.logInfo(response.toString());

src/main/java/ai/deepcode/javaclient/core/HashContentUtilsBase.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ private static String bytesToHex(byte[] hash) {
4646
public boolean isHashChanged(@NotNull Object file) {
4747
// fixme debug only
4848
// DCLogger.getInstance().info("hash check started");
49-
String newHash = doGetHash(doGetFileContent(file));
49+
String newHash = calculateHash(doGetFileContent(file));
5050
String oldHash = mapFile2Hash.put(file, newHash);
5151
// fixme debug only
5252
/*
@@ -67,17 +67,17 @@ public String getHash(@NotNull Object file) {
6767
}
6868

6969
private String doGetHash(@NotNull Object file) {
70-
return doGetHash(getFileContent(file));
70+
return calculateHash(getFileContent(file));
7171
}
7272

73-
private static String doGetHash(@NotNull String fileText) {
73+
protected static String calculateHash(@NotNull String plain) {
7474
MessageDigest messageDigest;
7575
try {
7676
messageDigest = MessageDigest.getInstance("SHA-256");
7777
} catch (NoSuchAlgorithmException e) {
7878
throw new RuntimeException(e);
7979
}
80-
byte[] encodedHash = messageDigest.digest(fileText.getBytes(StandardCharsets.UTF_8));
80+
byte[] encodedHash = messageDigest.digest(plain.getBytes(StandardCharsets.UTF_8));
8181
return bytesToHex(encodedHash);
8282
}
8383

src/main/java/ai/deepcode/javaclient/requests/GetAnalysisRequest.java

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,45 @@
66
public class GetAnalysisRequest {
77
private GetAnalysisKey key;
88
private Integer severity;
9-
private boolean prioritized = false;
10-
private boolean legacy = true;
9+
private boolean prioritized;
10+
private boolean legacy;
1111

1212
/**
1313
* @param bundleHash
1414
* @param limitToFiles list of filePath
1515
* @param severity
16+
* @param shard uniq String (hash) per Project to optimize jobs on backend (run on the same worker to reuse caches)
1617
* @param prioritized
1718
* @param legacy
1819
*/
1920
public GetAnalysisRequest(
20-
String bundleHash,
21-
List<String> limitToFiles,
22-
Integer severity,
23-
boolean prioritized,
24-
boolean legacy) {
25-
this.key = new GetAnalysisKey(bundleHash, limitToFiles);
21+
String bundleHash,
22+
List<String> limitToFiles,
23+
Integer severity,
24+
String shard,
25+
boolean prioritized,
26+
boolean legacy
27+
) {
28+
this.key = new GetAnalysisKey(bundleHash, limitToFiles, shard);
2629
this.severity = severity;
2730
this.prioritized = prioritized;
2831
this.legacy = legacy;
2932
}
3033

31-
public GetAnalysisRequest(String bundleHash, List<String> limitToFiles, Integer severity) {
32-
this(bundleHash, limitToFiles, severity, false, true);
34+
public GetAnalysisRequest(String bundleHash, List<String> limitToFiles, Integer severity, String shard) {
35+
this(bundleHash, limitToFiles, severity, shard, false, true);
3336
}
3437

35-
private class GetAnalysisKey {
36-
private String type = "file";
37-
private String hash;
38-
private List<String> limitToFiles;
38+
private static class GetAnalysisKey {
39+
private final String type = "file";
40+
private final String hash;
41+
private final List<String> limitToFiles;
42+
private final String shard;
3943

40-
public GetAnalysisKey(String hash, List<String> limitToFiles) {
41-
this.type = type;
44+
public GetAnalysisKey(String hash, List<String> limitToFiles, String shard) {
4245
this.hash = hash;
4346
this.limitToFiles = limitToFiles;
47+
this.shard = shard;
4448
}
4549

4650
public String getHash() {
@@ -51,6 +55,10 @@ public List<String> getLimitToFiles() {
5155
return limitToFiles;
5256
}
5357

58+
public String getShard() {
59+
return shard;
60+
}
61+
5462
@Override
5563
public boolean equals(Object o) {
5664
if (this == o) return true;

0 commit comments

Comments
 (0)