Mccabre
- This is a code analysis tool I made. It recycles concepts and snippets stashed away as I've been working on beacon.
- You can check it out here (docsite coming soon - GH actions aren't set up on its mirror)
- 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
debug command (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) found
- There's still some work to be done (type solving internals like τ5 are probably useless to an end user)