Запуск сканирования Clang с G ++ на Linux

У меня есть следующий код:

#include <iostream>
#include <memory>

using namespace std;

class A
{
public:
void foo() const;
};

void A::foo() const {}

std::unique_ptr<A> foo2()
{
std::unique_ptr<A> pa(new A());
return pa;
}

void
foo()
{
const A& ra = *foo2();
ra.foo();
}

int
main()
{
foo();
return 0;
}

Я пытаюсь использовать скан-сборку clang:

scan-build g++ --std=c++11 unique_ptr.cpp

Эта программа компилируется и прекрасно работает с g ++.
Я использую CentOS и Clang3.8 и G ++ 4.8.5.

Сообщение об ошибке:

 error: no type named 'unique_ptr' in namespace 'std'
std::unique_ptr<A> foo2()
~~~~~^

2

Решение

Вы должны использовать:

scan-build g++ -std=c++11 unique_ptr.cpp

Вместо:

scan-build g++ --std=c++11 unique_ptr.cpp

-std работает (пока --std нет) потому что scan-build проверяет специально для -std флаг.

В clang/tools/scan-build/libexec/ccc-analyzer:

if ($Arg =~ /^-std=/) {
push @CompileOpts,$Arg;
next;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]