brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 35ef184 Raw
46 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_CONTAINERSIZEEMPTYCHECK_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_CONTAINERSIZEEMPTYCHECK_H11 12#include "../ClangTidyCheck.h"13#include <vector>14 15namespace clang::tidy::readability {16 17/// Checks whether a call to the `size()`/`length()` method can be replaced with18/// a call to `empty()`.19///20/// The emptiness of a container should be checked using the `empty()` method21/// instead of the `size()`/`length()` method. It shows clearer intent to use22/// `empty()`. Furthermore some containers (for example, a `std::forward_list`)23/// may implement the `empty()` method but not implement the `size()` or24/// `length()` method. Using `empty()` whenever possible makes it easier to25/// switch to another container in the future.26class ContainerSizeEmptyCheck : public ClangTidyCheck {27public:28  ContainerSizeEmptyCheck(StringRef Name, ClangTidyContext *Context);29  bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {30    return LangOpts.CPlusPlus;31  }32  void registerMatchers(ast_matchers::MatchFinder *Finder) override;33  void check(const ast_matchers::MatchFinder::MatchResult &Result) override;34  void storeOptions(ClangTidyOptions::OptionMap &Opts) override;35  std::optional<TraversalKind> getCheckTraversalKind() const override {36    return TK_IgnoreUnlessSpelledInSource;37  }38 39private:40  std::vector<llvm::StringRef> ExcludedComparisonTypes;41};42 43} // namespace clang::tidy::readability44 45#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_CONTAINERSIZEEMPTYCHECK_H46