magik-tools-0.11.0 released

August 31, 2025    SonarQube static code analysis magik-language-server magik-debug-adapter

Magik tools 0.11.0 has been released! This release includes many fixes, a few new checks, extended existing functionality, and added new functionality.

The following new checks have been added:

  • nesting-depth-check to test where too many constructs (method/procedure/if-statement/loop-statement/…) are nested too deeply.
  • file-must-start-with-package-statement to test if a file starts with a _package-statement.
  • method-is-public-typed-check to test if a called method is public (note that this is a typed check).
  • missing-pragma to test if a exemplar, method, …, has a pragma definition.
  • pragma-invalid-classify-level-check, pragma-invalid-usage-check to test if the classify level and usage are correct.

Furthermore, the magik-typed-lint is introduced to check magik typing using a CLI, which can be used during CI.

To have a better terminal/console, the magik-session-wrapper can be used to wrap a Magik running image/session, providing a better experience. This allows for, among other things:

  • Many of the standard keyboard shortcuts found in your regular terminal, such as ctrl-r to search a previous command.
  • (Colored) syntax highlighting of the Magik you write on the terminal.
  • Syntax error reporting.

The formatting code has been completely rewritten, making it easier to maintain and allowing for more future expansions such as construct formatting. The indenter can be configured using the magik.formatting.indentStrategy, which can have values null (no automatic indenting) and relative (relative to the current context indenting).

Also, the default Sonar way profile has been extended with some of the checks. Be sure to review any changes when installing the Magik Sonar plugin.

Last but not least, some of the other fixes:

  • Fix Magik grammar not supporting special characters like ß.
  • Add .sys!perform(), .sys!perform_iter(), .sys!slot(), .sys!slot()<<, and .sys!slot()^<< to forbidden-call-check.
  • Fix not indexing module.def files.
  • Set default value for whitelist in VariableNamingCheck to x,y,z,id.
  • Fix method completions by removing _gather and _optional keywords.

The full list of changes can be found in the change log. Be sure to report any problems you have in the magik-tools issue tracker.