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

Commit e19252b

Browse files
fix: 🐛 don't add empty files to bundles [ROAD-612] (#29)
* fix: 🐛 don't add empty files to bundles * refactor: ♻️ move empty file check to DeepCodeUtilsBase.isSupportedFileFormat [ROAD-612] * refactor: ⚡f️moved file size check down for performance reasons [ROAD-612] * refactor: ⚡ adjusted filesize check to only recommendations from PR [ROAD-612]
1 parent 6c539df commit e19252b

File tree

5 files changed

+45
-45
lines changed

5 files changed

+45
-45
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## [2.2.1] - 2020-12-10
2+
- fix: don't upload empty files
3+
14
## [2.2.0] - 2020-11-29
25
- feat: update to latest snyk-code api
36

build.gradle

+1-1
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.0"
9+
version = "2.2.1"
1010

1111
repositories {
1212
mavenLocal()

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -351,10 +351,11 @@ private List<String> createBundleStep(
351351
progress, PREPARE_FILES_TEXT + fileCounter + " of " + totalFiles + " files done.");
352352

353353
final String path = pdUtils.getDeepCodedFilePath(file);
354+
354355
// info("getHash requested");
355356
final String hash = hashContentUtils.getHash(file);
356357
if (fileCounter == 1)
357-
dcLogger.logInfo("First file to proceed: \npath = " + path + "\nhash = " + hash);
358+
dcLogger.logInfo("First file to process: \npath = " + path + "\nhash = " + hash);
358359

359360
hashRequest.put(path, hash);
360361
sizePath2Hash += (path.length() + hash.length()) * 2L; // rough estimation of bytes occupied

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

+38-43
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,7 @@
55
import org.jetbrains.annotations.NotNull;
66
import org.jetbrains.annotations.Nullable;
77

8-
import java.util.ArrayList;
9-
import java.util.Arrays;
10-
import java.util.Collection;
11-
import java.util.Collections;
12-
import java.util.HashSet;
13-
import java.util.List;
14-
import java.util.Set;
8+
import java.util.*;
159
import java.util.stream.Collectors;
1610

1711
public abstract class DeepCodeUtilsBase {
@@ -23,11 +17,11 @@ public abstract class DeepCodeUtilsBase {
2317
private final DCLoggerBase dcLogger;
2418

2519
protected DeepCodeUtilsBase(
26-
@NotNull AnalysisDataBase analysisData,
27-
@NotNull DeepCodeParamsBase deepCodeParams,
28-
@NotNull DeepCodeIgnoreInfoHolderBase ignoreInfoHolder,
29-
@NotNull PlatformDependentUtilsBase pdUtils,
30-
@NotNull DCLoggerBase dcLogger) {
20+
@NotNull AnalysisDataBase analysisData,
21+
@NotNull DeepCodeParamsBase deepCodeParams,
22+
@NotNull DeepCodeIgnoreInfoHolderBase ignoreInfoHolder,
23+
@NotNull PlatformDependentUtilsBase pdUtils,
24+
@NotNull DCLoggerBase dcLogger) {
3125
this.analysisData = analysisData;
3226
this.deepCodeParams = deepCodeParams;
3327
this.ignoreInfoHolder = ignoreInfoHolder;
@@ -40,7 +34,7 @@ protected DeepCodeUtilsBase(
4034
protected static Set<String> supportedConfigFiles = Collections.emptySet();
4135

4236
public List<Object> getAllSupportedFilesInProject(
43-
@NotNull Object project, boolean scanAllMissedIgnoreFile, @Nullable Object progress) {
37+
@NotNull Object project, boolean scanAllMissedIgnoreFile, @Nullable Object progress) {
4438
final Collection<Object> allProjectFiles = allProjectFiles(project);
4539
if (allProjectFiles.isEmpty()) {
4640
dcLogger.logWarn("Empty files list for project: " + project);
@@ -55,7 +49,7 @@ public List<Object> getAllSupportedFilesInProject(
5549
final List<Object> result = new ArrayList<>();
5650
for (Object file : allProjectFiles) {
5751
pdUtils.progressSetText(
58-
progress, "Checked if supported " + counter + " files of " + totalSize);
52+
progress, "Checked if supported " + counter + " files of " + totalSize);
5953
pdUtils.progressSetFraction(progress, ((double) counter++ / totalSize));
6054
if (isSupportedFileFormat(file)) {
6155
result.add(file);
@@ -77,12 +71,11 @@ public List<Object> getAllSupportedFilesInProject(
7771
public boolean isSupportedFileFormat(@NotNull Object file) {
7872
// DCLogger.getInstance().info("isSupportedFileFormat started for " + psiFile.getName());
7973
if (ignoreInfoHolder.isIgnoredFile(file) || isGitIgnoredExternalCheck(file)) return false;
80-
final boolean result =
81-
getFileLength(file) < MAX_FILE_SIZE
82-
&& (supportedExtensions.contains(getFileExtention(file))
83-
|| supportedConfigFiles.contains(pdUtils.getFileName(file)));
74+
long fileLength = getFileLength(file);
75+
boolean supported = 0 < fileLength && fileLength < MAX_FILE_SIZE &&
76+
(supportedExtensions.contains(getFileExtention(file)) || supportedConfigFiles.contains(pdUtils.getFileName(file)));
8477
// DCLogger.getInstance().info("isSupportedFileFormat ends for " + psiFile.getName());
85-
return result;
78+
return supported;
8679
}
8780

8881
protected abstract long getFileLength(@NotNull Object file);
@@ -91,41 +84,43 @@ public boolean isSupportedFileFormat(@NotNull Object file) {
9184

9285
protected abstract boolean isGitIgnoredExternalCheck(@NotNull Object file);
9386

94-
/** Potentially <b>Heavy</b> network request! */
87+
/**
88+
* Potentially <b>Heavy</b> network request!
89+
*/
9590
private void initSupportedExtentionsAndConfigFiles() {
9691
GetFiltersResponse filtersResponse =
97-
DeepCodeRestApi.getFilters(deepCodeParams.getSessionToken());
92+
DeepCodeRestApi.getFilters(deepCodeParams.getSessionToken());
9893
if (filtersResponse.getStatusCode() == 200) {
9994
supportedExtensions =
100-
filtersResponse.getExtensions().stream()
101-
.map(s -> s.substring(1)) // remove preceding `.` (`.js` -> `js`)
102-
.collect(Collectors.toSet());
95+
filtersResponse.getExtensions().stream()
96+
.map(s -> s.substring(1)) // remove preceding `.` (`.js` -> `js`)
97+
.collect(Collectors.toSet());
10398
supportedConfigFiles = new HashSet<>(filtersResponse.getConfigFiles());
10499
dcLogger.logInfo("Supported extensions: " + supportedExtensions);
105100
dcLogger.logInfo("Supported configFiles: " + supportedConfigFiles);
106101
} else {
107102
dcLogger.logWarn(
108-
"Can't retrieve supported file extensions and config files from the server. Fallback to default set.\n"
109-
+ filtersResponse.getStatusCode()
110-
+ " "
111-
+ filtersResponse.getStatusDescription());
103+
"Can't retrieve supported file extensions and config files from the server. Fallback to default set.\n"
104+
+ filtersResponse.getStatusCode()
105+
+ " "
106+
+ filtersResponse.getStatusDescription());
112107
supportedExtensions =
113-
new HashSet<>(
114-
Arrays.asList(
115-
"cc", "htm", "cpp", "cxx", "c", "vue", "h", "hpp", "hxx", "es6", "js", "py", "es",
116-
"jsx", "java", "tsx", "html", "ts"));
108+
new HashSet<>(
109+
Arrays.asList(
110+
"cc", "htm", "cpp", "cxx", "c", "vue", "h", "hpp", "hxx", "es6", "js", "py", "es",
111+
"jsx", "java", "tsx", "html", "ts"));
117112
supportedConfigFiles =
118-
new HashSet<>(
119-
Arrays.asList(
120-
"pylintrc",
121-
"ruleset.xml",
122-
".eslintrc.json",
123-
".pylintrc",
124-
".eslintrc.js",
125-
"tslint.json",
126-
".pmdrc.xml",
127-
".ruleset.xml",
128-
".eslintrc.yml"));
113+
new HashSet<>(
114+
Arrays.asList(
115+
"pylintrc",
116+
"ruleset.xml",
117+
".eslintrc.json",
118+
".pylintrc",
119+
".eslintrc.js",
120+
"tslint.json",
121+
".pmdrc.xml",
122+
".ruleset.xml",
123+
".eslintrc.yml"));
129124
}
130125
}
131126

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

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ void removeProjectHashContent(@NotNull Object project) {
3131

3232
// ?? com.intellij.openapi.util.text.StringUtil.toHexString
3333
// https://www.baeldung.com/sha-256-hashing-java#message-digest
34+
@SuppressWarnings("DuplicatedCode") // it's the test code that triggers the warning
3435
private static String bytesToHex(byte[] hash) {
3536
StringBuilder hexString = new StringBuilder();
3637
for (byte b : hash) {

0 commit comments

Comments
 (0)