# SpiderMonkey source checks This linter runs the three SpiderMonkey consistency checks that used to run as part of `mach build`. They are whole-tree checks: each one walks the sources itself rather than looking only at the files you changed. ## spidermonkey-style Checks that `#include` directives in {searchfox}`js/src ` and {searchfox}`js/public ` use the right path and form (`"..."` for in-tree headers, `<...>` for system headers), are sorted, don't include an inline header from a vanilla header, and don't form header cycles. The check compares its whole output against the output expected for the deliberately broken fixtures in {searchfox}`js/src/tests/style `. If the baseline itself stops matching -- usually because the fixtures were edited -- the raw diff is reported instead, and `expected_output` in {searchfox}`tools/lint/spidermonkey/check_spidermonkey_style.py ` needs updating. ## spidermonkey-macroassembler Checks that every `MacroAssembler` method declared in {searchfox}`js/src/jit/MacroAssembler.h ` with a `DEFINED_ON(...)` annotation is defined for each architecture it lists, and vice versa. ## spidermonkey-opcode Checks that the bytecode documentation comments in {searchfox}`js/src/vm/Opcodes.h ` can be parsed by {searchfox}`js/src/vm/jsopcode.py `, which generates the bytecode reference documentation. ## Run Locally ```{eval-rst} .. parsed-literal:: $ mach lint --linter spidermonkey ``` All three checks run together, since selecting a linter selects a configuration file. They take about a second in total. ## Configuration This linter is enabled by default, and will run if you make changes to SpiderMonkey sources. ## Sources - {searchfox}`Configuration (YAML) ` - {searchfox}`Source `