mirror of
https://github.com/SpaceManiac/SpacemanDMM.git
synced 2025-12-23 05:36:47 +00:00
* emit error when proc is defined multiple times * simplify * simpler Co-authored-by: spookydonut <github@spooksoftware.com>
113 lines
4.9 KiB
Markdown
113 lines
4.9 KiB
Markdown
# SpacemanDMM suite configuration
|
|
|
|
All 'opinionated' errors in the suite have an associated configuration option to redefine their Severity or to disable them completely.
|
|
|
|
Errors that would fail to compile in the DM compiler or will always cause a runtime cannot be disabled (eg: bad keyword arguments).
|
|
|
|
As of writing, all front ends have the functionality to accept a configuration file. They default to using `SpacemanDMM.toml` located in the same directory as the `.dme` file.
|
|
|
|
## Configuration Options
|
|
|
|
All of these options can be set to the following:
|
|
|
|
* `error`, `errors` - Severity::Error
|
|
* `warning`, `warnings` - Severity::Warning
|
|
* `info`, `infos` - Severity::Info
|
|
* `hint`, `hints` - Severity::Hint
|
|
* `disabled`, `false`, `off` - Disables it completely
|
|
* `unset`, not present in the config file - Uses the default
|
|
|
|
### Diagnostics
|
|
|
|
The `[diagnostics]` section has the following options:
|
|
|
|
Raised by DreamChecker:
|
|
|
|
* `disabled_directive` - Raised when attempting to disable a `set SpacemanDMM_*` directive that cannot be disabled
|
|
* `sets_directive_twice` - Raised when a directive is set twice in the same proc
|
|
* `invalid_lint_directive_value` - Raised when attempting to set a directive value to something other than `1`, `0`, `TRUE`, `FALSE`
|
|
* `invalid_set_value` - Raised on invalid values used with builtin set directives
|
|
* `unknown_linter_setting` - Raised when setting a `SpacemanDMM_*` directive that DreamChecker doesn't implement
|
|
* `override_missing_keyword_arg` - Raised when proc overrides are missing keyword arguments
|
|
* `must_not_override` - `SpacemanDMM_should_not_override` directive
|
|
* `must_call_parent` - `SpacemanDMM_should_call_parent` directive
|
|
* `final_var` - `SpacemanDMM_final` var type
|
|
* `private_proc` - `SpacemanDMM_private_proc` directive
|
|
* `protected_proc` - `SpacemanDMM_protected_proc` directive
|
|
* `private_var` - `SpacemanDMM_private` var type
|
|
* `protected_var` - `SpacemanDMM_protected` var type
|
|
* `must_be_pure` - `SpacemanDMM_should_be_pure` directive
|
|
* `must_not_sleep` - `SpacemanDMM_should_not_sleep` directive
|
|
* `redefined_proc` - `SpacemanDMM_can_be_redefined` directive
|
|
* `ambiguous_in_lhs` - Raised on ambiguous operations on the left hand side of an `in` operation
|
|
* `no_typehint_implicit_new` - Raised on the use of `new` where no typehint is avaliable
|
|
* `field_access_static_type` - Raised on using `.field_name` on a variable with no typehint
|
|
* `proc_call_static_type` - Raised on using `.proc_name()` on a variable with no typehint
|
|
* `no_operator_overload` - Raised on using a unary operator on a non-primative that doesn't define it's own override, eg `somemob++`
|
|
* `control_condition_static` - Raised on a control condition such as `if`/`while` having a static condition such as `1` or `"string"`
|
|
* `if_condition_determinate` - Raised on if condition being always true or always false
|
|
|
|
Raised by Lexer:
|
|
|
|
* `integer_precision_loss` - Raised where an integer is out of integer range and is implicitly formatted as a float
|
|
|
|
Raised by Parser:
|
|
|
|
* `var_in_proc_parameter` - Raised where `var/` is used in proc arguments
|
|
* `static_in_proc_parameter` - Raised where `static/` is used in proc arguments
|
|
* `semicolon_in_proc_parameter` - Raised where `;` is used in proc arguments
|
|
* `in_precedes_as` - Raised where `input()` calls are using `as` after `in` which DM silently ignores
|
|
* `tmp_no_effect` - Raised where local vars are defined as `tmp` which has no effect
|
|
* `final_no_effect` - Raised where local vars are defined as `SpacemanDMM_final` which has no effect
|
|
* `as_local_var` - Raised where local vars are defined using the `as Foo` syntax which has no effect
|
|
|
|
Raised by PreProcessor:
|
|
|
|
* `duplicate_include` - Raised where the same file is included twice
|
|
* `macro_redefined` - Raised where a macro is defined a second time
|
|
* `macro_undefined_no_definition` - Raised where a macro is undefined where no such macro is defined
|
|
|
|
Raised by Object Tree:
|
|
|
|
* `override_precedes_definition` - Raised where a proc is overridden prior to its definition in the include order, see: http://www.byond.com/forum/post/2441385
|
|
|
|
### Display
|
|
|
|
The `[display]` section has the following options:
|
|
|
|
* `error_level` - Sets the level at which errors are registered instead of being ignored
|
|
|
|
### Language server
|
|
|
|
The `[langserver]` section has the following options:
|
|
|
|
* `dreamchecker` - Set to `true` to run dreamchecker within the language server.
|
|
|
|
### Code standards
|
|
|
|
These are extremely opinionated lint warnings and as such default to disabled
|
|
|
|
The `[code_standards]` section has the following options:
|
|
|
|
* `disallow_relative_proc_definitions` - Raised on relative pathed proc definitions
|
|
* `disallow_relative_type_definitions` - Raised on relative pathed subtype defintions
|
|
|
|
### DM Doc
|
|
|
|
The `[dmdoc]` section has the following options:
|
|
|
|
* `use_typepath_names` - Set to `true` to have dmdoc use the true typepath name instead of the value of the `name` var for types
|
|
|
|
## Example
|
|
|
|
```toml
|
|
[display]
|
|
error_level = "hint"
|
|
|
|
[langserver]
|
|
dreamchecker = true
|
|
|
|
[diagnostics]
|
|
duplicate_include = "error"
|
|
macro_redefined = "off"
|
|
```
|