StringConcatenationUseCmstrcatCheck.h 1014 B

12345678910111213141516171819202122232425262728293031323334
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include <clang-tidy/ClangTidyCheck.h>
  5. #include <clang/ASTMatchers/ASTMatchFinder.h>
  6. namespace clang {
  7. namespace tidy {
  8. namespace cmake {
  9. class StringConcatenationUseCmstrcatCheck : public ClangTidyCheck
  10. {
  11. public:
  12. StringConcatenationUseCmstrcatCheck(StringRef Name,
  13. ClangTidyContext* Context);
  14. void registerMatchers(ast_matchers::MatchFinder* Finder) override;
  15. void check(const ast_matchers::MatchFinder::MatchResult& Result) override;
  16. private:
  17. enum class OperatorType
  18. {
  19. Plus,
  20. PlusEquals
  21. };
  22. typedef std::pair<OperatorType, std::vector<const CXXOperatorCallExpr*>>
  23. ExprChain;
  24. std::map<const CXXOperatorCallExpr*, ExprChain> InProgressExprChains;
  25. void issueCorrection(const ExprChain& ExprChain,
  26. const ast_matchers::MatchFinder::MatchResult& Result);
  27. };
  28. }
  29. }
  30. }