Search in sources :

Example 6 with ASTMethodOrConstructorDeclaration

use of net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration in project pmd by pmd.

the class SigMaskTest method testOperationVisibility.

@Test
public void testOperationVisibility() {
    List<ASTMethodOrConstructorDeclaration> nodes = getOrderedNodes(ASTMethodOrConstructorDeclaration.class, TEST_OPERATIONS);
    JavaOperationSigMask mask = new JavaOperationSigMask();
    mask.coverAbstract();
    mask.restrictVisibilitiesTo(Visibility.PUBLIC);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node.isPublic()) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
    mask.restrictVisibilitiesTo(Visibility.PRIVATE);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node.isPrivate()) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
    mask.restrictVisibilitiesTo(Visibility.PACKAGE);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node.isPackagePrivate()) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
    mask.restrictVisibilitiesTo(Visibility.PROTECTED);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node.isProtected()) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
}
Also used : JavaOperationSigMask(net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSigMask) ASTMethodOrConstructorDeclaration(net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration) Test(org.junit.Test)

Example 7 with ASTMethodOrConstructorDeclaration

use of net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration in project pmd by pmd.

the class SigMaskTest method testOperationRoles.

@Test
public void testOperationRoles() {
    List<ASTMethodOrConstructorDeclaration> nodes = getOrderedNodes(ASTMethodOrConstructorDeclaration.class, TEST_OPERATIONS);
    JavaOperationSigMask mask = new JavaOperationSigMask();
    mask.restrictRolesTo(Role.STATIC);
    mask.coverAbstract();
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node.isStatic()) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
    mask.restrictRolesTo(Role.CONSTRUCTOR);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node instanceof ASTConstructorDeclaration) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
    mask.restrictRolesTo(Role.GETTER_OR_SETTER);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node instanceof ASTMethodDeclaration && ((ASTMethodDeclaration) node).getMethodName().matches("(get|set).*")) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
    mask.restrictRolesTo(Role.METHOD);
    for (ASTMethodOrConstructorDeclaration node : nodes) {
        if (node instanceof ASTMethodDeclaration && !node.isStatic() && !((ASTMethodDeclaration) node).getMethodName().matches("(get|set).*")) {
            assertTrue(mask.covers(JavaOperationSignature.buildFor(node)));
        } else {
            assertFalse(mask.covers(JavaOperationSignature.buildFor(node)));
        }
    }
}
Also used : ASTConstructorDeclaration(net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration) ASTMethodDeclaration(net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration) JavaOperationSigMask(net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSigMask) ASTMethodOrConstructorDeclaration(net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration) Test(org.junit.Test)

Example 8 with ASTMethodOrConstructorDeclaration

use of net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration in project pmd by pmd.

the class SignatureTest method visibilityTest.

// common to operation and field signatures
@Test
public void visibilityTest() {
    final String TEST = "class Bzaz{ " + "public int bar;" + "String k;" + "protected double d;" + "private int i;" + "protected int x;" + "public Bzaz(){} " + "void bar(){} " + "protected void foo(int x){}" + "private Bzaz(int y){}" + "}";
    List<ASTMethodOrConstructorDeclaration> operationDeclarations = getOrderedNodes(ASTMethodOrConstructorDeclaration.class, TEST);
    List<ASTFieldDeclaration> fieldDeclarations = getOrderedNodes(ASTFieldDeclaration.class, TEST);
    List<JavaSignature> sigs = new ArrayList<>();
    for (ASTMethodOrConstructorDeclaration node : operationDeclarations) {
        sigs.add(JavaOperationSignature.buildFor(node));
    }
    // operations
    assertEquals(Visibility.PUBLIC, sigs.get(0).visibility);
    assertEquals(Visibility.PACKAGE, sigs.get(1).visibility);
    assertEquals(Visibility.PROTECTED, sigs.get(2).visibility);
    assertEquals(Visibility.PRIVATE, sigs.get(3).visibility);
    sigs.clear();
    for (ASTFieldDeclaration node : fieldDeclarations) {
        sigs.add(JavaFieldSignature.buildFor(node));
    }
    // fields
    assertEquals(Visibility.PUBLIC, sigs.get(0).visibility);
    assertEquals(Visibility.PACKAGE, sigs.get(1).visibility);
    assertEquals(Visibility.PROTECTED, sigs.get(2).visibility);
    assertEquals(Visibility.PRIVATE, sigs.get(3).visibility);
}
Also used : ASTFieldDeclaration(net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration) ArrayList(java.util.ArrayList) JavaSignature(net.sourceforge.pmd.lang.java.multifile.signature.JavaSignature) ASTMethodOrConstructorDeclaration(net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration) Test(org.junit.Test)

Example 9 with ASTMethodOrConstructorDeclaration

use of net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration in project pmd by pmd.

the class PackageStatsTest method testAddOperation.

@Test
public void testAddOperation() {
    final String TEST = "package org.foo; class Boo{ " + "public void foo(){}}";
    ASTMethodOrConstructorDeclaration node = getOrderedNodes(ASTMethodDeclaration.class, TEST).get(0);
    JavaOperationQualifiedName qname = node.getQualifiedName();
    JavaOperationSignature signature = JavaOperationSignature.buildFor(node);
    assertFalse(pack.hasMatchingSig(qname, new JavaOperationSigMask()));
    ClassStats clazz = pack.getClassStats(qname.getClassName(), true);
    clazz.addOperation("foo()", signature);
    assertTrue(pack.hasMatchingSig(qname, new JavaOperationSigMask()));
}
Also used : ASTMethodDeclaration(net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration) JavaOperationSigMask(net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSigMask) JavaOperationSignature(net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSignature) JavaOperationQualifiedName(net.sourceforge.pmd.lang.java.qname.JavaOperationQualifiedName) ASTMethodOrConstructorDeclaration(net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration) Test(org.junit.Test)

Aggregations

ASTMethodOrConstructorDeclaration (net.sourceforge.pmd.lang.java.ast.ASTMethodOrConstructorDeclaration)9 Test (org.junit.Test)7 ArrayList (java.util.ArrayList)4 JavaOperationSigMask (net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSigMask)4 JavaOperationSignature (net.sourceforge.pmd.lang.java.multifile.signature.JavaOperationSignature)4 ASTMethodDeclaration (net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration)2 ASTAnyTypeDeclaration (net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration)1 ASTConstructorDeclaration (net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration)1 ASTFieldDeclaration (net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration)1 JavaParserVisitorReducedAdapter (net.sourceforge.pmd.lang.java.ast.JavaParserVisitorReducedAdapter)1 JavaSignature (net.sourceforge.pmd.lang.java.multifile.signature.JavaSignature)1 JavaOperationQualifiedName (net.sourceforge.pmd.lang.java.qname.JavaOperationQualifiedName)1 MetricMemoizer (net.sourceforge.pmd.lang.metrics.MetricMemoizer)1