Tomcat
Conditional Complexity

Intro
  • Conditional complexity (also called cyclomatic complexity) is a term used to measure the complexity of software. The term refers to the number of possible paths through a program function. A higher value ofter means higher maintenance and testing costs (infosecinstitute.com).
  • Conditional complexity is calculated by counting all conditions in the program that can affect the execution path (e.g. if statement, loops, switches, and/or operators, try and catch blocks...).
  • Conditional complexity is measured at the unit level (methods, functions...).
  • Units are classified in four categories based on the measured McCabe index: 1-5 (simple units), 6-10 (medium complex units), 11-25 (complex units), 26+ (very complex units).
Learn more...
Conditional Complexity Overall
  • There are 19,388 units with 193,681 lines of code in units (77.5% of code).
    • 28 very complex units (6,917 lines of code)
    • 108 complex units (12,377 lines of code)
    • 618 medium complex units (33,886 lines of code)
    • 1,186 simple units (33,238 lines of code)
    • 17,448 very simple units (107,263 lines of code)
3% | 6% | 17% | 17% | 55%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
java3% | 6% | 17% | 17% | 55%
Legend:
51+
26-50
11-25
6-10
1-5
Conditional Complexity per Logical Component
primary logical decomposition
java/org/apache/tomcat4% | 4% | 15% | 14% | 60%
java/org/apache/catalina1% | 6% | 19% | 19% | 52%
java/org/apache/jasper4% | 8% | 21% | 19% | 46%
java/org/apache/el9% | 12% | 18% | 16% | 43%
java/org/apache/coyote5% | 9% | 11% | 18% | 55%
modules/jdbc-pool/src/main4% | 3% | 13% | 12% | 65%
java/org/apache/naming0% | 18% | 12% | 18% | 50%
java/jakarta/el0% | 8% | 11% | 17% | 63%
java/org/apache/juli0% | 0% | 27% | 22% | 50%
java/jakarta/servlet/jsp0% | 0% | 8% | 10% | 81%
java/jakarta/servlet/http0% | 0% | 12% | 6% | 80%
modules/owb/src/main0% | 0% | 25% | 0% | 74%
java/jakarta/websocket0% | 0% | 19% | 0% | 80%
java/jakarta/security/auth0% | 0% | 0% | 16% | 83%
java/jakarta/servlet0% | 0% | 0% | 2% | 98%
java/jakarta/transaction0% | 0% | 0% | 0% | 100%
java/jakarta/websocket/server0% | 0% | 0% | 0% | 100%
java/jakarta/mail/internet0% | 0% | 0% | 0% | 100%
java/jakarta/mail0% | 0% | 0% | 0% | 100%
Legend:
51+
26-50
11-25
6-10
1-5
Most Complex Units
Top 50 most complex units
Unit# linesMcCabe index# params
private int jjMoveNfa_0()
in java/org/apache/tomcat/util/json/JSONParserTokenManager.java
339 154 2
private int jjMoveNfa_2()
in java/org/apache/el/parser/ELParserTokenManager.java
336 135 2
private int jjMoveNfa_1()
in java/org/apache/el/parser/ELParserTokenManager.java
336 135 2
public boolean merge()
in java/org/apache/tomcat/util/descriptor/web/WebXml.java
470 134 1
public String toXml()
in java/org/apache/tomcat/util/descriptor/web/WebXml.java
612 117 0
public EmbeddedServletOptions()
in java/org/apache/jasper/EmbeddedServletOptions.java
366 116 2
protected void serveResource()
in java/org/apache/catalina/servlets/DefaultServlet.java
287 86 4
protected void generateClass()
in java/org/apache/jasper/compiler/JDTCompiler.java
406 82 1
protected void doLock()
in java/org/apache/catalina/servlets/WebdavServlet.java
331 72 2
static
in java/org/apache/tomcat/util/http/parser/HttpParser.java
43 71 0
public void invoke()
in java/org/apache/catalina/valves/rewrite/RewriteValve.java
220 66 2
public final void action()
in java/org/apache/coyote/AbstractProcessor.java
246 66 2
public void run()
in java/org/apache/tomcat/util/net/AprEndpoint.java
195 64 0
boolean parseRequestLine()
in java/org/apache/coyote/http11/Http11InputBuffer.java
179 63 3
protected String getCGIVariable()
in java/org/apache/catalina/ssi/SSIServletExternalResolver.java
164 62 1
private int jjMoveNfa_0()
in java/org/apache/el/parser/ELParserTokenManager.java
179 62 2
private void checkXmlAttributes()
in java/org/apache/jasper/compiler/Validator.java
168 61 3
public static PoolConfiguration parsePoolProperties()
in modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceFactory.java
239 60 1
private final void processCookieHeader()
in java/org/apache/tomcat/util/http/LegacyCookieProcessor.java
166 58 4
protected static void parseRuleFlag()
in java/org/apache/catalina/valves/rewrite/RewriteValve.java
112 57 3
public static BasicDataSource createDataSource()
in java/org/apache/tomcat/dbcp/dbcp2/BasicDataSourceFactory.java
222 56 1
protected synchronized void startInternal()
in java/org/apache/catalina/core/StandardContext.java
232 55 0
public void invoke()
in java/org/apache/catalina/authenticator/AuthenticatorBase.java
130 55 2
private void processParameters()
in java/org/apache/tomcat/util/http/Parameters.java
200 54 4
public SocketState service()
in java/org/apache/coyote/http11/Http11Processor.java
177 54 1
public MessageHandlerInfo()
in java/org/apache/tomcat/websocket/pojo/PojoMethodMapping.java
206 53 2
private void setCommonProperties()
in java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSourceFactory.java
108 53 2
private Session connectToServerRecursive()
in java/org/apache/tomcat/websocket/WsWebSocketContainer.java
248 52 4
protected boolean filter()
in java/org/apache/catalina/loader/WebappClassLoaderBase.java
83 50 2
public void setArgs()
in java/org/apache/jasper/JspC.java
128 49 1
private void configureContext()
in java/org/apache/catalina/startup/ContextConfig.java
187 48 1
public SocketState process()
in java/org/apache/coyote/AbstractProtocol.java
175 48 2
private void prepareRequest()
in java/org/apache/coyote/ajp/AjpProcessor.java
187 48 0
public static Method getMethod()
in java/org/apache/el/util/ReflectionUtil.java
130 48 5
private void processChars()
in java/org/apache/jasper/compiler/JspDocumentParser.java
124 48 0
final public void Compare()
in java/org/apache/el/parser/ELParser.java
183 46 0
public void visit()
in java/org/apache/jasper/compiler/Validator.java
123 46 1
protected void processAnnotationWebFilter()
in java/org/apache/catalina/startup/ContextConfig.java
132 45 3
private void prepareRequest()
in java/org/apache/coyote/http11/Http11Processor.java
148 45 0
private HeaderParseStatus parseHeader()
in java/org/apache/coyote/http11/Http11InputBuffer.java
127 44 0
private static Wrapper findWrapper()
in java/jakarta/el/Util.java
118 44 5
protected boolean postParseRequest()
in java/org/apache/catalina/connector/CoyoteAdapter.java
180 43 4
protected void deployWAR()
in java/org/apache/catalina/startup/HostConfig.java
151 43 2
private CoderResult decodeHasArray()
in java/org/apache/tomcat/util/buf/Utf8Decoder.java
130 43 2
public Object getObjectInstance()
in java/org/apache/naming/factory/BeanFactory.java
159 43 4
public final void invoke()
in java/org/apache/catalina/core/StandardWrapperValve.java
181 42 2
public static String canonize()
in java/org/apache/tomcat/util/net/IPv6Utils.java
120 42 1
public Object getObjectInstance()
in java/org/apache/naming/factory/webservices/ServiceRefFactory.java
211 42 4
private void processGlobalResourcesChange()
in java/org/apache/catalina/core/NamingContextListener.java
111 41 3
public String resolve()
in java/org/apache/catalina/valves/rewrite/ResolverImpl.java
81 40 1