Jenkins
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 9,788 units with 68,630 lines of code in units (64.4% of code).
    • 1 very complex units (181 lines of code)
    • 7 complex units (749 lines of code)
    • 130 medium complex units (6,817 lines of code)
    • 434 simple units (11,154 lines of code)
    • 9,216 very simple units (49,729 lines of code)
<1% | 1% | 9% | 16% | 72%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
java<1% | 1% | 9% | 16% | 72%
Legend:
51+
26-50
11-25
6-10
1-5
Conditional Complexity per Logical Component
level-1 logical decomposition
cli15% | 10% | 4% | 19% | 49%
core0% | <1% | 10% | 16% | 72%
Legend:
51+
26-50
11-25
6-10
1-5
level-2 logical decomposition
cli/src/main/java/hudson/cli21% | 0% | 0% | 19% | 59%
core/src/main/java/hudson/model0% | 1% | 10% | 16% | 71%
core/src/main/java/hudson/util0% | 1% | 7% | 14% | 76%
cli/src/main/java/hudson/util0% | 37% | 17% | 18% | 26%
core/src/main/java/hudson/cli0% | 4% | 13% | 16% | 64%
core/src/main/java/hudson0% | 0% | 13% | 18% | 67%
core/src/main/java/hudson/slaves0% | 0% | 19% | 11% | 68%
core/src/main/java/jenkins/security0% | 0% | 11% | 13% | 75%
core/src/main/java/jenkins/model0% | 0% | 6% | 16% | 76%
core/src/main/java/hudson/tasks0% | 0% | 19% | 12% | 67%
core/src/main/java/jenkins/util0% | 0% | 11% | 16% | 72%
core/src/main/java/jenkins/org0% | 0% | 34% | 25% | 40%
core/src/main/java/hudson/security0% | 0% | 7% | 13% | 79%
core/src/main/java/jenkins/install0% | 0% | 13% | 29% | 56%
core/src/main/java/jenkins/widgets0% | 0% | 35% | 7% | 57%
core/src/main/java/hudson/org0% | 0% | 20% | 28% | 51%
core/src/main/java/jenkins/slaves0% | 0% | 9% | 13% | 76%
core/src/main/java/hudson/triggers0% | 0% | 8% | 12% | 79%
core/src/main/java/jenkins0% | 0% | 5% | 9% | 85%
core/src/main/java/hudson/diagnosis0% | 0% | 7% | 10% | 81%
core/src/main/java/hudson/lifecycle0% | 0% | 0% | 39% | 60%
core/src/main/java/hudson/console0% | 0% | 0% | 23% | 76%
core/src/main/java/hudson/os0% | 0% | 0% | 30% | 69%
core/src/main/java/hudson/search0% | 0% | 0% | 21% | 78%
core/src/main/java/hudson/scheduler0% | 0% | 0% | 31% | 68%
core/src/main/java/jenkins/telemetry0% | 0% | 0% | 19% | 80%
core/src/main/java/hudson/tools0% | 0% | 0% | 14% | 85%
core/src/main/java/jenkins/fingerprints0% | 0% | 0% | 29% | 70%
core/src/main/java/jenkins/triggers0% | 0% | 0% | 48% | 51%
core/src/main/java/jenkins/diagnosis0% | 0% | 0% | 42% | 57%
core/src/main/java/hudson/init0% | 0% | 0% | 15% | 85%
core/src/main/java/jenkins/tasks0% | 0% | 0% | 16% | 83%
core/src/main/java/jenkins/websocket0% | 0% | 0% | 23% | 76%
core/src/main/java/jenkins/agents0% | 0% | 0% | 35% | 64%
core/src/main/java/hudson/scm0% | 0% | 0% | 6% | 93%
core/src/main/java/hudson/node_monitors0% | 0% | 0% | 5% | 94%
core/src/main/java/hudson/widgets0% | 0% | 0% | 16% | 83%
core/src/main/java/jenkins/management0% | 0% | 0% | 8% | 91%
core/src/main/java/hudson/logging0% | 0% | 0% | 7% | 92%
core/src/main/java/hudson/fsp0% | 0% | 0% | 61% | 38%
core/src/main/java/hudson/views0% | 0% | 0% | 11% | 88%
core/src/main/java/jenkins/plugins0% | 0% | 0% | 22% | 77%
core/src/main/java/jenkins/scm0% | 0% | 0% | 16% | 83%
core/src/main/java/hudson/markup0% | 0% | 0% | 0% | 100%
core/src/main/java/org/acegisecurity0% | 0% | 0% | 0% | 100%
core/src/main/java/jenkins/tools0% | 0% | 0% | 0% | 100%
core/src/main/java/jenkins/cli0% | 0% | 0% | 0% | 100%
core/src/main/java/jenkins/diagnostics0% | 0% | 0% | 0% | 100%
core/src/main/java/jenkins/mvn0% | 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
public static int _main()
in cli/src/main/java/hudson/cli/CLI.java
181 57 1
private void serveFile()
in core/src/main/java/hudson/model/DirectoryBrowserSupport.java
145 39 5
public boolean hasMoreTokens()
in cli/src/main/java/hudson/util/QuotedStringTokenizer.java
126 38 0
protected int run()
in core/src/main/java/hudson/cli/BuildCommand.java
99 31 0
public void maintain()
in core/src/main/java/hudson/model/Queue.java
157 31 0
public Object doUnmarshal()
in core/src/main/java/hudson/util/RobustReflectionConverter.java
98 29 3
public ArgumentListBuilder toWindowsCommand()
in core/src/main/java/hudson/util/ArgumentListBuilder.java
41 27 1
public void delete()
in core/src/main/java/hudson/model/AbstractItem.java
83 26 0
public void contextInitialized()
in core/src/main/java/hudson/WebAppMain.java
114 25 1
public void run()
in core/src/main/java/hudson/model/Executor.java
129 24 0
public boolean isValidInet6Address()
in core/src/main/java/jenkins/org/apache/commons/validator/routines/InetAddressValidator.java
60 24 1
public static String normalize()
in core/src/main/java/hudson/FilePath.java
46 23 1
public void perform()
in core/src/main/java/hudson/tasks/LogRotator.java
67 22 1
public static RangeSet fromString()
in core/src/main/java/hudson/model/Fingerprint.java
72 22 2
public String invoke()
in core/src/main/java/hudson/FilePath.java
72 22 2
private void update()
in core/src/main/java/hudson/slaves/NodeProvisioner.java
109 22 0
private FormValidation checkUrl()
in core/src/main/java/jenkins/security/ResourceDomainConfiguration.java
79 22 2
private synchronized TaskBuilder loadTasks()
in core/src/main/java/jenkins/model/Jenkins.java
86 22 0
protected Jenkins()
in core/src/main/java/jenkins/model/Jenkins.java
124 21 3
private SignupInfo validateAccountCreationForm()
in core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
40 20 2
public static int remotePost()
in core/src/main/java/hudson/Main.java
88 20 1
public void doXml()
in core/src/main/java/hudson/model/Api.java
84 20 6
private boolean installIfNecessaryFrom()
in core/src/main/java/hudson/FilePath.java
77 20 4
public long check()
in core/src/main/java/hudson/slaves/RetentionStrategy.java
51 20 1
public synchronized long check()
in core/src/main/java/hudson/slaves/SimpleScheduledRetentionStrategy.java
69 20 1
public boolean keep()
in core/src/main/java/jenkins/security/stapler/DoActionFilter.java
61 20 1
private static Method getMethod()
in core/src/main/java/hudson/Util.java
38 19 4
public void setProperty()
in core/src/main/java/hudson/util/spring/DefaultBeanConfiguration.java
52 19 2
protected int run()
in core/src/main/java/hudson/cli/InstallPluginCommand.java
73 19 0
void resolvePluginDependencies()
in core/src/main/java/hudson/PluginWrapper.java
67 19 0
protected final void execute()
in core/src/main/java/hudson/model/Run.java
98 19 1
public boolean keep()
in core/src/main/java/jenkins/security/stapler/TypedFilter.java
55 19 1
public boolean isBlacklisted()
in core/src/main/java/jenkins/security/ClassFilterImpl.java
61 19 1
private void addInternal()
in core/src/main/java/jenkins/widgets/HistoryPageFilter.java
64 19 1
public TagScript createTagScript()
in core/src/main/java/hudson/util/jelly/MorphTagLibrary.java
56 18 2
public TaskBuilder initTasks()
in core/src/main/java/hudson/PluginManager.java
154 18 1
protected StreamTaskListener createListener()
in core/src/main/java/hudson/model/AsyncAperiodicWork.java
51 18 0
protected StreamTaskListener createListener()
in core/src/main/java/hudson/model/AsyncPeriodicWork.java
51 18 0
private HealthReport getBuildStabilityHealthReport()
in core/src/main/java/hudson/model/Job.java
51 18 0
private boolean isLocationWhitelisted()
in core/src/main/java/jenkins/security/ClassFilterImpl.java
65 18 1
public String getPasswordValue()
in core/src/main/java/hudson/Functions.java
39 17 1
protected AxisState drawCategoryLabels()
in core/src/main/java/hudson/util/NoOverlapCategoryAxis.java
104 17 6
public static boolean isInstalled()
in core/src/main/java/hudson/util/jna/DotNet.java
30 17 4
public TarEntry getNextEntry()
in core/src/main/java/hudson/org/apache/tools/tar/TarInputStream.java
63 17 0
public File download()
in core/src/main/java/hudson/model/UpdateCenter.java
64 17 2
public void setChannel()
in core/src/main/java/hudson/slaves/SlaveComputer.java
95 17 3
public FormValidation verifySignature()
in core/src/main/java/jenkins/util/JSONSignatureValidator.java
70 17 1
public static String dumpThreadInfo()
in core/src/main/java/hudson/Functions.java
62 16 2
protected void doMarshal()
in core/src/main/java/hudson/util/RobustReflectionConverter.java
64 16 3
public static boolean isInstalled()
in core/src/main/java/hudson/util/jna/DotNet.java
22 16 2