Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CodeScene
Get Deep Insights into Your (Clojure) Code
1
About (me)
• Java
• Clojure
• curiousprogrammer.net
• Empear - CodeScene
Brno, CZ
Malmo, SE
2
Agenda
• Motivation
• What is CodeScene
• Demo
• “Under the hood”
• Why (not) Clojure
3
Motivation
• Developers spend most of their time on doing
modifications to existing code
• Technical Debt is inevitable and...
5
Technical Debt
6
Motivation (2)
• Clojure benefits - dynamic, quick experiments
=> rapid development
• Technical Debt can accumulate quickly...
Motivation (3)
• Not all technical debt is created equal - Return
On Investment
• Static analysis ignores history
• Relyin...
What is CodeScene?
• Web-based code analysis tool that lets you
prioritise technical debt, identify organizational
ineffici...
Demo:
clojure.core
10
Demo: Technical Debt
• Hotspots - commit frequency or code churn
• Refactoring Targets - prioritised hotspots
• X-Ray
• Pr...
Demo: Architecture
• Hotspots
• Conway’s Law
12
Demo: Social Analyses
• Individuals
• Owners
• Knowledge loss (Rich Hickey)
• Coordination needs - gvec.clj
• Authors
13
Demo: Project Management
• Branch statistics (re-frame)
• Delivery risk
• Lead Time To Merge
14
Demo: Early Warnings
• metabase
15
“Under the Hood”
• git log -> parse -> analyse -> store to disk -> …
present (UI)
• Pipes & Filters
• Core “analysis” modu...
Pipes & Filters
• Git -> git log -> parse -> analyze -> persist on
disk -> load from disk -> present (UI)
• Pipes & Filter...
Parsing
18
Analyses
• Language neutral - based on universal LOC
metric
• X-Ray (ANTLR)
• Hotspots
• Temporal Coupling
19
Analyses (2)
• Core analysis module is completely separated
and reused from both on-prem and cloud
applications
• Results ...
Performance
• Memory is the bottleneck => serialisation of
analyses
• Linux ~45 min on i7 machine
21
Libraries
• ANTLR - microgrammars (X-Ray)
• Incanter - buggy
• ring & compojure
• selmer
• spec
• clojure.java.jdbc - H2
•...
Why Clojure?
• It’s fun
• Productivity
• Quick feedback
• Fast innovations
• Data transformations
23
“That’s it? Just these guys?!”
— Carl Gustaf
24
Why Not Clojure(Script)?
• Server-side rendering with thin JS layer
• Jenkins plugin - Java
• Haskell - git cloning servic...
Conclusion
• Technical debt is a real problem regardless of
programming language
• There’s a huge amount of useful informa...
Resources
• CodeScene Introduction (15 min) screencast
• CodeScene Product Sheet
• CodeScene.io Showcase - clojure, erlang...
Go and Try!
28
https://codescene.io/
Upcoming SlideShare
Loading in …5
×

of

CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 1 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 2 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 3 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 4 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 5 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 6 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 7 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 8 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 9 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 10 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 11 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 12 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 13 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 14 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 15 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 16 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 17 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 18 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 19 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 20 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 21 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 22 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 23 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 24 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 25 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 26 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 27 CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ] Slide 28
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ]

Download to read offline

Come and meet CodeScene, a unique behavioral code analysis tool written in Clojure. This tool goes beyond traditional static analysis by looking for patterns in version control data to understand the history and evolution of a code base: unraveling things like hotspots, temporal coupling between modules and an interesting social view of the code. I'll briefly describe the ideas behind CodeScene, how it works and then show you an analysis of real Clojure code.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

CodeScene: Get Deep Insights into Your (Clojure) Code [Clojure Vienna meetup - March 2018 ]

  1. 1. CodeScene Get Deep Insights into Your (Clojure) Code 1
  2. 2. About (me) • Java • Clojure • curiousprogrammer.net • Empear - CodeScene Brno, CZ Malmo, SE 2
  3. 3. Agenda • Motivation • What is CodeScene • Demo • “Under the hood” • Why (not) Clojure 3
  4. 4. Motivation • Developers spend most of their time on doing modifications to existing code • Technical Debt is inevitable and must be proactively eliminated. 4
  5. 5. 5
  6. 6. Technical Debt 6
  7. 7. Motivation (2) • Clojure benefits - dynamic, quick experiments => rapid development • Technical Debt can accumulate quickly 7
  8. 8. Motivation (3) • Not all technical debt is created equal - Return On Investment • Static analysis ignores history • Relying solely on human’s expertise is ineffective and expensive • We need concrete data to be able to deal with Technical debt effectively 8
  9. 9. What is CodeScene? • Web-based code analysis tool that lets you prioritise technical debt, identify organizational inefficiences, and detect code that’s expensive to maintain. • Language neutral • On-prem & cloud version (codescene.io) 9
  10. 10. Demo: clojure.core 10
  11. 11. Demo: Technical Debt • Hotspots - commit frequency or code churn • Refactoring Targets - prioritised hotspots • X-Ray • Programming languages 11
  12. 12. Demo: Architecture • Hotspots • Conway’s Law 12
  13. 13. Demo: Social Analyses • Individuals • Owners • Knowledge loss (Rich Hickey) • Coordination needs - gvec.clj • Authors 13
  14. 14. Demo: Project Management • Branch statistics (re-frame) • Delivery risk • Lead Time To Merge 14
  15. 15. Demo: Early Warnings • metabase 15
  16. 16. “Under the Hood” • git log -> parse -> analyse -> store to disk -> … present (UI) • Pipes & Filters • Core “analysis” module reused by cloud and on- prem applications • Performance • Libraries 16
  17. 17. Pipes & Filters • Git -> git log -> parse -> analyze -> persist on disk -> load from disk -> present (UI) • Pipes & Filters 17
  18. 18. Parsing 18
  19. 19. Analyses • Language neutral - based on universal LOC metric • X-Ray (ANTLR) • Hotspots • Temporal Coupling 19
  20. 20. Analyses (2) • Core analysis module is completely separated and reused from both on-prem and cloud applications • Results are stored in plain CSV files - no DB! 20
  21. 21. Performance • Memory is the bottleneck => serialisation of analyses • Linux ~45 min on i7 machine 21
  22. 22. Libraries • ANTLR - microgrammars (X-Ray) • Incanter - buggy • ring & compojure • selmer • spec • clojure.java.jdbc - H2 • core.async - simple scheduler • 3rd party integrations - clj-http, proxy-vole, clj-ldap, clj-slack • etaoin - UI tests • cprops - configuration 22
  23. 23. Why Clojure? • It’s fun • Productivity • Quick feedback • Fast innovations • Data transformations 23
  24. 24. “That’s it? Just these guys?!” — Carl Gustaf 24
  25. 25. Why Not Clojure(Script)? • Server-side rendering with thin JS layer • Jenkins plugin - Java • Haskell - git cloning service • Kotlin? (IDEA plugin) 25
  26. 26. Conclusion • Technical debt is a real problem regardless of programming language • There’s a huge amount of useful information stored in your version control system • Ultimately, you need to rely on human expertise • Support your developer’s judgment and experience with data to get the highest ROI 26
  27. 27. Resources • CodeScene Introduction (15 min) screencast • CodeScene Product Sheet • CodeScene.io Showcase - clojure, erlang, React, etc. • Adam’s talks & books • Talk A Crystal Ball to Prioritize Technical Debt • EuroClojure 2015 talk Beyond Code: Repository Mining with Clojure • book Software Design X-Rays: Fix Technical Debt with Behavioral Code Analysis • book Your Code as a Crime Scene • CodeScene enterprise documentation • Empear’s blog - e.g. The Day I Parsed a Monster • code-maat repository 27
  28. 28. Go and Try! 28 https://codescene.io/

Come and meet CodeScene, a unique behavioral code analysis tool written in Clojure. This tool goes beyond traditional static analysis by looking for patterns in version control data to understand the history and evolution of a code base: unraveling things like hotspots, temporal coupling between modules and an interesting social view of the code. I'll briefly describe the ideas behind CodeScene, how it works and then show you an analysis of real Clojure code.

Views

Total views

231

On Slideshare

0

From embeds

0

Number of embeds

1

Actions

Downloads

1

Shares

0

Comments

0

Likes

0

×