BGT (Blastbay Game Toolkit) is an engine built on the Angel Script language designed for creating audio-based games. It's relatively competent, fast, intuitive, and runs on all Windows computers created in the last 25 years without a fuss. Because of these characteristics, it was great for building small programs as well as games, and had a wide following in the blind development community. It was discontinued by the developer several years ago.
When you write a program, you need a tool to convert that from whatever language you wrote the program in to binary the computer can understand. That tool is a compiler. The compiler's job is to make sure your code can be translated, and then do that translation for you. If you wrote a word or phrase that can't be translated, the compiler is responsible for telling you and sometimes pointing out ways to fix the problem. It is not, however, the compiler's job to make sure your writing is clean and efficient. It will not stop you from making the longest, least grammatically correct sentence the world has ever seen. That's where a linter comes in: the linter's job is to review your writing and make suggestions that improve its efficiency and accuracy.
I wrote a lot of programs in BGT before it was discontinued, and am still actively supporting and working with some of them today. I've been moving most of my future development over to Rust, but every computer I use seriously has a copy of BGT installed for all the little scripts I know I'm going to need at some point.
One of the great things Rust provides is the breadth of its warnings and errors. A lot of general cleanliness issues are caught by the compiler, so you either know that your code is in a relatively effective state, or that you've explicitly stated you don't care about a particular problem. BGT's compiler is decent, but it doesn't throw a lot of warnings, and isn't going to be updated any further. This project is an attempt to bring some of those rust-style warnings to BGT.
The linter can flag the following issues:
These lints were generated by running the tool on my own projects. I do not use every function in BGT; if you would like to see additional checks added that would help with yours, reach out and let me know.
All code in this project was written by Claude Sonnet 4.6 with my supervision and direction. Things that work are Claude's fault. Bugs are mine. Additional contributions are welcome, whether AI or human.
Source code is available upon request, but you may not claim this project as your own or distribute modified versions of the software. All changes must be passed back upstream and I retain ownership of the project.
Results are best-effort. The linter will not directly make changes to your files, but I disclaim all responsibility for frustration caused by following its instructions. I cannot guarantee that everything it flags is actually a problem, nor that any codebase can be gotten to a state where the linter raises no warnings. Claude and I were not working from a formal language spec when we build this, and everything it does right now is based on my personal coding style. That's not great, but it is what we had the ability to build. If you use the tool, tell me what would make it better for you so we can improve it.
The linter does not support #include statements at this time. As a workaround, see Includer, which can assemble your script into a single file which can be processed by the linter.