Experimental MoonBit structural search and taint-analysis tool
Dependencies
moongrep lintmoongrep scan --pattern 'match $(value:exp) { Some($(some:id)) => $(some_body:exp); None => $(none_body:exp) }'moongrep scan --pattern 'match $(value:exp) { Some($(some:id)) => $(some_body:exp); None => $(none_body:exp) }' | less -R$(name:kind)match $(value:exp) {
Some($(some:id)) => $(some_body:exp)
None => $(none_body:exp)
}match load_user() {
Some(user) => display(user)
None => show_error()
}value = load_user()
some = user
some_body = display(user)
none_body = show_error()$(value:exp) == $(value:exp)user.name == user.nameuser.name == other.namemoongrep scan --pattern 'inspect($_, content="true")' --output-jsonmoongrep scan --pattern 'inspect($_, content=$(str:const))' --guard '{$str: "^-?(0|[1-9][0-9]*)(\\.[0-9]+)?$"}'--pattern '...$(name:id)...$(value:const)...' \
--guard '{$name: "regular expression", $value: "regular expression"}'moongrep scan --pattern '$(callee:id)($(value:const))' --guard '{$callee: "^@html\\.render$", $value: "^(danger|raw)$"}'moongrep dump --impl 'fn answer { 42 }'
moongrep dump --expr 'x + 1'
moongrep dump --exit-code --expr 'x + 1'moongrep dump [--exit-code] (--impl <impl> | --expr <expr>)| Code | Meaning |
|---|---|
| 1 | Internal or unclassified error, including damaged builtin rules |
| 2 | Command-line usage error |
| 3 | Invalid dump input |
| 4 | Missing, unreadable, or incorrectly typed rule source, or a rule directory containing no .yaml or .yml files |
| 5 | Blank or invalid YAML, an unsupported single-file --rule suffix, or invalid rule schema, pattern, guard, or compiled rule content |
| 6 | Missing or unreadable scan input |
| 7 | Standard-output or standard-error write failure |
moongrep docs --list
moongrep docs RuleSpec
moongrep docs CLISpecInstall
Download zipExperimental MoonBit structural search and taint-analysis tool
Dependencies