Il nostro codice sorgente ha codici di errore sparsi ovunque. Trovarli è facile con grep, ma mi piacerebbe una funzione bash find_code
che posso eseguire (ad es. find_code ####
) Che fornirà output lungo queste linee:
/home/user/path/to/source.c
85 imagine this is code
86 this is more code
87 {
88 nicely indented
89 errorCode = 1111
90 that's the line that matched!
91 ok this block is ending
92 }
93 }
Ecco quello che ho attualmente:
find_code()
{
# "= " included to avoid matching unrelated number series
# SRCDIR is environment variable, parent dir of all of projects
FILENAME= grep -r "= ${1}" ${SRCDIR}
echo ${FILENAME}
grep -A5 -B5 -r "= ${1}" ${SRCDIR} | sed -e 's/.*\.c\[-:]//g'
}
I problemi:
1) Questo non fornisce numeri di riga
2) corrisponde solo ai file sorgente .c. Ho difficoltà a far corrispondere sed .c, .cs, .cpp e altri file sorgente. Usiamo C, tuttavia, in modo semplicemente corrispondente - oppure: (i caratteri che grep aggiunge al nome del file prima di ogni riga di codice) corrispondono object->pointers
e rovinano tutto.
MATCH="= ${1}"
. Ho anche aggiunto--include=*.c --include=*.cpp --include=*.java --include=*.cs
per limitare la ricerca ai file di origine. Grazie!