From 72c754e874c7afce476b2d2e158e12abc1216b6f Mon Sep 17 00:00:00 2001 From: Ben Liblit Date: Thu, 11 May 2017 17:47:19 +0200 Subject: [PATCH] Declare private methods static wherever possible If a method is private, there's no risk that a subclass elsewhere might be overriding it and depending on dynamic dispatch to choose the right implementation. So all of these private methods can safely be declared static without risk of regression in either WALA code or unseen third-party code. --- .../jdt/JDTJava2CAstTranslator.java | 6 ++--- .../jdt/ecj/ECJSourceModuleTranslator.java | 2 +- .../ibm/wala/cast/java/test/JavaIRTests.java | 2 +- .../ast/SynchronizedBlockDuplicator.java | 4 ++-- .../java/loader/JavaSourceLoaderImpl.java | 2 +- .../translator/JavaCAst2IRTranslator.java | 4 ++-- .../wala/cast/js/test/TestRhinoSourceMap.java | 2 +- .../js/translator/RhinoToAstTranslator.java | 24 +++++++++---------- .../wala/cast/js/test/TestForInLoopHack.java | 2 +- .../cast/js/test/TestPointerAnalyses.java | 8 +++---- .../FieldBasedCallGraphBuilder.java | 8 +++---- .../OptimisticCallgraphBuilder.java | 4 ++-- .../fieldbased/flowgraph/FlowGraph.java | 2 +- .../cast/js/html/DefaultSourceExtractor.java | 2 +- .../cast/js/html/DomLessSourceExtractor.java | 6 ++--- ...ScriptFunctionApplyContextInterpreter.java | 8 +++---- ...JavaScriptFunctionApplyTargetSelector.java | 4 ++-- ...vaScriptFunctionDotCallTargetSelector.java | 6 ++--- .../RecursionCheckContextSelector.java | 6 ++--- .../correlations/CorrelationFinder.java | 2 +- .../extraction/ClosureExtractor.java | 2 +- .../CorrelatedPairExtractionPolicy.java | 4 ++-- .../JavaScriptConstructorFunctions.java | 4 ++-- .../cast/js/translator/JSAstTranslator.java | 2 +- .../ibm/wala/cast/test/TestCAstPattern.java | 2 +- .../AstSSAPropagationCallGraphBuilder.java | 2 +- .../cast/ir/ssa/AbstractSSAConversion.java | 6 ++--- .../ibm/wala/cast/ir/ssa/SSAConversion.java | 4 ++-- .../cast/ir/translator/AstTranslator.java | 20 ++++++++-------- .../com/ibm/wala/cast/util/CAstPrinter.java | 2 +- .../wala/core/tests/basic/PrimitivesTest.java | 12 +++++----- .../wala/core/tests/callGraph/CPATest.java | 2 +- .../tests/callGraph/PiNodeCallGraphTest.java | 4 ++-- .../core/tests/callGraph/ReflectionTest.java | 2 +- .../core/tests/demandpa/AbstractPtrTest.java | 2 +- .../ExceptionAnalysis2EdgeFilterTest.java | 6 ++--- .../core/tests/ir/DeterministicIRTest.java | 2 +- .../tests/shrike/DynamicCallGraphTest.java | 2 +- .../shrike/DynamicCallGraphTestBase.java | 2 +- .../typeInference/DalvikTypeInference.java | 2 +- .../wala/dalvik/classLoader/DexIMethod.java | 2 +- .../classLoader/WDexClassLoaderImpl.java | 4 ++-- .../parameters/FlatInstantiator.java | 2 +- .../androidModel/parameters/Instantiator.java | 2 +- .../parameters/ReuseParameters.java | 4 ++-- .../cfa/IntentContextInterpreter.java | 2 +- .../ssa/AbstractIntRegisterMachine.java | 6 ++--- .../ibm/wala/dalvik/ssa/DexSSABuilder.java | 2 +- .../dalvik/util/AndroidEntryPointLocator.java | 10 ++++---- .../java/test/TypeInferenceAssertion.java | 2 +- .../jdt/JDTSourceModuleTranslator.java | 2 +- .../EclipseJavaScriptAnalysisEngine.java | 2 +- .../wala/ide/util/EclipseFileProvider.java | 4 ++-- .../ibm/wala/ide/util/EclipseProjectPath.java | 6 ++--- .../org/scandroid/flow/OutflowAnalysis.java | 2 +- .../functions/TaintTransferFunctions.java | 6 ++--- .../org/scandroid/spec/CallRetSourceSpec.java | 4 ++-- .../synthmethod/SSAtoXMLVisitor.java | 2 +- .../synthmethod/XMLSummaryWriter.java | 2 +- .../scandroid/util/CLISCanDroidOptions.java | 2 +- .../org/scandroid/util/EntryPoints.java | 2 +- .../wala/shrike/copywriter/CopyWriter.java | 2 +- .../src/com/ibm/wala/shrikeBT/Compiler.java | 2 +- .../src/com/ibm/wala/shrikeBT/Decoder.java | 4 ++-- .../com/ibm/wala/shrikeBT/MethodEditor.java | 2 +- .../ibm/wala/shrikeBT/analysis/Analyzer.java | 6 ++--- .../ibm/wala/shrikeBT/shrikeCT/CTDecoder.java | 2 +- .../wala/shrikeCT/StackMapTableWriter.java | 2 +- .../ibm/wala/sourcepos/MethodPositions.java | 4 ++-- .../com/ibm/wala/util/collections/Pair.java | 4 ++-- .../wala/util/collections/TwoLevelVector.java | 6 ++--- .../util/intset/BimodalMutableIntSet.java | 2 +- .../ibm/wala/util/intset/BitVectorIntSet.java | 2 +- .../ibm/wala/util/intset/OffsetBitVector.java | 2 +- .../wala/util/intset/TwoLevelIntVector.java | 6 ++--- .../ibm/wala/util/processes/JavaLauncher.java | 2 +- .../com/ibm/wala/util/processes/Launcher.java | 10 ++++---- 77 files changed, 158 insertions(+), 158 deletions(-) diff --git a/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java b/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java index 0f25e13c5..796787785 100644 --- a/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java +++ b/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/JDTJava2CAstTranslator.java @@ -396,7 +396,7 @@ public abstract class JDTJava2CAstTranslator { } - private boolean isInterface(AbstractTypeDeclaration decl) { + private static boolean isInterface(AbstractTypeDeclaration decl) { return decl instanceof AnnotationTypeDeclaration || (decl instanceof TypeDeclaration && ((TypeDeclaration)decl).isInterface()); } @@ -640,7 +640,7 @@ public abstract class JDTJava2CAstTranslator { return visit(fakeCtor, classBinding, oldContext, inits); } - private IMethodBinding findDefaultCtor(ITypeBinding superClass) { + private static IMethodBinding findDefaultCtor(ITypeBinding superClass) { for (IMethodBinding met : superClass.getDeclaredMethods()) { if (met.isConstructor() && met.getParameterTypes().length == 0) return met; @@ -1832,7 +1832,7 @@ public abstract class JDTJava2CAstTranslator { * @param isPrivate * @return */ - private ITypeBinding findClosestEnclosingClassSubclassOf(ITypeBinding typeOfThis, ITypeBinding owningType, boolean isPrivate) { + private static ITypeBinding findClosestEnclosingClassSubclassOf(ITypeBinding typeOfThis, ITypeBinding owningType, boolean isPrivate) { // GENERICS // if (owningType.isParameterizedType()) // owningType = owningType.getTypeDeclaration(); diff --git a/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/ecj/ECJSourceModuleTranslator.java b/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/ecj/ECJSourceModuleTranslator.java index fa0607287..692bb3cec 100644 --- a/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/ecj/ECJSourceModuleTranslator.java +++ b/com.ibm.wala.cast.java.ecj/src/com/ibm/wala/cast/java/translator/jdt/ecj/ECJSourceModuleTranslator.java @@ -128,7 +128,7 @@ public class ECJSourceModuleTranslator implements SourceModuleTranslator { libs = paths.snd; } - private Pair computeClassPath(AnalysisScope scope) { + private static Pair computeClassPath(AnalysisScope scope) { List sources = new LinkedList<>(); List libs = new LinkedList<>(); for (ClassLoaderReference cl : scope.getLoaders()) { diff --git a/com.ibm.wala.cast.java.test/src/com/ibm/wala/cast/java/test/JavaIRTests.java b/com.ibm.wala.cast.java.test/src/com/ibm/wala/cast/java/test/JavaIRTests.java index b0e98d95d..05238fdb8 100644 --- a/com.ibm.wala.cast.java.test/src/com/ibm/wala/cast/java/test/JavaIRTests.java +++ b/com.ibm.wala.cast.java.test/src/com/ibm/wala/cast/java/test/JavaIRTests.java @@ -596,7 +596,7 @@ public abstract class JavaIRTests extends IRTests { runTest(singleTestSrc(), rtJar, simpleTestEntryPoint(), emptyList, true); } - private MethodReference getSliceRootReference(String className, String methodName, String methodDescriptor) { + private static MethodReference getSliceRootReference(String className, String methodName, String methodDescriptor) { TypeName clsName = TypeName.string2TypeName("L" + className.replace('.', '/')); TypeReference clsRef = TypeReference.findOrCreate(JavaSourceAnalysisScope.SOURCE, clsName); diff --git a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/examples/ast/SynchronizedBlockDuplicator.java b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/examples/ast/SynchronizedBlockDuplicator.java index a2f0a9c45..67d6a220d 100644 --- a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/examples/ast/SynchronizedBlockDuplicator.java +++ b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/examples/ast/SynchronizedBlockDuplicator.java @@ -164,7 +164,7 @@ public class SynchronizedBlockDuplicator extends return oldTarget; } - private boolean contains(RewriteContext c, CAstNode n) { + private static boolean contains(RewriteContext c, CAstNode n) { if (c instanceof SyncContext) { return ((SyncContext) c).containsNode(n); } else { @@ -176,7 +176,7 @@ public class SynchronizedBlockDuplicator extends * does root represent a synchronized block? if so, return the variable whose * lock is acquired. otherwise, return null */ - private String isSynchronizedOnVar(CAstNode root) { + private static String isSynchronizedOnVar(CAstNode root) { if (root.getKind() == CAstNode.UNWIND) { CAstNode unwindBody = root.getChild(0); if (unwindBody.getKind() == CAstNode.BLOCK_STMT) { diff --git a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java index f8640b6ae..7d315b2cf 100644 --- a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java +++ b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java @@ -535,7 +535,7 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl { ((JavaClass) owner).addField(n); } - private TypeName toWALATypeName(CAstType type) { + private static TypeName toWALATypeName(CAstType type) { return TypeName.string2TypeName(type.getName()); } diff --git a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java index 5fa8d7acd..b9d8662a3 100644 --- a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java +++ b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/translator/JavaCAst2IRTranslator.java @@ -167,7 +167,7 @@ public class JavaCAst2IRTranslator extends AstTranslator { processExceptions(newNode, context); } - private void processExceptions(CAstNode n, WalkContext context) { + private static void processExceptions(CAstNode n, WalkContext context) { context.cfg().addPreNode(n, context.getUnwindState()); context.cfg().newBlock(true); @@ -412,7 +412,7 @@ public class JavaCAst2IRTranslator extends AstTranslator { } } - private CAstType getType(final String name) { + private static CAstType getType(final String name) { return new CAstType.Class() { @Override diff --git a/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestRhinoSourceMap.java b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestRhinoSourceMap.java index 5078c0ccd..db602142d 100644 --- a/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestRhinoSourceMap.java +++ b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestRhinoSourceMap.java @@ -153,7 +153,7 @@ public class TestRhinoSourceMap { checkFunctionBodies("jquery_spec_test.js", jquery_spec_testSource); } - private void checkFunctionBodies(String fileName, String[][] assertions) throws IOException, ClassHierarchyException { + private static void checkFunctionBodies(String fileName, String[][] assertions) throws IOException, ClassHierarchyException { Map sources = HashMapFactory.make(); for(String[] assertion : assertions) { sources.put(assertion[0], assertion[1]); diff --git a/com.ibm.wala.cast.js.rhino/source/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java b/com.ibm.wala.cast.js.rhino/source/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java index 2d7b0878a..715838543 100644 --- a/com.ibm.wala.cast.js.rhino/source/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java +++ b/com.ibm.wala.cast.js.rhino/source/com/ibm/wala/cast/js/translator/RhinoToAstTranslator.java @@ -213,7 +213,7 @@ public class RhinoToAstTranslator implements TranslatorToCAst { } - private String operationReceiverName(int operationIndex) { + private static String operationReceiverName(int operationIndex) { return "$$destructure$rcvr" + operationIndex; } @@ -221,7 +221,7 @@ public class RhinoToAstTranslator implements TranslatorToCAst { return Ast.makeNode(CAstNode.VAR, Ast.makeConstant(operationReceiverName(operationIndex))); } - private String operationElementName(int operationIndex) { + private static String operationElementName(int operationIndex) { return "$$destructure$elt" + operationIndex; } @@ -229,7 +229,7 @@ public class RhinoToAstTranslator implements TranslatorToCAst { return Ast.makeNode(CAstNode.VAR, Ast.makeConstant(operationElementName(operationIndex))); } - private CAstNode translateOpcode(int nodeType) { + private static CAstNode translateOpcode(int nodeType) { switch (nodeType) { case Token.POS: case Token.ADD: @@ -311,26 +311,26 @@ public class RhinoToAstTranslator implements TranslatorToCAst { return makeCtorCall(value, arguments, context); } - private boolean isPrologueScript(WalkContext context) { + private static boolean isPrologueScript(WalkContext context) { return JavaScriptLoader.bootstrapFileNames.contains(context.script()); } - private Node getCallTarget(FunctionCall n) { + private static Node getCallTarget(FunctionCall n) { return n.getTarget(); } /** * is n a call to "primitive" within our synthetic modeling code? */ - private boolean isPrimitiveCall(WalkContext context, FunctionCall n) { + private static boolean isPrimitiveCall(WalkContext context, FunctionCall n) { return isPrologueScript(context) && n.getType() == Token.CALL && getCallTarget(n).getType() == Token.NAME && getCallTarget(n).getString().equals("primitive"); } - private Node getNewTarget(NewExpression n) { + private static Node getNewTarget(NewExpression n) { return n.getTarget(); } - private boolean isPrimitiveCreation(WalkContext context, NewExpression n) { + private static boolean isPrimitiveCreation(WalkContext context, NewExpression n) { Node target = getNewTarget(n); return isPrologueScript(context) && n.getType() == Token.NEW && target.getType() == Token.NAME && target.getString().equals("Primitives"); @@ -585,14 +585,14 @@ public class RhinoToAstTranslator implements TranslatorToCAst { return cn; } - private List