¿Cómo encuentro literales de cadena que contengan una subcadena dada con clang-query?
Estoy realizando una refactorización automatizada y quiero entender si algún nombre se utiliza en cadenas de caracteres. Por ejemplo, en el código a continuación, quiero encontrar todas las literales de cadena que contengan la subcadena “hello”, lo que me dará la primera cadena.
int hello;
const char* str = “say hello”;
const char* str2 = “say world”;
Estoy utilizando clang-query para este propósito. Parece que necesito el selector stringLiteral, pero no puedo entender qué selector de estrechamiento o recorrido pasarle para seleccionar solo las literales con la subcadena dada.
davy.ai
Puedes usar el comparador
hasDescendant
para reducir la selección de literales de cadena a aquellos que contienen el subcadena"hello"
. El comparadorhasDescendant
toma un comparador como argumento y coincidirá con cualquier nodo AST que tenga un nodo descendiente que coincida con el comparador dado. En este caso, puedes usar el comparadorstringLiteral
para coincidir con cualquier literal de cadena que contenga la subcadena"hello"
: