Mam bardzo prosty plik .c z kilkoma oczywistymi błędami wewnątrz niego.scan-build make nie wykrywa żadnych błędów
#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");
}
Próbuję użyć narzędzia statycznego analizatora kodu klang (scan-build) do wykrywania błędów. Kiedy uruchomić narzędzie bezpośrednio na plikach, na przykład za pomocą następującego polecenia:
skanowania budować g ++ -o 1 1.C
zrobić uzyskać zamierzony wyjście, w tym ostrzeżenia od kompilatora, który wspomina o dzielenie przez 0.
scan-build: Korzystanie '/usr/lib/llvm-3.8/bin/clang' do analizy statycznej
1.C: W funkcji „int test2 (int) ": 1.c: 16: 11: ostrzeżenie: dzielenie przez zero [-Wdiw-przez-zero] powrót 5/(x-x); ^
1.c: 16: 11: ostrzeżenie: Podział przez z powrotem powrót 5/(x-x);
~^~~~~~ 1 wygenerowane ostrzeżenie. scan-build: znaleziono 1 błąd. scan-build: Uruchom "scan-view/tmp/scan-build-2016-07-11-152043-3028-1", aby sprawdzić raporty o błędach.
Teraz próbuję umieścić to polecenie w bardzo prostym pliku Makefile. Zawartość moim Makefile są:
all: 1.c
g++ -o 1 1.c
clean:
rm -f *.o 1
Jednak gdy uruchamiam skanowanie budować z marki, za pomocą następującego polecenia:
scan-build zrobić
nadal uzyskać ostrzeżenie od kompilatora, ale nie narzędzie do skanowania!
scan-build: Używanie '/usr/lib/llvm-3.8/bin/clang' do analizy statycznej
g ++ -o 1 1.C
1.C: W funkcji ' int test2 (int) ':
1.c: 16: 11: ostrzeżenie: dzielenie przez zero [-Wdiw-przez-zero] powrót 5/(xx);
^scan-build: Usunięcie katalogu '/ tmp/scan-build-2016-07-11-152326-3055-1' ponieważ nie zawiera żadnych raportów. scan-build: Nie znaleziono błędów.
Obserwowałem to samo zachowanie zarówno w plikach C, jak i C++. Widzę, że ktoś kiedyś spotkał się z similar error, jednak proponowana odpowiedź wydaje się nie działać i wydaje się, że odnosi się tylko do plików C++. Jakieś wskazówki?
I rzeczywiście był to problem, który utrzymuje podsłuch mnie przez ostatnie kilka godzin ... Dzięki dużo! – user307976