| I use semgrep for semantic search (and replace, sometimes). Their docs and website try very hard to suggest you should use it for some kind of CI process, but so far I haven't found any need to do so. I can maybe see it being useful in a pre-commit hook. It's VERY handy for semantic searches though - in situations where ripgrep would be useless due to multi-line matches. I set up this alias to make it a bit less verbose for Python patterns: pygrep () {
pat="$1"
shift
filez="$*"
bash -xc "semgrep --lang=python --pattern '$pat' $filez"
}
Usage is something like: pygrep 'myfunc(..., needle_arg=..., ...)'
|
Not that this detracts from your main point. Semgrep is much smarter than ripgrep and goes well beyond multi line searches.
I just wanted to clarify the small thing.