File Complexity Overall
  • There are 100 files with units, with 22,979 lines of code.
    • 4 very complex files (McCabe index sum 251+; 11,366 lines of code)
    • 2 complex files (McCabe index sum 126-250; 1,500 lines of code)
    • 10 medium complex files (McCabe index sum 51-125; 3,377 lines of code)
    • 23 slightly complex files (McCabe index sum 26-50; 3,816 lines of code)
    • 61 simple files (McCabe index sum 1-25; 2,920 lines of code)
  • 74 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system49% | 6% | 14% | 16% | 12%
Legend:
251+
126-250
51-125
26-50
1-25


explore: grouped by folders | grouped by complexity
File Complexity per Extension
251+
126-250
51-125
26-50
1-25
js70% | 4% | 4% | 13% | 7%
java0% | 18% | 14% | 36% | 31%
rb0% | 0% | 93% | 0% | 6%
py0% | 0% | 80% | 0% | 19%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
lipstick-server59% | 4% | 15% | 11% | 9%
lipstick-console37% | 11% | 11% | 24% | 14%
clients0% | 0% | 28% | 29% | 41%
Most Complex Files (Top 50)

The McCabe index of a file grows with its size: per 100 lines tells a large but plain file from a dense one, and most complex unit whether the complexity sits in one unit or is spread over many.

File# lines# unitsMcCabe index
(sum)
per 100
lines
most complex
unit
codemirror.js
in lipstick-console/src/main/webapp/resources/js
2739 236 1173 43 33
codemirror.js
in lipstick-server/app/public/codemirror/js
2739 236 1173 43 33
loader.js
in lipstick-server/app/public/fuelux
3055 285 825 27 29
all.js
in lipstick-server/app/public/fuelux
2833 270 729 26 14
tossboss-graph-view.js
in lipstick-server/app/public/tossboss-graph-view/js
665 48 143 22 29
Main.java
in lipstick-console/src/main/java/com/netflix/lipstick
835 22 138 17 73
graph.py
in clients/python/lipstick
331 62 113 34 6
mustache.js
in lipstick-server/app/public/js/lib
355 27 103 29 24
graph.rb
in lipstick-server/app/helpers
340 32 99 29 16
p2j_translator.rb
in lipstick-server/app/helpers
610 28 82 13 10
Pig2DotGenerator.java
in lipstick-console/src/main/java/com/netflix/lipstick
296 16 71 24 10
job_controller.rb
in lipstick-server/app/controllers
413 19 70 17 14
BasicP2LClient.java
in lipstick-console/src/main/java/com/netflix/lipstick/pigtolipstick
360 21 69 19 19
hive.js
in lipstick-console/src/main/webapp/resources/js
166 9 66 40 25
hive.js
in lipstick-server/app/public/codemirror/js
166 9 66 40 25
elasticsearch_adaptor.rb
in lipstick-server/app/helpers
340 17 63 19 14
LipstickPPNL.java
in lipstick-console/src/main/java/com/netflix/lipstick/listeners
177 16 50 28 7
Graph.java
in clients/java/src/main/java/com/netflix/lipstick/graph
191 33 50 26 12
P2jLogicalRelationalOperator.java
in lipstick-console/src/main/java/com/netflix/lipstick/model/operators
213 44 48 23 3
MRPlanCalculator.java
in lipstick-console/src/main/java/com/netflix/lipstick
199 10 46 23 19
graph.js
in lipstick-server/app/public/js/workflow/graph
220 19 46 21 9
tossboss-drawers.js
in lipstick-server/app/public/tossboss-drawers/js
195 11 45 23 11
datagrid.js
in lipstick-server/app/public/fuelux
227 21 44 19 5
tossboss-graph.js
in lipstick-console/src/main/webapp/resources/js
289 23 43 15 8
spinner.js
in lipstick-server/app/public/fuelux
147 15 39 27 7
LOJsonAdaptor.java
in lipstick-console/src/main/java/com/netflix/lipstick/adaptors
177 10 36 20 15
P2jJobStatus.java
in lipstick-console/src/main/java/com/netflix/lipstick/model
135 35 35 26 1
PigNode.js
in lipstick-server/app/templates
99 7 33 33 10
OutputSampler.java
in lipstick-console/src/main/java/com/netflix/lipstick/util
143 11 32 22 9
P2jPlanStatus.java
in lipstick-console/src/main/java/com/netflix/lipstick/model
132 24 31 23 7
JobWarnings.java
in lipstick-console/src/main/java/com/netflix/lipstick/warnings
179 12 29 16 5
viewmodel.js
in lipstick-server/app/public/js/workflow
253 19 29 11 4
combobox.js
in lipstick-server/app/public/fuelux
111 17 29 26 5
BaseClient.java
in clients/java/src/main/java/com/netflix/lipstick/client
144 14 27 19 7
select.js
in lipstick-server/app/public/fuelux
110 17 27 25 5
tossboss-main.js
in lipstick-console/src/main/webapp/resources/js
167 15 26 16 7
tossboss-script.js
in lipstick-server/app/public/tossboss-script/js
115 11 26 23 7
wizard.js
in lipstick-server/app/public/fuelux
109 10 26 24 6
search.js
in lipstick-server/app/public/fuelux
84 13 26 31 5
RestfulPigStatusClient.java
in lipstick-console/src/main/java/com/netflix/lipstick/pigstatus
144 13 25 17 6
NodeGroup.java
in clients/java/src/main/java/com/netflix/lipstick/graph
84 14 25 30 11
tree.js
in lipstick-server/app/public/fuelux
123 8 24 20 7
Node.java
in clients/java/src/main/java/com/netflix/lipstick/graph
65 11 23 35 13
tossboss-graph-model.js
in lipstick-server/app/public/tossboss-graph-model/js
140 9 22 16 6
utils.js
in lipstick-server/app/public/js/workflow
69 7 21 30 5
tossboss-detail-view.js
in lipstick-server/app/public/tossboss-detail-view/js
122 11 21 17 6
P2jPlanPackage.java
in lipstick-console/src/main/java/com/netflix/lipstick/model
92 20 20 22 1
Edge.java
in clients/java/src/main/java/com/netflix/lipstick/graph
60 10 20 33 11
P2jPlanGenerator.java
in lipstick-console/src/main/java/com/netflix/lipstick
93 7 19 20 8
checkbox.js
in lipstick-server/app/public/fuelux
63 11 18 29 5
About This Analysis
  • File complexity is the sum of the McCabe indexes (conditional complexity) of the units (methods, functions...) in a file.
  • Files are classified in five categories based on that sum: 1-25 (simple files), 26-50 (slightly complex files), 51-125 (medium complex files), 126-250 (complex files), 251+ (very complex files). The default bands are five times the unit complexity bands, as a file is a group of units.
  • Only main code files with units are classified. Files without units (languages without unit analysis, or files without functions) have no complexity to measure and are left out rather than counted as simple.
  • A very complex file holds many decisions, which often means it has too many responsibilities: a candidate to split, and a place where changes need more testing.
Learn more...