A static verification toolset for finding possible bugs in Game Maker Studio 2 projects. On its early stages of development.
GMCheck is best compiled and run using Haskell Stack:
stack build
stack exec gmcheck-exe -- -o path-to-report.html path-to-gms-project-directory/
- ✔️ (Mostly) complete parser of pre-2.3 GML. 2.3 additions are in-progress.
- ✔️ Deriving and tracking variable types to detect type errors.
- ✔️ "Extending" the GML type system to distinguish booleans, integers, colors, resource identifiers and so on, which are just ordinary numbers in GML.
- ✔️ Type-annotated signatures of built-in functions and variables, stored in editable external file.
- ✔️ Finding usage of possibly uninitialized variables and missing resources.
- Deriving script type signatures from their arguments and usage.
- Detecting unreachable code, premature
break
s andexit
s, and so on. - Detecting possible memory leaks from undestroyed data structures.
- Colorful, friendly and readable reports.
- Maybe pretty-pritting.
- ...
- and many more! Send your ideas and use-cases to the author or add them as proposal issues.
- Regions, macros and enumerations are not yet supported.
- Due to the highly dynamic nature of GML, it's impossible to 100% detect and analyze variables without actually running the code. Depending on the project, there may be a high percent of false positives.