I have an assembly that uses clang-tidy via cmake:
set_target_properties(project PROPERTIES ... CXX_CLANG_TIDY "/usr/bin/clang-tidy" "-checks=modernize-*,readability-*,performance-*" "-fix" )
When I create it, I get a possible memory leak inside the Qt libraries:
/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), ^
How can I disable this?
What I already tried:
- Add
// NOLINT to the end of a.cpp: 33 -> no effect - Add
// NOLINT to the end of qobject.h: 242 -> no effect - Wrap qobject.h: 242 in
#ifndef __clang_analyzer__ no effect - Wrap all qobject.h in
#ifndef __clang_analyzer__ → no effect - Add
// NOLINT to all connectImpl lines → clang-tidy crashes
@Tarod: Here is what I have now:
#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__
source share