Skip to content

Commit fb643de

Browse files
committed
fix checkstyle and spotbugs issues
1 parent f6e1389 commit fb643de

35 files changed

Lines changed: 441 additions & 78 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
66
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
77

8-
name: Java CI with Gradle
8+
name: Build with Gradle
99

1010
on:
1111
push:

basicBlockBranchDistance/src/main/java/de/uni_passau/fim/auermich/instrumentation/branchdistance/BasicBlockBranchDistance.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import de.uni_passau.fim.auermich.instrumentation.branchdistance.dto.MethodInformation;
1313
import de.uni_passau.fim.auermich.instrumentation.branchdistance.utility.Utility;
1414
import de.uni_passau.fim.auermich.instrumentation.branchdistance.xml.ManifestParser;
15+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1516
import lanchon.multidexlib2.BasicDexFileNamer;
1617
import lanchon.multidexlib2.MultiDexIO;
1718
import org.apache.commons.io.FileUtils;
@@ -34,9 +35,11 @@ public class BasicBlockBranchDistance {
3435
private static final Logger LOGGER = LogManager.getLogger(BasicBlockBranchDistance.class);
3536

3637
// the path to the APK file
38+
@SuppressFBWarnings(value="MS_PKGPROTECT", justification="Required by Android Graphs lib.")
3739
public static File apkPath;
3840

3941
// the output path of the decoded APK
42+
@SuppressFBWarnings(value="MS_PKGPROTECT", justification="Required by Android Graphs lib.")
4043
public static File decodedAPKPath;
4144

4245
// whether only classes belonging to the app package should be instrumented

basicBlockBranchDistance/src/main/java/de/uni_passau/fim/auermich/instrumentation/branchdistance/analysis/Analyzer.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
import com.android.tools.smali.dexlib2.Format;
55
import com.android.tools.smali.dexlib2.Opcode;
6-
import com.android.tools.smali.dexlib2.analysis.*;
6+
import com.android.tools.smali.dexlib2.analysis.AnalyzedInstruction;
7+
import com.android.tools.smali.dexlib2.analysis.ClassPath;
8+
import com.android.tools.smali.dexlib2.analysis.DexClassProvider;
9+
import com.android.tools.smali.dexlib2.analysis.MethodAnalyzer;
10+
import com.android.tools.smali.dexlib2.analysis.RegisterType;
711
import com.android.tools.smali.dexlib2.builder.BuilderInstruction;
812
import com.android.tools.smali.dexlib2.builder.BuilderOffsetInstruction;
913
import com.android.tools.smali.dexlib2.builder.BuilderSwitchPayload;
@@ -22,10 +26,20 @@
2226
import de.uni_passau.fim.auermich.instrumentation.branchdistance.core.InstrumentationPoint;
2327
import de.uni_passau.fim.auermich.instrumentation.branchdistance.dto.MethodInformation;
2428
import de.uni_passau.fim.auermich.instrumentation.branchdistance.utility.Range;
29+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
2530
import org.apache.logging.log4j.LogManager;
2631
import org.apache.logging.log4j.Logger;
2732

28-
import java.util.*;
33+
import java.util.ArrayList;
34+
import java.util.EnumSet;
35+
import java.util.HashMap;
36+
import java.util.HashSet;
37+
import java.util.Iterator;
38+
import java.util.List;
39+
import java.util.Map;
40+
import java.util.Optional;
41+
import java.util.Set;
42+
import java.util.TreeSet;
2943
import java.util.stream.Collectors;
3044

3145
public final class Analyzer {
@@ -283,6 +297,7 @@ public static boolean isSwitchInstruction(final AnalyzedInstruction analyzedInst
283297
* @param methodInformation Encapsulates a method.
284298
* @return Returns ranges describing the start and end of try blocks.
285299
*/
300+
@SuppressFBWarnings(value="NP_NULL_ON_SOME_PATH")
286301
public static Set<Range> getTryBlocks(MethodInformation methodInformation) {
287302

288303
LOGGER.debug("Retrieving try blocks of method...");

basicBlockBranchDistance/src/main/java/de/uni_passau/fim/auermich/instrumentation/branchdistance/core/Instrumentation.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,20 @@
99
import com.android.tools.smali.dexlib2.builder.BuilderSwitchPayload;
1010
import com.android.tools.smali.dexlib2.builder.Label;
1111
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation;
12-
import com.android.tools.smali.dexlib2.builder.instruction.*;
12+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction10x;
13+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction11n;
14+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction11x;
15+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21c;
16+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21t;
17+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction22t;
18+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction22x;
19+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction30t;
20+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction31i;
21+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction31t;
22+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction32x;
23+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction35c;
24+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction3rc;
25+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderSwitchElement;
1326
import com.android.tools.smali.dexlib2.iface.ClassDef;
1427
import com.android.tools.smali.dexlib2.iface.Method;
1528
import com.android.tools.smali.dexlib2.iface.MethodImplementation;
@@ -28,7 +41,16 @@
2841
import org.apache.logging.log4j.LogManager;
2942
import org.apache.logging.log4j.Logger;
3043

31-
import java.util.*;
44+
import java.util.ArrayList;
45+
import java.util.Arrays;
46+
import java.util.Collections;
47+
import java.util.EnumSet;
48+
import java.util.HashSet;
49+
import java.util.Iterator;
50+
import java.util.List;
51+
import java.util.Map;
52+
import java.util.Set;
53+
import java.util.TreeSet;
3254
import java.util.stream.Collectors;
3355
import java.util.stream.IntStream;
3456

basicBlockBranchDistance/src/main/java/de/uni_passau/fim/auermich/instrumentation/branchdistance/dto/MethodInformation.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package de.uni_passau.fim.auermich.instrumentation.branchdistance.dto;
22

3-
import com.android.tools.smali.dexlib2.analysis.*;
3+
import com.android.tools.smali.dexlib2.analysis.AnalyzedInstruction;
4+
import com.android.tools.smali.dexlib2.analysis.ClassPath;
5+
import com.android.tools.smali.dexlib2.analysis.DexClassProvider;
6+
import com.android.tools.smali.dexlib2.analysis.MethodAnalyzer;
7+
import com.android.tools.smali.dexlib2.analysis.RegisterType;
48
import com.android.tools.smali.dexlib2.iface.ClassDef;
59
import com.android.tools.smali.dexlib2.iface.DexFile;
610
import com.android.tools.smali.dexlib2.iface.Method;
@@ -10,7 +14,12 @@
1014
import de.uni_passau.fim.auermich.instrumentation.branchdistance.core.InstrumentationPoint;
1115
import de.uni_passau.fim.auermich.instrumentation.branchdistance.utility.Range;
1216

13-
import java.util.*;
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
import java.util.Map;
20+
import java.util.Optional;
21+
import java.util.Set;
22+
import java.util.TreeSet;
1423

1524
/**
1625
* Stores all the relevant information

basicBlockBranchDistance/src/main/java/de/uni_passau/fim/auermich/instrumentation/branchdistance/utility/Range.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ public boolean equals(Object o) {
4545
return true;
4646
}
4747

48+
if (o == null) {
49+
return false;
50+
}
51+
4852
if (this.getClass() != o.getClass()) {
4953
return false;
5054
}

basicBlockBranchDistance/src/main/java/de/uni_passau/fim/auermich/instrumentation/branchdistance/utility/Utility.java

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,20 @@
1212
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation;
1313
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction3rc;
1414
import com.android.tools.smali.dexlib2.dexbacked.value.DexBackedTypeEncodedValue;
15-
import com.android.tools.smali.dexlib2.iface.*;
15+
import com.android.tools.smali.dexlib2.iface.Annotation;
16+
import com.android.tools.smali.dexlib2.iface.AnnotationElement;
17+
import com.android.tools.smali.dexlib2.iface.ClassDef;
18+
import com.android.tools.smali.dexlib2.iface.DexFile;
19+
import com.android.tools.smali.dexlib2.iface.Method;
20+
import com.android.tools.smali.dexlib2.iface.MethodImplementation;
1621
import com.android.tools.smali.dexlib2.immutable.ImmutableClassDef;
1722
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod;
1823
import com.android.tools.smali.smali.SmaliTestUtils;
19-
import com.google.common.base.Charsets;
2024
import com.google.common.io.ByteSource;
2125
import de.uni_passau.fim.auermich.instrumentation.branchdistance.BasicBlockBranchDistance;
2226
import de.uni_passau.fim.auermich.instrumentation.branchdistance.core.InstrumentationPoint;
2327
import de.uni_passau.fim.auermich.instrumentation.branchdistance.dto.MethodInformation;
28+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
2429
import lanchon.multidexlib2.BasicDexFileNamer;
2530
import lanchon.multidexlib2.DexIO;
2631
import lanchon.multidexlib2.MultiDexIO;
@@ -29,9 +34,25 @@
2934
import org.apache.logging.log4j.Logger;
3035
import org.jspecify.annotations.NonNull;
3136

32-
import java.io.*;
37+
import java.io.BufferedReader;
38+
import java.io.File;
39+
import java.io.FileNotFoundException;
40+
import java.io.FileOutputStream;
41+
import java.io.IOException;
42+
import java.io.InputStream;
43+
import java.io.InputStreamReader;
44+
import java.io.OutputStream;
45+
import java.io.PrintStream;
3346
import java.nio.charset.StandardCharsets;
34-
import java.util.*;
47+
import java.util.AbstractSet;
48+
import java.util.ArrayList;
49+
import java.util.HashSet;
50+
import java.util.Iterator;
51+
import java.util.LinkedList;
52+
import java.util.List;
53+
import java.util.Queue;
54+
import java.util.Set;
55+
import java.util.TreeSet;
3556
import java.util.logging.Handler;
3657
import java.util.logging.Level;
3758
import java.util.regex.Pattern;
@@ -50,7 +71,7 @@ public final class Utility {
5071
* It seems that certain resource classes are API dependent, e.g.
5172
* "R$interpolator" is only available in API 21.
5273
*/
53-
private static final Set<String> resourceClasses = new HashSet<String>() {{
74+
private static final Set<String> RESOURCE_CLASSES = new HashSet<>() {{
5475
add("R$anim");
5576
add("R$attr");
5677
add("R$bool");
@@ -125,7 +146,7 @@ public static boolean isResourceClass(ClassDef classDef) {
125146
}
126147

127148
// check for inner R classes
128-
for (String resourceClass : resourceClasses) {
149+
for (String resourceClass : RESOURCE_CLASSES) {
129150
if (className.contains(resourceClass)) {
130151
return true;
131152
}
@@ -279,6 +300,7 @@ public static File decodeAPK(File apkPath) {
279300
*
280301
* @param trace The trace denoting a basic block of a lifecycle method.
281302
*/
303+
@SuppressFBWarnings(value="DM_DEFAULT_ENCODING")
282304
public static synchronized void writeBasicBlockForLifecycleMethod(final String trace) {
283305

284306
final File blocksFile = new File(OUTPUT_BLOCKS_FILE);
@@ -297,6 +319,7 @@ public static synchronized void writeBasicBlockForLifecycleMethod(final String t
297319
*
298320
* @param methodInformation A description of the instrumented method.
299321
*/
322+
@SuppressFBWarnings(value="DM_DEFAULT_ENCODING")
300323
public static synchronized void writeBasicBlocksAndInstrumentationPoints(final MethodInformation methodInformation) {
301324

302325
final File blocksFile = new File(OUTPUT_BLOCKS_FILE);
@@ -358,6 +381,7 @@ public static synchronized void writeBasicBlocksAndInstrumentationPoints(final M
358381
*
359382
* @param methodInformation Encapsulates a method.
360383
*/
384+
@SuppressFBWarnings(value="DM_DEFAULT_ENCODING")
361385
public static synchronized void writeBranches(MethodInformation methodInformation) {
362386

363387
File file = new File(OUTPUT_BRANCHES_FILE);
@@ -394,6 +418,7 @@ public static synchronized void writeBranches(MethodInformation methodInformatio
394418
* @throws FileNotFoundException Should never be thrown.
395419
*/
396420
@SuppressWarnings("unused")
421+
@SuppressFBWarnings(value="DM_DEFAULT_ENCODING")
397422
public static void writeInstructionAndBranchCount(final MethodInformation methodInformation) throws FileNotFoundException {
398423

399424
File file = new File(OUTPUT_BLOCKS_FILE);
@@ -429,6 +454,7 @@ public static String dottedClassName(String className) {
429454
* @return The pattern representing classes that should not be instrumented.
430455
* @throws IOException If the file containing excluded classes is not available.
431456
*/
457+
@SuppressFBWarnings(value="DM_DEFAULT_ENCODING")
432458
public static Pattern readExcludePatterns() throws IOException {
433459

434460
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
@@ -444,10 +470,11 @@ public static Pattern readExcludePatterns() throws IOException {
444470
StringBuilder builder = new StringBuilder();
445471
boolean first = true;
446472
while ((line = reader.readLine()) != null) {
447-
if (first)
473+
if (first) {
448474
first = false;
449-
else
475+
} else {
450476
builder.append("|");
477+
}
451478
builder.append(line);
452479
}
453480
reader.close();
@@ -833,8 +860,9 @@ public static void reOrderRegister(BuilderInstruction instruction, int registerN
833860
try {
834861
int value = field.getInt(instruction);
835862

836-
if (value >= registerNumber)
863+
if (value >= registerNumber) {
837864
field.set(instruction, value + shift);
865+
}
838866

839867
} catch (IllegalAccessException e) {
840868
e.printStackTrace();

basicBlockCoverage/src/main/java/de/uni_passau/fim/auermich/instrumentation/basicblockcoverage/analysis/Analyzer.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
import com.android.tools.smali.dexlib2.Format;
55
import com.android.tools.smali.dexlib2.Opcode;
6-
import com.android.tools.smali.dexlib2.analysis.*;
6+
import com.android.tools.smali.dexlib2.analysis.AnalyzedInstruction;
7+
import com.android.tools.smali.dexlib2.analysis.ClassPath;
8+
import com.android.tools.smali.dexlib2.analysis.DexClassProvider;
9+
import com.android.tools.smali.dexlib2.analysis.MethodAnalyzer;
10+
import com.android.tools.smali.dexlib2.analysis.RegisterType;
711
import com.android.tools.smali.dexlib2.builder.BuilderInstruction;
812
import com.android.tools.smali.dexlib2.builder.BuilderOffsetInstruction;
913
import com.android.tools.smali.dexlib2.builder.BuilderSwitchPayload;
@@ -22,10 +26,20 @@
2226
import de.uni_passau.fim.auermich.instrumentation.basicblockcoverage.core.InstrumentationPoint;
2327
import de.uni_passau.fim.auermich.instrumentation.basicblockcoverage.dto.MethodInformation;
2428
import de.uni_passau.fim.auermich.instrumentation.basicblockcoverage.utility.Range;
29+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
2530
import org.apache.logging.log4j.LogManager;
2631
import org.apache.logging.log4j.Logger;
2732

28-
import java.util.*;
33+
import java.util.ArrayList;
34+
import java.util.EnumSet;
35+
import java.util.HashMap;
36+
import java.util.HashSet;
37+
import java.util.Iterator;
38+
import java.util.List;
39+
import java.util.Map;
40+
import java.util.Optional;
41+
import java.util.Set;
42+
import java.util.TreeSet;
2943
import java.util.stream.Collectors;
3044

3145
public final class Analyzer {
@@ -241,6 +255,7 @@ public static boolean isSwitchInstruction(final AnalyzedInstruction analyzedInst
241255
* @param methodInformation Encapsulates a method.
242256
* @return Returns ranges describing the start and end of try blocks.
243257
*/
258+
@SuppressFBWarnings(value="NP_NULL_ON_SOME_PATH")
244259
public static Set<Range> getTryBlocks(MethodInformation methodInformation) {
245260

246261
LOGGER.debug("Retrieving try blocks of method...");

basicBlockCoverage/src/main/java/de/uni_passau/fim/auermich/instrumentation/basicblockcoverage/core/Instrumentation.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
import com.android.tools.smali.dexlib2.builder.BuilderInstruction;
66
import com.android.tools.smali.dexlib2.builder.Label;
77
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation;
8-
import com.android.tools.smali.dexlib2.builder.instruction.*;
8+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction11n;
9+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction21c;
10+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction22x;
11+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction30t;
12+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction31i;
13+
import com.android.tools.smali.dexlib2.builder.instruction.BuilderInstruction3rc;
914
import com.android.tools.smali.dexlib2.iface.MethodImplementation;
1015
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference;
1116
import com.android.tools.smali.dexlib2.immutable.reference.ImmutableStringReference;
@@ -17,7 +22,14 @@
1722
import org.apache.logging.log4j.LogManager;
1823
import org.apache.logging.log4j.Logger;
1924

20-
import java.util.*;
25+
import java.util.ArrayList;
26+
import java.util.Collections;
27+
import java.util.EnumSet;
28+
import java.util.Iterator;
29+
import java.util.List;
30+
import java.util.Map;
31+
import java.util.Set;
32+
import java.util.TreeSet;
2133
import java.util.stream.Collectors;
2234
import java.util.stream.IntStream;
2335

basicBlockCoverage/src/main/java/de/uni_passau/fim/auermich/instrumentation/basicblockcoverage/dto/MethodInformation.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package de.uni_passau.fim.auermich.instrumentation.basicblockcoverage.dto;
22

3-
import com.android.tools.smali.dexlib2.analysis.*;
3+
import com.android.tools.smali.dexlib2.analysis.AnalyzedInstruction;
4+
import com.android.tools.smali.dexlib2.analysis.ClassPath;
5+
import com.android.tools.smali.dexlib2.analysis.DexClassProvider;
6+
import com.android.tools.smali.dexlib2.analysis.MethodAnalyzer;
7+
import com.android.tools.smali.dexlib2.analysis.RegisterType;
48
import com.android.tools.smali.dexlib2.iface.ClassDef;
59
import com.android.tools.smali.dexlib2.iface.DexFile;
610
import com.android.tools.smali.dexlib2.iface.Method;
@@ -9,7 +13,12 @@
913
import de.uni_passau.fim.auermich.instrumentation.basicblockcoverage.core.InstrumentationPoint;
1014
import de.uni_passau.fim.auermich.instrumentation.basicblockcoverage.utility.Range;
1115

12-
import java.util.*;
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
import java.util.Map;
19+
import java.util.Optional;
20+
import java.util.Set;
21+
import java.util.TreeSet;
1322

1423
/**
1524
* Stores all the relevant information

0 commit comments

Comments
 (0)