Finding A Function With ast-grep
ast-grep is a brilliant tool for code search and transformation that I’ve written about in a previous byte. Finding function calls with specific arguments is an area where ast-grep shines and makes it much easier to understand usage of a specific function invocation throughout your codebase.
A recent example from work was finding all instances where we were calling
the function showToast
where it contained one or more actions
. Since
the actions
property could be at the start, middle, or end of the options
object, we might think to write a pattern like this:
sg run -p 'showToast({ $$$, actions: [$$$], $$$ })'
However, the default strictness setting of ast-grep does not match all
cases since it is expecting a property following the actions
property and
will not match calls like this:
showToast({ message: '...', actions: [] })
. To resolve this issue we can
set the strictness
to ast
which will correctly match all the variations
of this function call:
sg run --strictness ast -p 'showToast({ $$$, actions: [$$$], $$$ })'