diff options
Diffstat (limited to 'src/checks/level0/qgetenv.cpp')
-rw-r--r-- | src/checks/level0/qgetenv.cpp | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/src/checks/level0/qgetenv.cpp b/src/checks/level0/qgetenv.cpp index 0eb33f8f..cf536e37 100644 --- a/src/checks/level0/qgetenv.cpp +++ b/src/checks/level0/qgetenv.cpp @@ -24,7 +24,6 @@ #include "qgetenv.h" #include "Utils.h" -#include "checkmanager.h" #include "StringUtils.h" #include "FixItUtils.h" #include <clang/AST/AST.h> @@ -33,25 +32,17 @@ using namespace clang; using namespace std; -enum Fixit { - FixitNone = 0, - FixitAll = 0x1 // More granularity isn't needed I guess -}; - QGetEnv::QGetEnv(const std::string &name, ClazyContext *context) - : CheckBase(name, context) + : CheckBase(name, context, Option_CanIgnoreIncludes) { - } - - void QGetEnv::VisitStmt(clang::Stmt *stmt) { // Lets check only in function calls. Otherwise there are too many false positives, it's common // to implicit cast to bool when checking pointers for validity, like if (ptr) - CXXMemberCallExpr *memberCall = dyn_cast<CXXMemberCallExpr>(stmt); + auto *memberCall = dyn_cast<CXXMemberCallExpr>(stmt); if (!memberCall) return; @@ -60,7 +51,7 @@ void QGetEnv::VisitStmt(clang::Stmt *stmt) return; CXXRecordDecl *record = method->getParent(); - if (!record || record->getNameAsString() != "QByteArray") { + if (!record || clazy::name(record) != "QByteArray") { return; } @@ -72,10 +63,10 @@ void QGetEnv::VisitStmt(clang::Stmt *stmt) FunctionDecl *func = qgetEnvCall->getDirectCallee(); - if (!func || func->getNameAsString() != "qgetenv") + if (!func || clazy::name(func) != "qgetenv") return; - string methodname = method->getNameAsString(); + StringRef methodname = clazy::name(method); string errorMsg; std::string replacement; if (methodname == "isEmpty") { @@ -91,19 +82,14 @@ void QGetEnv::VisitStmt(clang::Stmt *stmt) if (!errorMsg.empty()) { std::vector<FixItHint> fixits; - if (isFixitEnabled(FixitAll)) { - const bool success = FixItUtils::transformTwoCallsIntoOne(&m_astContext, qgetEnvCall, memberCall, replacement, fixits); + if (isFixitEnabled()) { + const bool success = clazy::transformTwoCallsIntoOne(&m_astContext, qgetEnvCall, memberCall, replacement, fixits); if (!success) { - queueManualFixitWarning(memberCall->getLocStart(), FixitAll); + queueManualFixitWarning(getLocStart(memberCall)); } } errorMsg += " Use " + replacement + "() instead"; - emitWarning(memberCall->getLocStart(), errorMsg.c_str(), fixits); + emitWarning(getLocStart(memberCall), errorMsg.c_str(), fixits); } } - - -const char *const s_checkName = "qgetenv"; -REGISTER_CHECK_WITH_FLAGS(s_checkName, QGetEnv, CheckLevel0, RegisteredCheck::Option_Qt4Incompatible) -REGISTER_FIXIT(FixitAll, "fix-qgetenv", s_checkName) |