У меня очень простой .c файл с некоторыми явными ошибками внутри него.scan-build make не обнаруживает ошибок
#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");
}
Я пытаюсь использовать инструмент анализатора статического кода clang (scan-build) для обнаружения ошибок. Когда я бег инструмента непосредственно на файлах, как, например, с помощью следующей команды:
сканирования построить г ++ -o 1 1.c
Я получаю намеченный выход, включая предупреждение от компилятора, который упоминает деление на 0.
скан-сборки: Использование '/usr/lib/llvm-3.8/bin/clang' для статического анализа
1.c: В функции «Int test2 (int) ': 1.c: 16: 11: предупреждение: деление на ноль [-Wdiv-by-zero] return 5/(x-x); ^
1.c: 16: 11: предупреждение: деление на нулевой возврат 5/(x-x);
~^~~~~~ 1 предупреждение сгенерировано. scan-build: обнаружена 1 ошибка. scan-build: запустите 'scan-view/tmp/scan-build-2016-07-11-152043-3028-1', чтобы просмотреть отчеты об ошибках.
Теперь я пытаюсь поместить эту команду в очень простой Makefile. Содержание моего Makefile является:
all: 1.c
g++ -o 1 1.c
clean:
rm -f *.o 1
Однако всякий раз, когда я запускаю сканирование, строить с замыкающими, используя следующую команду:
сканирования сборка делает
Я до сих пор получаю предупреждение от компилятора, но не инструмент построения сканирования !!!
сканирования сборки: Используя '/usr/lib/llvm-3.8/bin/clang' для статического анализа
г ++ -o 1 1.c
1.c: В функции ' int test2 (int) ':
1.c: 16: 11: предупреждение: деление на ноль [-Wdiv-by-zero] return 5/(xx);
^scan-build: Удаление каталога '/ tmp/scan-build-2016-07-11-152326-3055-1', потому что он не содержит отчетов. scan-build: ошибок не обнаружено.
Я наблюдал такое же поведение в файлах C и C++. Я вижу, что кто-то встретил similar error в прошлом (2012), однако предлагаемый ответ, похоже, не работает и, похоже, относится только к файлам на C++. Любые подсказки?
И действительно это была проблема, которая хранится пристанет меня за последние пару часов ... Большое спасибо! – user307976