Ho un file .c molto semplice, con alcuni bug ovvi al suo interno.scan-build make non rileva alcun bug
#include <stdio.h>
struct S {
int x;
};
void f(struct S s){
}
void test() {
struct S s;
f(s); // warn
}
int test2(int x){
return 5/(x-x); // warn
}
int main(){
test();
test2(532);
printf("Hej\r\r");
}
Sto cercando di utilizzare lo strumento di analisi del codice statico di clang (scan-build) per rilevare gli errori. Quando eseguo lo strumento direttamente sui file, come ad esempio utilizzando il seguente comando:
scan-costruire g ++ -o 1 1.c
faccio ottenere l'output destinato, tra cui un avvertimento dal compilatore che menziona la divisione per 0.
scan-build: Usando '/usr/lib/llvm-3.8/bin/clang' per l'analisi statica
1.c: In funzione 'int test2 (int) ': 1.c: 16: 11: warning: divisione per zero [-Wdiv-by-zero] return 5/(x-x); ^
1.c: 16: 11: avviso: divisione per ritorno zero 5/(x-x);
~^~~~~~ 1 avviso generato. scan-build: 1 bug trovato. scan-build: eseguire 'scan-view/tmp/scan-build-2016-07-11-152043-3028-1' per esaminare le segnalazioni di bug.
Ora, sto provando a inserire questo comando in un Makefile molto semplice. Il contenuto della mia Makefile sono:
all: 1.c
g++ -o 1 1.c
clean:
rm -f *.o 1
Tuttavia, ogni volta che corro Scan-costruire con marca, utilizzando il seguente comando:
scan-build fanno
ho ancora ottenere il avviso dal compilatore, ma non lo strumento di scansione!
scan-build: Usando '/usr/lib/llvm-3.8/bin/clang' per l'analisi statica
g ++ -o 1 1.c
1.c: In funzione ' int test2 (int) ':
1.c: 16: 11: warning: divisione per zero [-Wdiv-by-zero] return 5/(xx);
^scan-build: rimozione directory '/ tmp/scan-build-2016-07-11-152326-3055-1' perché non contiene report. scan-build: nessun bug trovato.
Ho osservato lo stesso comportamento in entrambi i file C e C++. Vedo che qualcuno si era imbattuto in un similar error nel passato (2012), tuttavia la risposta proposta non sembra funzionare e sembra riferirsi solo ai file C++. Qualche indizio?
E, infatti, che è stato il problema che mi ha tenuto bugging per l'ultimo paio d'ore ... Grazie mille! – user307976