/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.apex.rule.apexunit; import net.sourceforge.pmd.lang.apex.ast.ASTModifierNode; import net.sourceforge.pmd.lang.apex.ast.ASTUserClass; import net.sourceforge.pmd.lang.apex.ast.ApexNode; import net.sourceforge.pmd.lang.apex.rule.AbstractApexRule; import apex.jorje.services.Version; /** * Do special checks for apex unit test classes and methods * * @author a.subramanian */ public abstract class AbstractApexUnitTestRule extends AbstractApexRule { public AbstractApexUnitTestRule() { setProperty(CODECLIMATE_CATEGORIES, new String[] { "Bug Risk" }); setProperty(CODECLIMATE_REMEDIATION_MULTIPLIER, 100); setProperty(CODECLIMATE_BLOCK_HIGHLIGHTING, false); } /** * Don't bother visiting this class if it's not a class with @isTest and * newer than API v24 */ @Override public Object visit(final ASTUserClass node, final Object data) { final Version classApiVersion = node.getNode().getDefiningType().getCodeUnitDetails().getVersion(); if (!isTestMethodOrClass(node) && classApiVersion.isGreaterThan(Version.V174)) { return data; } return super.visit(node, data); } boolean isTestMethodOrClass(final ApexNode<?> node) { final ASTModifierNode modifierNode = node.getFirstChildOfType(ASTModifierNode.class); return modifierNode != null && modifierNode.getNode().getModifiers().isTest(); } }