diff options
Diffstat (limited to '2020/info/24.md')
-rw-r--r-- | 2020/info/24.md | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/2020/info/24.md b/2020/info/24.md new file mode 100644 index 00000000..af8e503f --- /dev/null +++ b/2020/info/24.md @@ -0,0 +1,88 @@ +# Analyze code quality through Emacs: a smart forensics approach and the story of a hack +Andrea + +[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--24-analyze-code-quality-through-emacs-a-smart-forensics-approach-and-the-story-of-a-hack--andrea.webm"]] +[Download compressed .webm video (55.4M)](https://media.emacsconf.org/2020/emacsconf-2020--24-analyze-code-quality-through-emacs-a-smart-forensics-approach-and-the-story-of-a-hack--andrea--compressed32.webm) +[Download compressed .webm video (36.3M, highly compressed)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--24-analyze-code-quality-through-emacs-a-smart-forensics-approach-and-the-story-of-a-hack--andrea--vp9-q56-video-original-audio.webm) + +[EmacsConf2020: first steps towards Emacs becoming your code compass!](https://ag91.github.io/blog/2020/12/11/emacsconf2020-first-steps-towards-emacs-becoming-your-code-compass/) + +Emacs, show me how much technical debt and where it is in this +software repository! + +Also how complex is this module? + +And who is the main developer of this component? + +Mmm, if I change this file, do I need to change something else, Emacs? + +Ah, I need help of somebody to change this code! Emacs can you tell me +who knows something about this file? + +The above are some questions my Emacs can answer (an M-x away). + +It all started with "Your Code as a Crime Scene", an insightful book +by Adam Tornhill, and it continued with a big useful hack. + +In this talk I want to show the analyses I can produce on software +repositories with my Emacs, explain how they help me in my daily work, +give a bit of context of how Adam came up with them, and show the +dirty code that makes this wonderful functionality work. + +<!-- from the pad ---> + +- Actual start and end time (EST): Start: 2020-11-29T10.34.52; End: + 2020-11-29T10.55.39 + +# Questions + +## Q3: How large of a codebase could this be used to analyze? Are there known limits in size? +Nope, so far I could create a microservice picture at work that has a +few million of lines. I did not do stress test, but I am confident +that (at least the hotspots analysis) does not break. + +## Q2: Have you uploaded this file somewhere (or plan to do so)? This seems very useful so I would love to have these code snippets. +It's totally my plan to make this accessible to everyone: we need more +code quality for our feature (software is everywhere)! The plan was a +series of blog and learn how to publish in MELPA later. + +That's great, make sure to announce it somewhere so we know when it +comes out :D. Or maybe link the Git repo that you are using for this. + +## Q1: What is used to measure the complexity of a LISP file, from your point of view? The nesting level per chance? +Indentation is good enough to apply in general. Even Lisp gets +formatted in a standard way. Probably you can come up with a more +specific and precise way, but indentation is a really rough metrics to +give you a general idea. So take with a pinch of salt, but exploit to +find weird things. + +- OK, thanks for the response. + +## How did you summon, resize and dismiss that window so seamlessly? +org-roam and C-x 0 + +- How did you resize it from 2/3 to 1/3 of the frame? + - golden-ratio-mode from golden-ratio. + +## Have you considered doing this analysis by function instead than by file? +I did not have chance yet to integrate that, but the theory is +described in Adam's 2nd book: Software Design -Rays + +# Notes +- Book by Adam Tornhill "Your Code as a Crime Scene": + <https://www.adamtornhillem.com/articles/crimescene/codeascrimescene.htm>. +- <https://github.com/adamtornhill/code-maat>. +- Beautiful circles diagram. +- Especially for big projects with many collaborators the codebase may + become less transparent +- hotspots: files that have had many changes based on git history; + likely sources of bugs. +- Complexities of a file are measured in terms of the indentation, at + least in the case of Java. +- "If a lot of lines are deleted, that's usually a good sign. If a lot + of lines are added, it's a sign of technological debt". +- Another beautiful diagram (big circle with files on periphery, + linked together with curved lines) showing associations between + changes in files: when this file gets changed, it usually means that + this other file is also changed. +- <https://ag91.github.io/blog/>. |