SlideShare a Scribd company logo
1 of 69
Download to read offline
YourCyclomatic
ComplexityIsSo
1.9,76
<Me/>
NIGHTLYBUILD.IO
AllDevelopersAre
ChefsSomehow
WeNeedSomeKindOfRecipeBook
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
- Estimation Of Budget
- Estimation Of Needed Resources
- Type (Bugfix / Feature / Improvement)
- Area Of Development (Backend /
Frontend)
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
- Code Linting (Style / Common Problems)
- Test Failures (Local Code Paths)
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
- Code Duplication (Local Paths)
- Code Coverage
- Lines Of Code Written
- Lines Of Comments Written (Docs)
- Code Complexity
- Execution Time Benchmarks
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
- Code Duplication (Global Code Paths)
- Security Vulnerabilities
- Outdated Dependencies
- Test Failures (Global Code Paths)
- Application Weight (Perf Budget)
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
- Bugs From E2E Interaction Tests
- Bugs From Alternative Platforms
- Security Violations (Csp Reports)
- Forensics (Failure States, Nav Paths)
During Coding
Before Pushing
After Pushing
After Testing
After Releasing
During Planning
- Analytics (User Tracking)
- Bug Reports (Real World Usage)
- Forensics (Failure States, Nav Paths)
- Scaling Issues
Peter
Drucker
“If you can’t measure it,
you can’t improve it”
Participants
Experience
74 %
19 %
4 %4 %
< 1 year 1 - 3 years
3 - 5 years 5 - 10 years
> 10 years
MisEnPlace
Cyclomatic
Complexity
DoYouMeasure
YourCodes
Cyclomatic
Complexity?
85 %
8 %
8 %
We collect it & it´s useful
We collect it, but don't look at the Numbers at all
We don't collect it
DoYouKnowHow
ToCalculate
Cyclomatic
Complexity?
28 %
20 %
12 %
40 %
Know the theory behind it
No idea where those numbers come from
I´ve heard of it..
Never heard of it
Cyclomatic
Complexity
Cyclomatic complexity = E - N + P
E = number of edges in the flow graph
N = number of nodes in the flow graph
P = number of nodes that have exit points
Cyclomatic
Complexity
Cyclomatic
Complexity If (Month === 1)
If (Day === 1)
Console.Log Console.Log
Console.Log
*Merge*
*Merge*
CC = E - 7 + P
Cyclomatic
Complexity If (Month === 1)
If (Day === 1)
Console.Log Console.Log
Console.Log
*Merge*
*Merge*
CC = 8 - 7 + P
Cyclomatic
Complexity If (Month === 1)
If (Day === 1)
Console.Log Console.Log
Console.Log
*Merge*
*Merge*
CC = 8 - 7 + 2
Cyclomatic
Complexity If (Month === 1)
If (Day === 1)
Console.Log Console.Log
Console.Log
*Merge*
*Merge*
3 = 8 - 7 + 2
Cyclomatic
Complexity
Cyclomatic
Complexity
Asset Weight
DoYouMeasure
YourAssetSize?
46 %
8 %
46 %
We collect it & it´s useful
We collect it, but don't look at the Numbers at all
We don't collect it
Assets
Assets
Assets
Assets
- Great to combine with a perf budget
- Missing context, JS MORe Expensive tHAN IMG
- Combine with dependency Graphing
- Tooling GAP
Duplicated
Lines Of Code
DoYouMeasure
YourDloc?
88 %
8 %
4 %
We collect it & it´s useful
We collect it, but don't look at the Numbers at all
We don't collect it
Dloc
Dloc
- 2 ways of detection - String / AST based
- 2 WAYS to Use it - aPP Local / Module WIDE
- Don’t trust it blindly, Evaluate results
Dloc
Dloc
Scm Metrics
What
When
Who
Where
How
Why
What Have We Changed In Our Code
When Have We Changed It
Who Did The Changes / Reviewed
Where Did We Change Something
How Did We Change It
Why Did We Change Something
What
When
Who
Where
How
Why
What Have We Changed In Our Code
When Have We Changed It
Who Did The Changes / Reviewed
Where Did We Change Something
How Did We Change It
Why Did We Change Something
Git Blame
Git Blame
Git Blame / Git Ui
Git Blame
Git Blame
Git Log / Git Ui / Issue Reference
GitLog
Git
Blame
GitUi
Bug Reports
IsolationIsEvil
What Do We
Actually Need
Workmode
Turnover Rate
Goal
Quick Iterations
High
Performance
Needs Love Top 10
#3 Merge (Fetch_Inbox.Js / Fetch_Mails.Js)
Low Hanging Fruits
#1 Reduce Complexity (Scanner.Js)
#2 Add Missing Tests (Fetcher.Js)
There Are
Plenty Other
Examples…
…And No Tools
Addressing
Them
Take Any Metric
With A
“Grain Of Salt”
It Might Just
Lead To Wrong
Conclusions
ThankYou

More Related Content

Similar to Your cyclomatic complexity is so 1.9,76

Sergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample SdkSergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample Sdk
Ajax Experience 2009
 

Similar to Your cyclomatic complexity is so 1.9,76 (20)

Architecture for scalable Angular applications
Architecture for scalable Angular applicationsArchitecture for scalable Angular applications
Architecture for scalable Angular applications
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
Fast federated SQL with Apache Calcite
Fast federated SQL with Apache CalciteFast federated SQL with Apache Calcite
Fast federated SQL with Apache Calcite
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
Openstack Summit Tokyo 2015 - Building a private cloud to efficiently handle ...
 
ReactiveCocoa - Functional Reactive Programming concepts in iOS
ReactiveCocoa - Functional Reactive Programming concepts in iOSReactiveCocoa - Functional Reactive Programming concepts in iOS
ReactiveCocoa - Functional Reactive Programming concepts in iOS
 
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
 
Integrating Existing C++ Libraries into PySpark with Esther Kundin
Integrating Existing C++ Libraries into PySpark with Esther KundinIntegrating Existing C++ Libraries into PySpark with Esther Kundin
Integrating Existing C++ Libraries into PySpark with Esther Kundin
 
Road to sbt 1.0 paved with server
Road to sbt 1.0   paved with serverRoad to sbt 1.0   paved with server
Road to sbt 1.0 paved with server
 
Common Node
Common NodeCommon Node
Common Node
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Building framework with shared code on Android and iOS using React Native. UA...
Building framework with shared code on Android and iOS using React Native. UA...Building framework with shared code on Android and iOS using React Native. UA...
Building framework with shared code on Android and iOS using React Native. UA...
 
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiNatural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
 
Developing a Culture of Quality Code (Midwest PHP 2020)
Developing a Culture of Quality Code (Midwest PHP 2020)Developing a Culture of Quality Code (Midwest PHP 2020)
Developing a Culture of Quality Code (Midwest PHP 2020)
 
JCConf 2022 - New Features in Java 18 & 19
JCConf 2022 - New Features in Java 18 & 19JCConf 2022 - New Features in Java 18 & 19
JCConf 2022 - New Features in Java 18 & 19
 
Sergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample SdkSergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample Sdk
 
Eventsourcing with PHP and MongoDB
Eventsourcing with PHP and MongoDBEventsourcing with PHP and MongoDB
Eventsourcing with PHP and MongoDB
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)
 
React native
React nativeReact native
React native
 
What’s New in ScyllaDB Open Source 5.0
What’s New in ScyllaDB Open Source 5.0What’s New in ScyllaDB Open Source 5.0
What’s New in ScyllaDB Open Source 5.0
 

More from asciidisco (8)

EME?CDM?DRM?CENC?IDK!
EME?CDM?DRM?CENC?IDK!EME?CDM?DRM?CENC?IDK!
EME?CDM?DRM?CENC?IDK!
 
Universalserialweb frontconf
Universalserialweb frontconfUniversalserialweb frontconf
Universalserialweb frontconf
 
The Universal Serial Web @HolyJS
The Universal Serial Web @HolyJSThe Universal Serial Web @HolyJS
The Universal Serial Web @HolyJS
 
Universalserialweb
UniversalserialwebUniversalserialweb
Universalserialweb
 
EME? CDM? DRM? CENC? IDK!
EME? CDM? DRM? CENC? IDK!EME? CDM? DRM? CENC? IDK!
EME? CDM? DRM? CENC? IDK!
 
The dark ages of IoT v2
The dark ages of IoT v2The dark ages of IoT v2
The dark ages of IoT v2
 
Iot
IotIot
Iot
 
The dark ages of IoT
The dark ages of IoTThe dark ages of IoT
The dark ages of IoT
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Your cyclomatic complexity is so 1.9,76