aboutsummaryrefslogtreecommitdiff
path: root/contrib/devtools/bitcoin-tidy/logprintf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/devtools/bitcoin-tidy/logprintf.cpp')
-rw-r--r--contrib/devtools/bitcoin-tidy/logprintf.cpp60
1 files changed, 0 insertions, 60 deletions
diff --git a/contrib/devtools/bitcoin-tidy/logprintf.cpp b/contrib/devtools/bitcoin-tidy/logprintf.cpp
deleted file mode 100644
index 36beac28c8..0000000000
--- a/contrib/devtools/bitcoin-tidy/logprintf.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2023 Bitcoin Developers
-// Distributed under the MIT software license, see the accompanying
-// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-
-#include "logprintf.h"
-
-#include <clang/AST/ASTContext.h>
-#include <clang/ASTMatchers/ASTMatchFinder.h>
-
-
-namespace {
-AST_MATCHER(clang::StringLiteral, unterminated)
-{
- size_t len = Node.getLength();
- if (len > 0 && Node.getCodeUnit(len - 1) == '\n') {
- return false;
- }
- return true;
-}
-} // namespace
-
-namespace bitcoin {
-
-void LogPrintfCheck::registerMatchers(clang::ast_matchers::MatchFinder* finder)
-{
- using namespace clang::ast_matchers;
-
- /*
- Logprintf(..., ..., ..., ..., ..., "foo", ...)
- */
-
- finder->addMatcher(
- callExpr(
- callee(functionDecl(hasName("LogPrintf_"))),
- hasArgument(5, stringLiteral(unterminated()).bind("logstring"))),
- this);
-
- /*
- auto walletptr = &wallet;
- wallet.WalletLogPrintf("foo");
- wallet->WalletLogPrintf("foo");
- */
- finder->addMatcher(
- cxxMemberCallExpr(
- callee(cxxMethodDecl(hasName("WalletLogPrintf"))),
- hasArgument(0, stringLiteral(unterminated()).bind("logstring"))),
- this);
-}
-
-void LogPrintfCheck::check(const clang::ast_matchers::MatchFinder::MatchResult& Result)
-{
- if (const clang::StringLiteral* lit = Result.Nodes.getNodeAs<clang::StringLiteral>("logstring")) {
- const clang::ASTContext& ctx = *Result.Context;
- const auto user_diag = diag(lit->getEndLoc(), "Unterminated format string used with LogPrintf");
- const auto& loc = lit->getLocationOfByte(lit->getByteLength(), *Result.SourceManager, ctx.getLangOpts(), ctx.getTargetInfo());
- user_diag << clang::FixItHint::CreateInsertion(loc, "\\n");
- }
-}
-
-} // namespace bitcoin