@Test
 public void testVisitMehtodAccessFlags() {
   AsmClass fileClass = asmClassProvider.getClass("tags/File");
   assertThat(fileClass.getMethod("read()V").isPublic()).isTrue();
   AsmClass stringClass = asmClassProvider.getClass("java/lang/String");
   assertThat(stringClass.getMethod("toString()Ljava/lang/String;").isDeprecated()).isFalse();
 }
Exemplo n.º 2
0
 @Test
 public void testVisitTryCatchBlock() {
   AsmClass sourceFileClass = asmClassProvider.getClass("tags/SourceFile");
   AsmClass tagExceptionClass = asmClassProvider.getClass("tags/TagException");
   AsmMethod readSourceFileMethod = sourceFileClass.getMethod("readSourceFile()V");
   assertThat(readSourceFileMethod.getDistinctUsedAsmClasses()).contains(tagExceptionClass);
 }
 @Test
 public void testVisitMehtodThrows() {
   AsmClass fileClass = asmClassProvider.getClass("tags/File");
   assertThat(fileClass.getMethod("read()V").getThrows()).hasSize(1);
   assertThat(fileClass.getMethod("read()V").getThrows().get(0).getInternalName())
       .isEqualTo("tags/TagException");
   AsmClass stringClass = asmClassProvider.getClass("java/lang/String");
   assertThat(stringClass.getMethod("toString()Ljava/lang/String;").getThrows()).isEmpty();
 }
Exemplo n.º 4
0
 @Test
 public void testVisitTypeInsn() {
   AsmClass sourceFileClass = asmClassProvider.getClass("tags/SourceFile");
   AsmMethod constructor = sourceFileClass.getMethod("<init>()V");
   assertThat(
           constructor
               .getDistinctUsedAsmClasses()
               .contains(asmClassProvider.getClass("java/util/ArrayList")))
       .isNotNull();
 }
 @Test
 public void testResourceTouchedProperty() {
   AsmClass asmClass = asmClassProvider.getClass("properties/ResourceTouchedProperty");
   assertThat(asmClass.getField("unusedField").isUsed()).isFalse();
   assertThat(asmClass.getField("usedField").isUsed()).isTrue();
   assertThat(asmClass.getMethod("doPrivateJob()V").isUsed()).isTrue();
   assertThat(asmClass.getMethod("run()V").isUsed()).isFalse();
   assertThat(asmClass.isUsed()).isFalse();
   assertThat(asmClassProvider.getClass("java/lang/Runnable").isUsed()).isTrue();
 }
Exemplo n.º 6
0
 @Test
 public void testVisitFieldInsn() {
   AsmClass tagNameClass = asmClassProvider.getClass("tags/TagName");
   AsmField nameField = tagNameClass.getField("name");
   AsmMethod constructorWithString = tagNameClass.getMethod("<init>(Ljava/lang/String;)V");
   assertThat(constructorWithString.getCallsToField()).containsOnly(nameField);
 }
Exemplo n.º 7
0
 @Test
 public void testEmptyMethodProperty() {
   AsmClass asmClass = asmClassProvider.getClass("properties/EmptyMethodProperty");
   assertThat(asmClass.getMethod("notEmptyMethod()V").isEmpty()).isFalse();
   assertThat(asmClass.getMethod("emptyMethod()V").isEmpty()).isTrue();
   assertThat(asmClass.getMethod("emptyAbstractMethod()V").isEmpty()).isTrue();
 }
 @Test
 public void testInheritedMethodProperty() {
   AsmClass asmClass = asmClassProvider.getClass("properties/InheritedMethodsProperty");
   assertThat(asmClass.getMethod("equals(Ljava/lang/Object;)Z").isInherited()).isTrue();
   assertThat(asmClass.getMethod("notInheritedMethod()V").isInherited()).isFalse();
   assertThat(asmClass.getMethod("run()V").isInherited()).isTrue();
 }
 @Test
 public void testVisit() {
   AsmClass asmClass = asmClassProvider.getClass("java/lang/String");
   assertThat(asmClass.getInternalName()).isEqualTo("java/lang/String");
   assertThat(asmClass.isAbstract()).isFalse();
   assertThat(asmClass.isInterface()).isFalse();
 }
Exemplo n.º 10
0
 @Override
 public void visitFieldInsn(int opcode, String owner, String fieldName, String fieldDescription) {
   AsmClass targetClass = asmClassProvider.getClass(owner, DETAIL_LEVEL.NOTHING);
   AsmField targetField = targetClass.getFieldOrCreateIt(fieldName);
   method.addEdge(new AsmEdge(method, targetField, SourceCodeEdgeUsage.CALLS_FIELD, lineNumber));
   emptyMethod = false;
 }
Exemplo n.º 11
0
 @Override
 public void visitTryCatchBlock(Label start, Label end, Label handler, String exception) {
   if (exception != null) {
     AsmClass exceptionClass = asmClassProvider.getClass(exception, DETAIL_LEVEL.NOTHING);
     method.addEdge(new AsmEdge(method, exceptionClass, SourceCodeEdgeUsage.USES, lineNumber));
   }
   emptyMethod = false;
 }
Exemplo n.º 12
0
 @Test
 public void testVisitMethodInsn() {
   AsmClass sourceFileClass = asmClassProvider.getClass("tags/SourceFile");
   AsmMethod readMethod = sourceFileClass.getMethod("read()V");
   AsmMethod readSourceFileMethod = sourceFileClass.getMethod("readSourceFile()V");
   assertThat(readSourceFileMethod.getCallsToMethod()).contains(readMethod).hasSize(2);
   assertThat(readSourceFileMethod.getCallsToField()).hasSize(1);
 }
Exemplo n.º 13
0
 @Override
 public void visitLdcInsn(Object cst) {
   if (cst instanceof Type) {
     Type type = (Type) cst;
     AsmClass usedClass = asmClassProvider.getClass(type.getInternalName(), DETAIL_LEVEL.NOTHING);
     method.addEdge(new AsmEdge(method, usedClass, SourceCodeEdgeUsage.USES, lineNumber));
   }
   emptyMethod = false;
 }
 @Test
 public void testVisitFieldAccessFlags() {
   AsmClass asmClass = asmClassProvider.getClass("java/lang/String");
   assertThat(asmClass.getField("CASE_INSENSITIVE_ORDER")).isNotNull();
   assertThat(asmClass.getField("CASE_INSENSITIVE_ORDER").isStatic()).isTrue();
   assertThat(asmClass.getField("CASE_INSENSITIVE_ORDER").isPublic()).isTrue();
   assertThat(asmClass.getField("CASE_INSENSITIVE_ORDER").isFinal()).isTrue();
   assertThat(asmClass.getField("CASE_INSENSITIVE_ORDER").isDeprecated()).isFalse();
 }
Exemplo n.º 15
0
 @Override
 public void visitMethodInsn(
     int opcode, String owner, String methodName, String methodDescription) {
   if (isNotCallToJavaArrayMethod(owner)) {
     AsmClass targetClass = asmClassProvider.getClass(owner, DETAIL_LEVEL.STRUCTURE);
     AsmMethod targetMethod = targetClass.getMethodOrCreateIt(methodName + methodDescription);
     method.addEdge(
         new AsmEdge(method, targetMethod, SourceCodeEdgeUsage.CALLS_METHOD, lineNumber));
   }
   emptyMethod = false;
 }
  @Test
  public void testVisitMethod() {
    AsmClass asmClass = asmClassProvider.getClass("java/lang/String");
    assertThat(asmClass.getMethod("charAt(I)C")).isNotNull();
    assertThat(asmClass.getMethod("charAt(I)C").isPublic()).isTrue();
    assertThat(asmClass.getMethod("charAt(I)C").isDeprecated()).isFalse();
    assertThat(asmClass.getMethod("charAt(I)C").isStatic()).isFalse();
    assertThat(asmClass.getMethod("valueOf(C)Ljava/lang/String;").isStatic()).isTrue();

    asmClass = asmClassProvider.getClass("tags/File");
    AsmMethod getLines =
        asmClass.getMethod("read(Ljava/util/Collection;Ljava/lang/String;)Ljava/lang/String;");
    assertThat(getLines.getDistinctUsedAsmClasses().contains(new AsmClass("java/util/Collection")))
        .isTrue();
    assertThat(getLines.getDistinctUsedAsmClasses().contains(new AsmClass("tags/File"))).isTrue();
    assertThat(getLines.getDistinctUsedAsmClasses().contains(new AsmClass("java/lang/String")))
        .isTrue();
    assertThat(
            getLines
                .getDistinctUsedAsmClasses()
                .contains(new AsmClass("java/lang/RuntimeException")))
        .isTrue();
  }
 @Test
 public void testMethodBodyLoadedProperty() {
   AsmClass asmClass = asmClassProvider.getClass("properties/MethodBodyLoadedProperty");
   assertThat(asmClass.getMethod("doJob()V").isBodyLoaded()).isTrue();
   assertThat(asmClass.getMethod("run()V").isBodyLoaded()).isFalse();
 }
 @Test
 public void testVisitObjectField() {
   AsmClass asmClass = asmClassProvider.getClass("tags/SourceFile");
   AsmEdge pathAsmEdge = asmClass.getField("path").getOutgoingEdges().iterator().next();
   assertThat(pathAsmEdge.getTargetAsmClass().getInternalName()).isEqualTo("java/lang/String");
 }
Exemplo n.º 19
0
 @Override
 public void visitTypeInsn(int opcode, String internalName) {
   AsmClass usedClass = asmClassProvider.getClass(internalName, DETAIL_LEVEL.NOTHING);
   method.addEdge(new AsmEdge(method, usedClass, SourceCodeEdgeUsage.USES, lineNumber));
   emptyMethod = false;
 }