StringConcatenationUseCmstrcatCheck.h 1012 B

12345678910111213141516171819202122232425262728293031323334
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file LICENSE.rst 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(ast_matchers::MatchFinder::MatchResult const& Result) override;
  16. private:
  17. enum class OperatorType
  18. {
  19. Plus,
  20. PlusEquals
  21. };
  22. typedef std::pair<OperatorType, std::vector<CXXOperatorCallExpr const*>>
  23. ExprChain;
  24. std::map<CXXOperatorCallExpr const*, ExprChain> InProgressExprChains;
  25. void issueCorrection(ExprChain const& ExprChain,
  26. ast_matchers::MatchFinder::MatchResult const& Result);
  27. };
  28. }
  29. }
  30. }