Class TooManyMethodsRule

java.lang.Object
net.sourceforge.pmd.properties.AbstractPropertySource
net.sourceforge.pmd.lang.rule.AbstractRule
net.sourceforge.pmd.lang.java.rule.AbstractJavaRule
net.sourceforge.pmd.lang.java.rule.AbstractJavaRulechainRule
com.qulice.pmd.rules.TooManyMethodsRule
All Implemented Interfaces:
net.sourceforge.pmd.lang.ast.AstVisitor, net.sourceforge.pmd.lang.java.ast.JavaVisitor, net.sourceforge.pmd.lang.rule.Rule, net.sourceforge.pmd.properties.PropertySource

public final class TooManyMethodsRule extends net.sourceforge.pmd.lang.java.rule.AbstractJavaRulechainRule
Rule to check that a class does not expose too many methods. Unlike the PMD built-in TooManyMethods rule, this implementation counts only public and protected methods, because private and package-private ones are implementation detail and say nothing about how large the contract of the class is, and reports a class that exposes more than ten of them. Methods annotated with @Override are skipped too, since a supertype dictates them and the class has no say in how many of them there are. Test classes are skipped altogether, since one assertion per test method inflates their method count beyond any useful threshold. JNA bindings are skipped too: a type that extends com.sun.jna.Library, or its Windows flavour com.sun.jna.win32.StdCallLibrary, mirrors a native library method by method, and its size is dictated by that library rather than by its author. Skipping them here instead of through a violationSuppressXPath keeps a redundant @SuppressWarnings("PMD.TooManyMethods") visible to UnnecessaryWarningSuppression, which PMD credits to the annotation whenever the annotation suppressor runs first.
Since:
1.0
  • Field Summary

    Fields inherited from interface net.sourceforge.pmd.lang.rule.Rule

    VIOLATION_SUPPRESS_REGEX_DESCRIPTOR, VIOLATION_SUPPRESS_XPATH_DESCRIPTOR
  • Constructor Summary

    Constructors
    Constructor
    Description
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    visit(net.sourceforge.pmd.lang.java.ast.ASTClassDeclaration type, Object data)
     

    Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractJavaRulechainRule

    buildTargetSelector, visitJavaNode

    Methods inherited from class net.sourceforge.pmd.lang.java.rule.AbstractJavaRule

    apply, visitNode

    Methods inherited from class net.sourceforge.pmd.lang.rule.AbstractRule

    addExample, asCtx, deepCopy, dysfunctionReason, end, equals, getDescription, getExamples, getExternalInfoUrl, getLanguage, getMaximumLanguageVersion, getMessage, getMinimumLanguageVersion, getName, getPriority, getPropertySourceType, getRuleClass, getRuleSetName, getSince, getTargetSelector, hashCode, isDeprecated, setDeprecated, setDescription, setExternalInfoUrl, setLanguage, setMaximumLanguageVersion, setMessage, setMinimumLanguageVersion, setName, setPriority, setRuleClass, setRuleSetName, setSince, start

    Methods inherited from class net.sourceforge.pmd.properties.AbstractPropertySource

    definePropertyDescriptor, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, isPropertyOverridden, setProperty

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface net.sourceforge.pmd.lang.ast.AstVisitor

    cannotVisit

    Methods inherited from interface net.sourceforge.pmd.lang.java.ast.JavaVisitor

    visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit

    Methods inherited from interface net.sourceforge.pmd.properties.PropertySource

    definePropertyDescriptor, getOverriddenPropertiesByPropertyDescriptor, getOverriddenPropertyDescriptors, getPropertiesByPropertyDescriptor, getProperty, getPropertyDescriptor, getPropertyDescriptors, hasDescriptor, isPropertyOverridden, setProperty

    Methods inherited from interface net.sourceforge.pmd.lang.rule.Rule

    initialize
  • Constructor Details

    • TooManyMethodsRule

      public TooManyMethodsRule()
      Default constructor.
  • Method Details

    • visit

      public Object visit(net.sourceforge.pmd.lang.java.ast.ASTClassDeclaration type, Object data)