aboutsummaryrefslogtreecommitdiffstats
path: root/src/checks/level1/connect-3arg-lambda.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/checks/level1/connect-3arg-lambda.cpp')
-rw-r--r--src/checks/level1/connect-3arg-lambda.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/checks/level1/connect-3arg-lambda.cpp b/src/checks/level1/connect-3arg-lambda.cpp
index a66110f7..9422c986 100644
--- a/src/checks/level1/connect-3arg-lambda.cpp
+++ b/src/checks/level1/connect-3arg-lambda.cpp
@@ -49,11 +49,17 @@ void Connect3ArgLambda::VisitStmt(clang::Stmt *stmt)
if (numParams != 2 && numParams != 3)
return;
- if (fdecl->getQualifiedNameAsString() == "QTimer::singleShot") {
+ string qualifiedName = fdecl->getQualifiedNameAsString();
+ if (qualifiedName == "QTimer::singleShot") {
processQTimer(fdecl, stmt);
return;
}
+ if (qualifiedName == "QMenu::addAction") {
+ processQMenu(fdecl, stmt);
+ return;
+ }
+
if (numParams != 3 || !clazy::isConnect(fdecl))
return;
@@ -112,7 +118,6 @@ void Connect3ArgLambda::processQTimer(FunctionDecl *func, Stmt *stmt)
// QTimer::singleShot(int msec, Functor functor)
// QTimer::singleShot(int msec, Qt::TimerType timerType, Functor functor)
-
const uint numParams = func->getNumParams();
if (numParams == 2) {
if (func->getParamDecl(0)->getNameAsString() == "interval" &&
@@ -123,7 +128,21 @@ void Connect3ArgLambda::processQTimer(FunctionDecl *func, Stmt *stmt)
if (func->getParamDecl(0)->getNameAsString() == "interval" &&
func->getParamDecl(1)->getNameAsString() == "timerType" &&
func->getParamDecl(2)->getNameAsString() == "slot") {
- emitWarning(stmt, "Pass a context object as 3nd singleShot parameter");
+ emitWarning(stmt, "Pass a context object as 3rd singleShot parameter");
}
}
}
+
+void Connect3ArgLambda::processQMenu(FunctionDecl *func, Stmt *stmt)
+{
+ // Signatures to catch:
+ // QMenu::addAction(const QString &text, Func1 slot, const QKeySequence &shortcut = 0)
+ const uint numParams = func->getNumParams();
+ if (numParams == 3) {
+ if (func->getParamDecl(0)->getNameAsString() == "text" &&
+ func->getParamDecl(1)->getNameAsString() == "slot" &&
+ func->getParamDecl(2)->getNameAsString() == "shortcut") {
+ emitWarning(stmt, "Pass a context object as 2nd singleShot parameter");
+ }
+ }
+}