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 (--impl <impl> | --expr <expr>)moongrep docs --list
moongrep docs RuleSpecExperimental MoonBit structural search and taint-analysis tool
Dependencies