56 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_CLANGTIDYPROFILING_H10#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYPROFILING_H11 12#include "llvm/ADT/StringMap.h"13#include "llvm/Support/Chrono.h"14#include "llvm/Support/Timer.h"15#include <optional>16#include <string>17 18namespace llvm {19class raw_ostream;20} // namespace llvm21 22namespace clang::tidy {23 24class ClangTidyProfiling {25public:26 struct StorageParams {27 llvm::sys::TimePoint<> Timestamp;28 std::string SourceFilename;29 std::string StoreFilename;30 31 StorageParams() = default;32 33 StorageParams(llvm::StringRef ProfilePrefix, llvm::StringRef SourceFile);34 };35 36private:37 std::optional<StorageParams> Storage;38 39 void printUserFriendlyTable(llvm::raw_ostream &OS, llvm::TimerGroup &TG);40 void printAsJSON(llvm::raw_ostream &OS, llvm::TimerGroup &TG);41 void storeProfileData(llvm::TimerGroup &TG);42 43public:44 llvm::StringMap<llvm::TimeRecord> Records;45 46 ClangTidyProfiling() = default;47 48 ClangTidyProfiling(std::optional<StorageParams> Storage);49 50 ~ClangTidyProfiling();51};52 53} // namespace clang::tidy54 55#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYPROFILING_H56