angular / material
Conditional Complexity

The distribution of complexity of units (measured with McCabe index).

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 2,053 units with 20,160 lines of code in units (50.4% of code).
    • 1 very complex units (106 lines of code)
    • 1 complex units (95 lines of code)
    • 47 medium complex units (2,064 lines of code)
    • 154 simple units (3,255 lines of code)
    • 1,850 very simple units (14,640 lines of code)
<1% | <1% | 10% | 16% | 72%
Legend:
51+
26-50
11-25
6-10
1-5
Alternative Visuals
Conditional Complexity per Extension
51+
26-50
11-25
6-10
1-5
js<1% | <1% | 10% | 16% | 72%
inc0% | 0% | 0% | 0% | 100%
Conditional Complexity per Logical Component
primary logical decomposition
51+
26-50
11-25
6-10
1-5
src/core/services4% | 4% | 2% | 18% | 69%
src/components/menu0% | 0% | 54% | 2% | 42%
src/components/datepicker0% | 0% | 16% | 25% | 57%
src/components/select0% | 0% | 20% | 12% | 66%
src/components/virtualRepeat0% | 0% | 27% | 11% | 61%
src/components/chips0% | 0% | 14% | 5% | 80%
src/components/panel0% | 0% | 8% | 18% | 72%
src/components/gridList0% | 0% | 24% | 12% | 63%
src/components/progressCircular0% | 0% | 46% | 9% | 44%
src/components/autocomplete0% | 0% | 6% | 9% | 84%
src/core/util0% | 0% | 5% | 16% | 78%
src/components/slider0% | 0% | 22% | 6% | 70%
src/components/menuBar0% | 0% | 10% | 16% | 72%
src/components/navBar0% | 0% | 8% | 11% | 80%
src/components/sticky0% | 0% | 19% | 0% | 80%
src/components/radioButton0% | 0% | 14% | 14% | 71%
src/components/input0% | 0% | 5% | 17% | 77%
src/components/sidenav0% | 0% | 8% | 23% | 68%
src/components/icon0% | 0% | 6% | 32% | 61%
src/components/tabs0% | 0% | 0% | 13% | 86%
src/components/fabSpeedDial0% | 0% | 0% | 29% | 70%
src/components/dialog0% | 0% | 0% | 17% | 82%
src/components/toast0% | 0% | 0% | 28% | 71%
src/components/tooltip0% | 0% | 0% | 32% | 67%
scripts0% | 0% | 0% | 25% | 74%
gulp0% | 0% | 0% | 30% | 69%
src/components/list0% | 0% | 0% | 28% | 71%
src/components/progressLinear0% | 0% | 0% | 51% | 48%
src/components/colors0% | 0% | 0% | 21% | 78%
src/components/bottomSheet0% | 0% | 0% | 24% | 75%
src/components/checkbox0% | 0% | 0% | 24% | 75%
src/components/button0% | 0% | 0% | 49% | 50%
config0% | 0% | 0% | 13% | 86%
src/components/toolbar0% | 0% | 0% | 37% | 62%
src/components/whiteframe0% | 0% | 0% | 43% | 56%
gulp/tasks0% | 0% | 0% | 0% | 100%
ROOT0% | 0% | 0% | 0% | 100%
src/components/swipe0% | 0% | 0% | 0% | 100%
src/core0% | 0% | 0% | 0% | 100%
src/components/fabToolbar0% | 0% | 0% | 0% | 100%
src/components/backdrop0% | 0% | 0% | 0% | 100%
src/components/subheader0% | 0% | 0% | 0% | 100%
src/components/showHide0% | 0% | 0% | 0% | 100%
src/components/content0% | 0% | 0% | 0% | 100%
src/components/fabActions0% | 0% | 0% | 0% | 100%
src/components/switch0% | 0% | 0% | 0% | 100%
src/components/truncate0% | 0% | 0% | 0% | 100%
src/components/card0% | 0% | 0% | 0% | 100%
src/components/divider0% | 0% | 0% | 0% | 100%
Most Complex Units
Top 20 most complex units
Unit# linesMcCabe index# params
function performCheck()
in src/core/services/aria/aria.js
106 95 1
function parseRules()
in src/core/services/theming/theming.js
95 36 3
function keydown()
in src/components/autocomplete/js/autocompleteController.js
46 25 1
function calculateMenuPositions()
in src/components/select/select.js
122 24 3
top: parseFloat()
in src/components/menu/js/menuServiceProvider.js
79 21 1
VirtualRepeatController.prototype.virtualRepeatUpdate_ = function()
in src/components/virtualRepeat/virtual-repeater.js
84 21 2
function validateAttributeValue()
in src/core/services/layout/layout.js
40 20 3
function MenuController()
in src/components/menu/js/menuController.js
113 20 9
left: parseFloat()
in src/components/menu/js/menuServiceProvider.js
62 20 1
function onScroll()
in src/components/sticky/sticky.js
32 17 0
mdSelectCtrl.setSelectValueText = function()
in src/components/select/select.js
36 17 1
DateLocaleProvider.prototype.$get = function()
in src/components/datepicker/js/dateLocaleProvider.js
20 17 2
function compile()
in src/components/chips/js/chipsDirective.js
67 17 2
function MdProgressCircularLink()
in src/components/progressCircular/js/progressCircularDirective.js
104 16 3
function redrawTicks()
in src/components/slider/slider.js
32 16 0
function onMenuKeyDown()
in src/components/menu/js/menuServiceProvider.js
50 16 1
MdChipsCtrl.prototype.chipKeydown = function()
in src/components/chips/js/chipsController.js
30 16 1
VirtualRepeatContainerController.prototype.handleScroll_ = function()
in src/components/virtualRepeat/virtual-repeater.js
31 16 0
isTabbable: function()
in src/core/util/util.js
38 15 1
function keydownListener()
in src/components/slider/slider.js
44 15 1