From 01bbe1b7557e8861712cbbd5aec35e4b33694712 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:11:06 -0400 Subject: [PATCH 1/9] SpotBugs: commitId must be non-null but is marked as nullable --- src/main/java/pl/project13/jgit/DescribeResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/pl/project13/jgit/DescribeResult.java b/src/main/java/pl/project13/jgit/DescribeResult.java index 285a2cc2..28ccedcb 100644 --- a/src/main/java/pl/project13/jgit/DescribeResult.java +++ b/src/main/java/pl/project13/jgit/DescribeResult.java @@ -60,7 +60,7 @@ public DescribeResult(@NotNull String tagName) { this(tagName, false, Optional.absent()); } - public DescribeResult(@NotNull ObjectReader objectReader, String tagName, int commitsAwayFromTag, @Nullable ObjectId commitId) { + public DescribeResult(@NotNull ObjectReader objectReader, String tagName, int commitsAwayFromTag, @NotNull ObjectId commitId) { this(objectReader, tagName, commitsAwayFromTag, commitId, false, Optional.absent(), false); } From 0cbede676082c59b9756cbe649333cd48d23b641 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:14:09 -0400 Subject: [PATCH 2/9] SpotBugs: Nullcheck of replacementProperty at line 75 of value previously dereferenced in pl.project13.maven.git.PropertiesReplacer.performReplacement(ReplacementProperty, String) --- .../java/pl/project13/maven/git/PropertiesReplacer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/pl/project13/maven/git/PropertiesReplacer.java b/src/main/java/pl/project13/maven/git/PropertiesReplacer.java index 5601c7ed..034d3218 100644 --- a/src/main/java/pl/project13/maven/git/PropertiesReplacer.java +++ b/src/main/java/pl/project13/maven/git/PropertiesReplacer.java @@ -71,15 +71,17 @@ public void performReplacement(Properties properties, List } private String performReplacement(ReplacementProperty replacementProperty, String content) { - String result = performTransformationRules(replacementProperty, content, TransformationRule.ApplyEnum.BEFORE); + String result = content; if(replacementProperty != null) { + result = performTransformationRules(replacementProperty, result, TransformationRule.ApplyEnum.BEFORE); if(replacementProperty.isRegex()) { result = replaceRegex(result, replacementProperty.getToken(), replacementProperty.getValue()); } else { result = replaceNonRegex(result, replacementProperty.getToken(), replacementProperty.getValue()); } + result = performTransformationRules(replacementProperty, result, TransformationRule.ApplyEnum.AFTER); } - return performTransformationRules(replacementProperty, result, TransformationRule.ApplyEnum.AFTER); + return result; } private String performTransformationRules(ReplacementProperty replacementProperty, String content, TransformationRule.ApplyEnum forRule) { From 7240f13c49866e6af470d095197d4adc18167ef0 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:15:47 -0400 Subject: [PATCH 3/9] SpotBugs: Unused imports --- src/main/java/pl/project13/jgit/DescribeCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/pl/project13/jgit/DescribeCommand.java b/src/main/java/pl/project13/jgit/DescribeCommand.java index a6e57e35..9c50d46f 100644 --- a/src/main/java/pl/project13/jgit/DescribeCommand.java +++ b/src/main/java/pl/project13/jgit/DescribeCommand.java @@ -21,7 +21,6 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.GitCommand; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.ObjectId; From 98c15cd7fed8cfe7a0c9d7f2e0d8a5707aaf66e9 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:16:51 -0400 Subject: [PATCH 4/9] SpotBugs: Pair is a raw type. References to generic type Pair should be parameterized --- src/main/java/pl/project13/maven/git/util/Pair.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/pl/project13/maven/git/util/Pair.java b/src/main/java/pl/project13/maven/git/util/Pair.java index 8068636a..7a578cad 100644 --- a/src/main/java/pl/project13/maven/git/util/Pair.java +++ b/src/main/java/pl/project13/maven/git/util/Pair.java @@ -52,7 +52,7 @@ public boolean equals(@Nullable Object o) { return false; } - Pair pair = (Pair) o; + Pair pair = (Pair) o; if (!first.equals(pair.first)) { return false; From 65bcfba6a0a4625af092ffc6f29ef9085e997741 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:18:11 -0400 Subject: [PATCH 5/9] SpotBugs: The serializable class NativeCommandException does not declare a static final serialVersionUID field of type long --- src/main/java/pl/project13/maven/git/NativeGitProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/pl/project13/maven/git/NativeGitProvider.java b/src/main/java/pl/project13/maven/git/NativeGitProvider.java index 258602c8..207a7d33 100644 --- a/src/main/java/pl/project13/maven/git/NativeGitProvider.java +++ b/src/main/java/pl/project13/maven/git/NativeGitProvider.java @@ -303,6 +303,7 @@ public interface ProcessRunner { public static class NativeCommandException extends IOException { + private static final long serialVersionUID = 3511033422542257748L; private final int exitCode; private final String command; private final File directory; From b7e67ec39f5ce8a8ad2bbaf54ffa561d19844940 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:21:37 -0400 Subject: [PATCH 6/9] SpotBugs: Resource leak: 'walk' is never closed --- src/main/java/pl/project13/jgit/JGitCommon.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/pl/project13/jgit/JGitCommon.java b/src/main/java/pl/project13/jgit/JGitCommon.java index 63377201..6420a4ca 100644 --- a/src/main/java/pl/project13/jgit/JGitCommon.java +++ b/src/main/java/pl/project13/jgit/JGitCommon.java @@ -97,12 +97,13 @@ public String getClosestTagCommitCount(@NotNull Repository repo, RevCommit headC HashMap> map = transformRevTagsMapToDateSortedTagNames(getClosestTagAsMap(repo)); ObjectId obj = (ObjectId) map.keySet().toArray()[0]; - RevWalk walk = new RevWalk(repo); - RevCommit commit = walk.lookupCommit(obj); - walk.dispose(); + try(RevWalk walk = new RevWalk(repo)){ + RevCommit commit = walk.lookupCommit(obj); + walk.dispose(); - int distance = distanceBetween(repo, headCommit, commit); - return String.valueOf(distance); + int distance = distanceBetween(repo, headCommit, commit); + return String.valueOf(distance); + } } private Map> getClosestTagAsMap(@NotNull Repository repo){ From 105f51887b194fcd8d9e446da9f97fc646229cb0 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:29:24 -0400 Subject: [PATCH 7/9] extract code to additional function --- .../java/pl/project13/jgit/JGitCommon.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/main/java/pl/project13/jgit/JGitCommon.java b/src/main/java/pl/project13/jgit/JGitCommon.java index 6420a4ca..efd6be1b 100644 --- a/src/main/java/pl/project13/jgit/JGitCommon.java +++ b/src/main/java/pl/project13/jgit/JGitCommon.java @@ -55,27 +55,9 @@ public Collection getTags(Repository repo, final ObjectId headId) throws try { Git git = Git.wrap(repo); walk = new RevWalk(repo); - List tagRefs = git.tagList().call(); final RevWalk finalWalk = walk; - Collection tagsForHeadCommit = Collections2.filter(tagRefs, new Predicate() { - @Override public boolean apply(Ref tagRef) { - boolean lightweightTag = tagRef.getObjectId().equals(headId); - - try { - // TODO make this configurable (most users shouldn't really care too much what kind of tag it is though) - return lightweightTag || finalWalk.parseTag(tagRef.getObjectId()).getObject().getId().equals(headId); // or normal tag - } catch (IOException e) { - return false; - } - } - }); - - Collection tags = Collections2.transform(tagsForHeadCommit, new Function() { - @Override public String apply(Ref input) { - return input.getName().replaceAll("refs/tags/", ""); - } - }); + Collection tags = getTags(git, headId, finalWalk); return tags; } finally { @@ -85,6 +67,27 @@ public Collection getTags(Repository repo, final ObjectId headId) throws } } + private Collection getTags(final Git git, final ObjectId headId, final RevWalk finalWalk) throws GitAPIException{ + List tagRefs = git.tagList().call(); + Collection tagsForHeadCommit = Collections2.filter(tagRefs, new Predicate() { + @Override public boolean apply(Ref tagRef) { + boolean lightweightTag = tagRef.getObjectId().equals(headId); + try { + // TODO make this configurable (most users shouldn't really care too much what kind of tag it is though) + return lightweightTag || finalWalk.parseTag(tagRef.getObjectId()).getObject().getId().equals(headId); // or normal tag + } catch (IOException e) { + return false; + } + } + }); + Collection tags = Collections2.transform(tagsForHeadCommit, new Function() { + @Override public String apply(Ref input) { + return input.getName().replaceAll("refs/tags/", ""); + } + }); + return tags; + } + public String getClosestTagName(@NotNull Repository repo){ Map> map = getClosestTagAsMap(repo); for(Map.Entry> entry : map.entrySet()){ From f536b31bd437752dc4f96bdddde44cf9d3c96af7 Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:31:56 -0400 Subject: [PATCH 8/9] SpotBugs: Resource leak: 'walk' is never closed --- src/main/java/pl/project13/jgit/JGitCommon.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/main/java/pl/project13/jgit/JGitCommon.java b/src/main/java/pl/project13/jgit/JGitCommon.java index efd6be1b..b48e4161 100644 --- a/src/main/java/pl/project13/jgit/JGitCommon.java +++ b/src/main/java/pl/project13/jgit/JGitCommon.java @@ -51,18 +51,11 @@ public JGitCommon(LoggerBridge log) { } public Collection getTags(Repository repo, final ObjectId headId) throws GitAPIException{ - RevWalk walk = null; - try { - Git git = Git.wrap(repo); - walk = new RevWalk(repo); - - final RevWalk finalWalk = walk; - Collection tags = getTags(git, headId, finalWalk); - - return tags; - } finally { - if (walk != null) { + try (Git git = Git.wrap(repo)) { + try(RevWalk walk = new RevWalk(repo)) { + Collection tags = getTags(git, headId, walk); walk.dispose(); + return tags; } } } From 5083c864bf39a1e2f356d98daed92f4620206fba Mon Sep 17 00:00:00 2001 From: TheSnoozer Date: Sat, 23 Sep 2017 23:34:41 -0400 Subject: [PATCH 9/9] SpotBugs: Dereference of the result of readLine() without nullcheck in pl.project13.maven.git.GitDirLocator.processGitDirFile(File) --- src/main/java/pl/project13/maven/git/GitDirLocator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/pl/project13/maven/git/GitDirLocator.java b/src/main/java/pl/project13/maven/git/GitDirLocator.java index 34a60538..57bec698 100644 --- a/src/main/java/pl/project13/maven/git/GitDirLocator.java +++ b/src/main/java/pl/project13/maven/git/GitDirLocator.java @@ -108,7 +108,9 @@ private File processGitDirFile(@NotNull File file) { // There should be just one line in the file, e.g. // "gitdir: /usr/local/src/parentproject/.git/modules/submodule" String line = reader.readLine(); - + if(line == null) { + return null; + } // Separate the key and the value in the string. String[] parts = line.split(": ");