12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //===--- ClangTidyProfiling.h - clang-tidy ----------------------*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYPROFILING_H
- #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYPROFILING_H
- #include "llvm/ADT/StringMap.h"
- #include "llvm/Support/Chrono.h"
- #include "llvm/Support/Timer.h"
- #include <optional>
- #include <string>
- namespace llvm {
- class raw_ostream;
- } // namespace llvm
- namespace clang::tidy {
- class ClangTidyProfiling {
- public:
- struct StorageParams {
- llvm::sys::TimePoint<> Timestamp;
- std::string SourceFilename;
- std::string StoreFilename;
- StorageParams() = default;
- StorageParams(llvm::StringRef ProfilePrefix, llvm::StringRef SourceFile);
- };
- private:
- std::optional<llvm::TimerGroup> TG;
- std::optional<StorageParams> Storage;
- void printUserFriendlyTable(llvm::raw_ostream &OS);
- void printAsJSON(llvm::raw_ostream &OS);
- void storeProfileData();
- public:
- llvm::StringMap<llvm::TimeRecord> Records;
- ClangTidyProfiling() = default;
- ClangTidyProfiling(std::optional<StorageParams> Storage);
- ~ClangTidyProfiling();
- };
- } // namespace clang::tidy
- #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYPROFILING_H
|