clang-tidy module: add check for string concatenation

Co-Authored-by: Kyle Edwards <kyle.edwards@kitware.com>
This commit is contained in:
Joe Blaauboer
2022-11-28 13:08:37 -05:00
committed by Kyle Edwards
parent 2d373b64ea
commit e1ec052d53
4 changed files with 218 additions and 0 deletions
@@ -0,0 +1,34 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#pragma once
#include <clang-tidy/ClangTidyCheck.h>
#include <clang/ASTMatchers/ASTMatchFinder.h>
namespace clang {
namespace tidy {
namespace cmake {
class StringConcatenationUseCmstrcatCheck : public ClangTidyCheck
{
public:
StringConcatenationUseCmstrcatCheck(StringRef Name,
ClangTidyContext* Context);
void registerMatchers(ast_matchers::MatchFinder* Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult& Result) override;
private:
enum class OperatorType
{
Plus,
PlusEquals
};
typedef std::pair<OperatorType, std::vector<const CXXOperatorCallExpr*>>
ExprChain;
std::map<const CXXOperatorCallExpr*, ExprChain> InProgressExprChains;
void issueCorrection(const ExprChain& ExprChain,
const ast_matchers::MatchFinder::MatchResult& Result);
};
}
}
}