Mccabre
This is a code analysis tool I made. It recycles concepts and snippets stashed away as I've been working on beacon.
I'm finding that this ends up happening a lot with me, where I start writing a script or a feature and just pull it out and make something small with it.
Notable things as far as personal workflows go here is practicing "documentation driven development." I wrote the documentation before the implementations for this project to keep myself on track.
Beacon
This project is an exercise in the insanity induced by accruing technical debt.
The codebase is huge and the docsite when printed (it's an mdbook site) would be over 100 pages.
Pattern matching is a complex feature. It's no wonder it's so recent to Python.
Unions in particular required a bit of refactoring
I've extended the CLI to render diagnostics behind the
debugcommand (it's not included in release builds)Speaking of which, I need to make a release roadmap for this project
$ beacon debug diagnostics src/
⚡ Running comprehensive diagnostics on 5 file(s)...
✓ 0 Parse Errors
✗ 3 Lint Issues
▸ src/main.py:5:1 [BEA015] 'os' imported but never used
5 import os
~~
▸ src/utils.py:10:5 [BEA018] 'x' is redefined before being used
10 x = 2
~
▸ src/helper.py:3:1 [BEA015] 'sys' imported but never used
3 import sys
~~~
✗ 2 Type Errors
▸ src/main.py:12:9 Cannot unify types: Int ~ Str
12 z = x + y
~~~~~
▸ src/utils.py:20:5 Undefined type variable: τ5
20 result = unknown_func()
~~~~~~~~~~~~
Summary: 5 total issue(s) foundThere's still some work to be done (type solving internals like τ5 are probably useless to an end user)