У меня есть сборка, которая использует лязг-аккуратный через CMake:Глушащего лязг-аккуратный
set_target_properties(project
PROPERTIES
...
CXX_CLANG_TIDY
"/usr/bin/clang-tidy"
"-checks=modernize-*,readability-*,performance-*"
"-fix"
)
При создании его я получаю возможную утечку памяти внутри библиотеки Qt:
/opt/Qt5.7.0/5.7/gcc_64/include/QtCore/qobject.h:242:16: warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
return connectImpl(sender, reinterpret_cast<void **>(&signal),
^
.../a.cpp:27:5: note: Taking false branch
if (not inputQFile.makeAbsolute()) {
^
.../a.cpp:33:5: note: Calling 'QObject::connect'
connect(this, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
^
/opt/Qt5.7.0/5.7/gcc_64/include/QtCore/qobject.h:238:13: note: Left side of '||' is false
if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection)
^
/opt/Qt5.7.0/5.7/gcc_64/include/QtCore/qobject.h:238:9: note: Taking false branch
if (type == Qt::QueuedConnection || type == Qt::BlockingQueuedConnection)
^
/opt/Qt5.7.0/5.7/gcc_64/include/QtCore/qobject.h:242:16: note: Potential memory leak
return connectImpl(sender, reinterpret_cast<void **>(&signal),
^
Как может Я замолчу это?
То, что я уже пробовал:
- Добавить
// NOLINT
до конца a.cpp: 33 -> нет эффекта - Добавить в
// NOLINT
до конца qobject.h: 242 -> нет эффекта - Wrap qobject.h: 242 в
#ifndef __clang_analyzer__
-> нет эффекта - Wrap всех qobject.h в
#ifndef __clang_analyzer__
-> никакого эффекта - Добавить
// NOLINT
по всем линиям connectI MPL -> лязг-аккуратная авария
@Tarod: Вот что я в настоящее время:
#ifndef __clang_analyzer__
return connectImpl(sender, reinterpret_cast<void **>(&signal),
receiver, reinterpret_cast<void **>(&slot),
new QtPrivate::QSlotObject<Func2, typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value, // NOLINT
typename SignalType::ReturnType>(slot),
type, types, &SignalType::Object::staticMetaObject); // NOLINT
#endif //__clang_analyzer__
'#ifndef __clang_analyzer__' должен работать. Вы помещаете '# endif' в конец файла' qobject.h'? – Tarod
@Tarod Я обновил вопрос – Mac
Такая же проблема, если вы положили '#ifndef __clang_analyzer__' в начало файла' qobject.h'? – Tarod