O Semgrep casa padrões contra a árvore sintática em vez do texto bruto, então a regra se parece com o código que ela procura. É isso que torna prático escrever uma regra específica do projeto em minutos, sem aprender uma linguagem de consulta.
É a ferramenta em que a série mais se apoia. O achado recorrente entre os posts é que os scanners padrão perdem o mau uso específico de framework — mark_safe() sobre uma variável, fields = '__all__' em um ModelForm, .raw() com f-string — e que uma regra de cinco linhas do Semgrep pega todos eles, em CI, a cada commit.