You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kvrocks.apache.org by tw...@apache.org on 2023/02/07 06:38:16 UTC

[incubator-kvrocks] branch unstable updated: Add header filter for clang-tidy checks (#1249)

This is an automated email from the ASF dual-hosted git repository.

twice pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/incubator-kvrocks.git


The following commit(s) were added to refs/heads/unstable by this push:
     new c55934ac Add header filter for clang-tidy checks (#1249)
c55934ac is described below

commit c55934ac85c0de3be34ec9563b8a5c4036a011a7
Author: Twice <tw...@gmail.com>
AuthorDate: Tue Feb 7 14:38:10 2023 +0800

    Add header filter for clang-tidy checks (#1249)
    
    Currently check-tidy reports from header files are ignored, which prevent us from evaluating the code quality of headers and forbidding error-prone code patterns.
    
    In this PR, we make clang-tidy check all header files of kvrocks (except third-party headers), and fix all current reports in headers.
---
 src/common/event_util.h                  |  2 +-
 src/common/rw_lock.h                     |  6 ++++++
 src/common/scope_exit.h                  |  2 ++
 src/server/redis_connection.cc           |  3 +--
 src/server/redis_connection.h            |  5 ++++-
 src/server/redis_reply.h                 |  2 +-
 src/server/redis_request.h               |  2 ++
 src/server/server.h                      |  7 +++++--
 src/server/worker.cc                     |  6 +++---
 src/server/worker.h                      |  4 ++++
 src/storage/compact_filter.cc            |  2 +-
 src/storage/compact_filter.h             |  4 ++--
 src/storage/compaction_checker.h         |  2 +-
 src/storage/lock_manager.cc              |  3 +--
 src/storage/lock_manager.h               |  9 +++++++++
 src/storage/redis_db.cc                  |  7 +++----
 src/storage/redis_db.h                   |  7 +++++--
 src/storage/table_properties_collector.h |  8 ++++----
 src/types/geohash.h                      |  2 +-
 utils/kvrocks2redis/parser.h             |  4 ++++
 utils/kvrocks2redis/redis_writer.h       |  4 ++++
 utils/kvrocks2redis/sync.h               |  4 ++++
 utils/kvrocks2redis/writer.cc            |  4 ++--
 utils/kvrocks2redis/writer.h             |  4 ++++
 x.py                                     | 22 +++++++++++++---------
 25 files changed, 87 insertions(+), 38 deletions(-)

diff --git a/src/common/event_util.h b/src/common/event_util.h
index cbd26fd6..3b757e18 100644
--- a/src/common/event_util.h
+++ b/src/common/event_util.h
@@ -30,7 +30,7 @@ template <typename F, F *f>
 struct StaticFunction {
   template <typename... Ts>
   auto operator()(Ts &&...args) const -> decltype(f(std::forward<Ts>(args)...)) {  // NOLINT
-    return f(std::forward<Ts>(args)...);
+    return f(std::forward<Ts>(args)...);                                           // NOLINT
   }
 };
 
diff --git a/src/common/rw_lock.h b/src/common/rw_lock.h
index b869580e..360a0996 100644
--- a/src/common/rw_lock.h
+++ b/src/common/rw_lock.h
@@ -79,6 +79,9 @@ class WriteLock {
 
   virtual ~WriteLock() { wlock_.UnLockWrite(); }
 
+  WriteLock(const WriteLock&) = delete;
+  WriteLock& operator=(const WriteLock&) = delete;
+
  private:
   ReadWriteLock& wlock_;
 };
@@ -89,6 +92,9 @@ class ReadLock {
 
   virtual ~ReadLock() { rlock_.UnLockRead(); }
 
+  ReadLock(const ReadLock&) = delete;
+  ReadLock& operator=(const ReadLock&) = delete;
+
  private:
   ReadWriteLock& rlock_;
 };
diff --git a/src/common/scope_exit.h b/src/common/scope_exit.h
index 2668091f..f24e26bf 100644
--- a/src/common/scope_exit.h
+++ b/src/common/scope_exit.h
@@ -31,6 +31,8 @@ struct ScopeExit {
   ScopeExit(const ScopeExit&) = delete;
   ScopeExit(ScopeExit&& se) : enabled_(se.enabled_), f_(std::move(se.f_)) {}
 
+  ScopeExit& operator=(const ScopeExit&) = delete;
+
   ~ScopeExit() {
     if (enabled_) f_();
   }
diff --git a/src/server/redis_connection.cc b/src/server/redis_connection.cc
index 4a7a420e..d6026943 100644
--- a/src/server/redis_connection.cc
+++ b/src/server/redis_connection.cc
@@ -35,12 +35,11 @@
 namespace Redis {
 
 Connection::Connection(bufferevent *bev, Worker *owner)
-    : bev_(bev), req_(owner->svr_), owner_(owner), svr_(owner->svr_) {
+    : need_close_(true), bev_(bev), req_(owner->svr_), owner_(owner), svr_(owner->svr_) {
   time_t now = 0;
   time(&now);
   create_time_ = now;
   last_interaction_ = now;
-  need_close_ = true;
 }
 
 Connection::~Connection() {
diff --git a/src/server/redis_connection.h b/src/server/redis_connection.h
index 8d8cab08..6da5198d 100644
--- a/src/server/redis_connection.h
+++ b/src/server/redis_connection.h
@@ -47,6 +47,9 @@ class Connection {
   explicit Connection(bufferevent *bev, Worker *owner);
   ~Connection();
 
+  Connection(const Connection &) = delete;
+  Connection &operator=(const Connection &) = delete;
+
   void Close();
   void Detach();
   static void OnRead(struct bufferevent *bev, void *ctx);
@@ -82,7 +85,7 @@ class Connection {
   void SetAddr(std::string ip, uint32_t port);
   void SetLastCmd(std::string cmd) { last_cmd_ = std::move(cmd); }
   std::string GetIP() { return ip_; }
-  int GetPort() { return port_; }
+  int GetPort() { return static_cast<int>(port_); }
   void SetListeningPort(int port) { listening_port_ = port; }
   int GetListeningPort() { return listening_port_; }
   uint64_t GetClientType();
diff --git a/src/server/redis_reply.h b/src/server/redis_reply.h
index 436b9f12..7b0c8919 100644
--- a/src/server/redis_reply.h
+++ b/src/server/redis_reply.h
@@ -26,7 +26,7 @@
 #include <string>
 #include <vector>
 
-#define CRLF "\r\n"
+#define CRLF "\r\n"  // NOLINT
 
 namespace Redis {
 void Reply(evbuffer *output, const std::string &data);
diff --git a/src/server/redis_request.h b/src/server/redis_request.h
index cba47a17..0051a643 100644
--- a/src/server/redis_request.h
+++ b/src/server/redis_request.h
@@ -39,6 +39,8 @@ class Connection;
 class Request {
  public:
   explicit Request(Server *svr) : svr_(svr) {}
+  ~Request() = default;
+
   // Not copyable
   Request(const Request &) = delete;
   Request &operator=(const Request &) = delete;
diff --git a/src/server/server.h b/src/server/server.h
index b888b15c..6538db47 100644
--- a/src/server/server.h
+++ b/src/server/server.h
@@ -92,7 +92,7 @@ class ServerLogData {
   // distinguish ServerLogData with Redis::WriteBatchLogData.
   static const char kReplIdTag = 'r';
   static bool IsServerLogData(const char *header) {
-    if (header != NULL) return *header == kReplIdTag;
+    if (header != nullptr) return *header == kReplIdTag;
     return false;
   }
 
@@ -117,6 +117,9 @@ class Server {
   explicit Server(Engine::Storage *storage, Config *config);
   ~Server();
 
+  Server(const Server &) = delete;
+  Server &operator=(const Server &) = delete;
+
   Status Start();
   void Stop();
   void Join();
@@ -145,7 +148,7 @@ class Server {
                                std::vector<ChannelSubscribeNum> *channel_subscribe_nums);
   void PSubscribeChannel(const std::string &pattern, Redis::Connection *conn);
   void PUnSubscribeChannel(const std::string &pattern, Redis::Connection *conn);
-  int GetPubSubPatternSize() { return pubsub_patterns_.size(); }
+  int GetPubSubPatternSize() { return static_cast<int>(pubsub_patterns_.size()); }
 
   void AddBlockingKey(const std::string &key, Redis::Connection *conn);
   void UnBlockingKey(const std::string &key, Redis::Connection *conn);
diff --git a/src/server/worker.cc b/src/server/worker.cc
index 8121a187..d24df19a 100644
--- a/src/server/worker.cc
+++ b/src/server/worker.cc
@@ -23,6 +23,7 @@
 #include <event2/util.h>
 #include <glog/logging.h>
 
+#include <stdexcept>
 #include <string>
 
 #include "io_util.h"
@@ -51,9 +52,8 @@
 #include "server.h"
 #include "storage/scripting.h"
 
-Worker::Worker(Server *svr, Config *config, bool repl) : svr_(svr) {
-  base_ = event_base_new();
-  if (!base_) throw std::exception();
+Worker::Worker(Server *svr, Config *config, bool repl) : svr_(svr), base_(event_base_new()) {
+  if (!base_) throw std::runtime_error{"event base failed to be created"};
 
   timer_ = event_new(base_, -1, EV_PERSIST, TimerCB, this);
   timeval tm = {10, 0};
diff --git a/src/server/worker.h b/src/server/worker.h
index 365a1244..41d248b2 100644
--- a/src/server/worker.h
+++ b/src/server/worker.h
@@ -47,6 +47,8 @@ class Worker {
   ~Worker();
   Worker(const Worker &) = delete;
   Worker(Worker &&) = delete;
+  Worker &operator=(const Worker &) = delete;
+
   void Stop();
   void Run(std::thread::id tid);
 
@@ -97,6 +99,8 @@ class WorkerThread {
   ~WorkerThread() = default;
   WorkerThread(const WorkerThread &) = delete;
   WorkerThread(WorkerThread &&) = delete;
+  WorkerThread &operator=(const WorkerThread &) = delete;
+
   Worker *GetWorker() { return worker_.get(); }
   void Start();
   void Stop();
diff --git a/src/storage/compact_filter.cc b/src/storage/compact_filter.cc
index 46bdc00d..474c1c19 100644
--- a/src/storage/compact_filter.cc
+++ b/src/storage/compact_filter.cc
@@ -53,7 +53,7 @@ Status SubKeyFilter::GetMetadata(const InternalKey &ikey, Metadata *metadata) co
   auto db = stor_->GetDB();
   const auto cf_handles = stor_->GetCFHandles();
   // storage close the would delete the column family handler and DB
-  if (!db || cf_handles->size() < 2) return Status(Status::NotOK, "storage is closed");
+  if (!db || cf_handles->size() < 2) return {Status::NotOK, "storage is closed"};
   ComposeNamespaceKey(ikey.GetNamespace(), ikey.GetKey(), &metadata_key, stor_->IsSlotIdEncoded());
 
   if (cached_key_.empty() || metadata_key != cached_key_) {
diff --git a/src/storage/compact_filter.h b/src/storage/compact_filter.h
index 2a0a488f..316ba883 100644
--- a/src/storage/compact_filter.h
+++ b/src/storage/compact_filter.h
@@ -43,7 +43,7 @@ class MetadataFilter : public rocksdb::CompactionFilter {
 
 class MetadataFilterFactory : public rocksdb::CompactionFilterFactory {
  public:
-  explicit MetadataFilterFactory(Engine::Storage *storage) { stor_ = storage; }
+  explicit MetadataFilterFactory(Engine::Storage *storage) : stor_(storage) {}
   const char *Name() const override { return "MetadataFilterFactory"; }
   std::unique_ptr<rocksdb::CompactionFilter> CreateCompactionFilter(
       const rocksdb::CompactionFilter::Context &context) override {
@@ -73,7 +73,7 @@ class SubKeyFilter : public rocksdb::CompactionFilter {
 
 class SubKeyFilterFactory : public rocksdb::CompactionFilterFactory {
  public:
-  explicit SubKeyFilterFactory(Engine::Storage *storage) { stor_ = storage; }
+  explicit SubKeyFilterFactory(Engine::Storage *storage) : stor_(storage) {}
 
   const char *Name() const override { return "SubKeyFilterFactory"; }
   std::unique_ptr<rocksdb::CompactionFilter> CreateCompactionFilter(
diff --git a/src/storage/compaction_checker.h b/src/storage/compaction_checker.h
index c740ac84..d7bff23f 100644
--- a/src/storage/compaction_checker.h
+++ b/src/storage/compaction_checker.h
@@ -29,7 +29,7 @@
 class CompactionChecker {
  public:
   explicit CompactionChecker(Engine::Storage *storage) : storage_(storage) {}
-  ~CompactionChecker() {}
+  ~CompactionChecker() = default;
   void PickCompactionFiles(const std::string &cf_name);
   void CompactPropagateAndPubSubFiles();
 
diff --git a/src/storage/lock_manager.cc b/src/storage/lock_manager.cc
index f4668526..c5a8bfbb 100644
--- a/src/storage/lock_manager.cc
+++ b/src/storage/lock_manager.cc
@@ -24,8 +24,7 @@
 #include <string>
 #include <thread>
 
-LockManager::LockManager(int hash_power) : hash_power_(hash_power) {
-  hash_mask_ = (1U << hash_power) - 1;
+LockManager::LockManager(int hash_power) : hash_power_(hash_power), hash_mask_((1U << hash_power) - 1) {
   for (unsigned i = 0; i < Size(); i++) {
     mutex_pool_.emplace_back(new std::mutex());
   }
diff --git a/src/storage/lock_manager.h b/src/storage/lock_manager.h
index e6ff30a0..8d4e5326 100644
--- a/src/storage/lock_manager.h
+++ b/src/storage/lock_manager.h
@@ -32,6 +32,9 @@ class LockManager {
   explicit LockManager(int hash_power);
   ~LockManager();
 
+  LockManager(const LockManager &) = delete;
+  LockManager &operator=(const LockManager &) = delete;
+
   unsigned Size();
   void Lock(const rocksdb::Slice &key);
   void UnLock(const rocksdb::Slice &key);
@@ -51,6 +54,9 @@ class LockGuard {
   }
   ~LockGuard() { lock_mgr_->UnLock(key_); }
 
+  LockGuard(const LockGuard &) = delete;
+  LockGuard &operator=(const LockGuard &) = delete;
+
  private:
   LockManager *lock_mgr_ = nullptr;
   rocksdb::Slice key_;
@@ -72,6 +78,9 @@ class MultiLockGuard {
     }
   }
 
+  MultiLockGuard(const MultiLockGuard &) = delete;
+  MultiLockGuard &operator=(const MultiLockGuard &) = delete;
+
  private:
   LockManager *lock_mgr_ = nullptr;
   std::vector<std::mutex *> locks_;
diff --git a/src/storage/redis_db.cc b/src/storage/redis_db.cc
index c700599d..e9bb1719 100644
--- a/src/storage/redis_db.cc
+++ b/src/storage/redis_db.cc
@@ -22,6 +22,7 @@
 
 #include <ctime>
 #include <map>
+#include <utility>
 
 #include "cluster/redis_slot.h"
 #include "db_util.h"
@@ -31,11 +32,9 @@
 
 namespace Redis {
 
-Database::Database(Engine::Storage *storage, const std::string &ns) {
-  storage_ = storage;
+Database::Database(Engine::Storage *storage, std::string ns)
+    : storage_(storage), db_(storage->GetDB()), namespace_(std::move(ns)) {
   metadata_cf_handle_ = storage->GetCFHandle("metadata");
-  db_ = storage->GetDB();
-  namespace_ = ns;
 }
 
 rocksdb::Status Database::GetMetadata(RedisType type, const Slice &ns_key, Metadata *metadata) {
diff --git a/src/storage/redis_db.h b/src/storage/redis_db.h
index 28b2be21..edbe0d83 100644
--- a/src/storage/redis_db.h
+++ b/src/storage/redis_db.h
@@ -31,7 +31,7 @@
 namespace Redis {
 class Database {
  public:
-  explicit Database(Engine::Storage *storage, const std::string &ns = "");
+  explicit Database(Engine::Storage *storage, std::string ns = "");
   rocksdb::Status GetMetadata(RedisType type, const Slice &ns_key, Metadata *metadata);
   rocksdb::Status GetRawMetadata(const Slice &ns_key, std::string *bytes);
   rocksdb::Status GetRawMetadataByUserKey(const Slice &user_key, std::string *bytes);
@@ -63,10 +63,13 @@ class Database {
 
   class LatestSnapShot {
    public:
-    explicit LatestSnapShot(rocksdb::DB *db) : db_(db) { snapshot_ = db_->GetSnapshot(); }
+    explicit LatestSnapShot(rocksdb::DB *db) : db_(db), snapshot_(db_->GetSnapshot()) {}
     ~LatestSnapShot() { db_->ReleaseSnapshot(snapshot_); }
     const rocksdb::Snapshot *GetSnapShot() { return snapshot_; }
 
+    LatestSnapShot(const LatestSnapShot &) = delete;
+    LatestSnapShot &operator=(const LatestSnapShot &) = delete;
+
    private:
     rocksdb::DB *db_ = nullptr;
     const rocksdb::Snapshot *snapshot_ = nullptr;
diff --git a/src/storage/table_properties_collector.h b/src/storage/table_properties_collector.h
index 0fc44d87..c7ac1c3c 100644
--- a/src/storage/table_properties_collector.h
+++ b/src/storage/table_properties_collector.h
@@ -28,8 +28,8 @@
 
 class CompactOnExpiredCollector : public rocksdb::TablePropertiesCollector {
  public:
-  explicit CompactOnExpiredCollector(const std::string &cf_name, float trigger_threshold)
-      : cf_name_(cf_name), trigger_threshold_(trigger_threshold) {}
+  explicit CompactOnExpiredCollector(std::string cf_name, float trigger_threshold)
+      : cf_name_(std::move(cf_name)), trigger_threshold_(trigger_threshold) {}
   const char *Name() const override { return "compact_on_expired_collector"; }
   bool NeedCompact() const override;
   rocksdb::Status AddUserKey(const rocksdb::Slice &key, const rocksdb::Slice &value, rocksdb::EntryType,
@@ -48,9 +48,9 @@ class CompactOnExpiredCollector : public rocksdb::TablePropertiesCollector {
 
 class CompactOnExpiredTableCollectorFactory : public rocksdb::TablePropertiesCollectorFactory {
  public:
-  explicit CompactOnExpiredTableCollectorFactory(const std::string &cf_name, float trigger_threshold)
+  explicit CompactOnExpiredTableCollectorFactory(std::string cf_name, float trigger_threshold)
       : cf_name_(std::move(cf_name)), trigger_threshold_(trigger_threshold) {}
-  virtual ~CompactOnExpiredTableCollectorFactory() {}
+  ~CompactOnExpiredTableCollectorFactory() override = default;
   rocksdb::TablePropertiesCollector *CreateTablePropertiesCollector(
       rocksdb::TablePropertiesCollectorFactory::Context context) override;
   const char *Name() const override { return "CompactOnExpiredCollector"; }
diff --git a/src/types/geohash.h b/src/types/geohash.h
index 290d2905..16fcc2e6 100644
--- a/src/types/geohash.h
+++ b/src/types/geohash.h
@@ -115,7 +115,7 @@ struct GeoHashRadius {
 };
 
 inline constexpr bool HASHISZERO(const GeoHashBits &r) { return !r.bits && !r.step; }
-inline constexpr bool RANGEISZERO(const GeoHashRange &r) { return !r.max && !r.min; }
+inline constexpr bool RANGEISZERO(const GeoHashRange &r) { return !bool(r.max) && !bool(r.min); }
 inline constexpr bool RANGEPISZERO(const GeoHashRange *r) { return !r || RANGEISZERO(*r); }
 
 inline constexpr void GZERO(GeoHashBits &s) { s.bits = s.step = 0; }
diff --git a/utils/kvrocks2redis/parser.h b/utils/kvrocks2redis/parser.h
index 2536a868..771b9d6e 100644
--- a/utils/kvrocks2redis/parser.h
+++ b/utils/kvrocks2redis/parser.h
@@ -37,6 +37,10 @@ class LatestSnapShot {
  public:
   explicit LatestSnapShot(rocksdb::DB *db) : db_(db), snapshot_(db_->GetSnapshot()) {}
   ~LatestSnapShot() { db_->ReleaseSnapshot(snapshot_); }
+
+  LatestSnapShot(const LatestSnapShot &) = delete;
+  LatestSnapShot &operator=(const LatestSnapShot &) = delete;
+
   const rocksdb::Snapshot *GetSnapShot() { return snapshot_; }
 
  private:
diff --git a/utils/kvrocks2redis/redis_writer.h b/utils/kvrocks2redis/redis_writer.h
index 562613a0..92006463 100644
--- a/utils/kvrocks2redis/redis_writer.h
+++ b/utils/kvrocks2redis/redis_writer.h
@@ -32,6 +32,10 @@
 class RedisWriter : public Writer {
  public:
   explicit RedisWriter(Kvrocks2redis::Config *config);
+
+  RedisWriter(const RedisWriter &) = delete;
+  RedisWriter &operator=(const RedisWriter &) = delete;
+
   ~RedisWriter();
   Status Write(const std::string &ns, const std::vector<std::string> &aofs) override;
   Status FlushDB(const std::string &ns) override;
diff --git a/utils/kvrocks2redis/sync.h b/utils/kvrocks2redis/sync.h
index 997aef79..cf65169f 100644
--- a/utils/kvrocks2redis/sync.h
+++ b/utils/kvrocks2redis/sync.h
@@ -37,6 +37,10 @@ class Sync {
  public:
   explicit Sync(Engine::Storage *storage, Writer *writer, Parser *parser, Kvrocks2redis::Config *config);
   ~Sync();
+
+  Sync(const Sync &) = delete;
+  Sync &operator=(const Sync &) = delete;
+
   void Start();
   void Stop();
   bool IsStopped() { return stop_flag_; }
diff --git a/utils/kvrocks2redis/writer.cc b/utils/kvrocks2redis/writer.cc
index 423619a0..5d8feb8d 100644
--- a/utils/kvrocks2redis/writer.cc
+++ b/utils/kvrocks2redis/writer.cc
@@ -57,7 +57,7 @@ Status Writer::GetAofFd(const std::string &ns, bool truncate) {
     return OpenAofFile(ns, truncate);
   }
   if (aof_fds_[ns] < 0) {
-    return Status(Status::NotOK, std::string("Failed to open aof file :") + strerror(errno));
+    return Status::FromErrno("Failed to open aof file:");
   }
   return Status::OK();
 }
@@ -69,7 +69,7 @@ Status Writer::OpenAofFile(const std::string &ns, bool truncate) {
   }
   aof_fds_[ns] = open(GetAofFilePath(ns).data(), openmode, 0666);
   if (aof_fds_[ns] < 0) {
-    return Status(Status::NotOK, std::string("Failed to open aof file :") + strerror(errno));
+    return Status::FromErrno("Failed to open aof file:");
   }
 
   return Status::OK();
diff --git a/utils/kvrocks2redis/writer.h b/utils/kvrocks2redis/writer.h
index 7e1aacd0..92b24576 100644
--- a/utils/kvrocks2redis/writer.h
+++ b/utils/kvrocks2redis/writer.h
@@ -31,6 +31,10 @@
 class Writer {
  public:
   explicit Writer(Kvrocks2redis::Config *config) : config_(config) {}
+
+  Writer(const Writer &) = delete;
+  Writer &operator=(const Writer &) = delete;
+
   ~Writer();
   virtual Status Write(const std::string &ns, const std::vector<std::string> &aofs);
   virtual Status FlushDB(const std::string &ns);
diff --git a/x.py b/x.py
index c1913bc6..5b24eb1d 100755
--- a/x.py
+++ b/x.py
@@ -136,14 +136,14 @@ def build(dir: str, jobs: Optional[int], ghproxy: bool, ninja: bool, unittest: b
     run(cmake, *options, verbose=True, cwd=dir)
 
 
-def get_source_files() -> List[str]:
+def get_source_files(dir: Path) -> List[str]:
     return [
-        *glob("src/**/*.h", recursive=True),
-        *glob("src/**/*.cc", recursive=True),
-        *glob("tests/cppunit/**/*.h", recursive=True),
-        *glob("tests/cppunit/**/*.cc", recursive=True),
-        *glob("utils/kvrocks2redis/**/*.h", recursive=True),
-        *glob("utils/kvrocks2redis/**/*.cc", recursive=True),
+        *glob(str(dir / "src/**/*.h"), recursive=True),
+        *glob(str(dir / "src/**/*.cc"), recursive=True),
+        *glob(str(dir / "tests/cppunit/**/*.h"), recursive=True),
+        *glob(str(dir / "tests/cppunit/**/*.cc"), recursive=True),
+        *glob(str(dir / "utils/kvrocks2redis/**/*.h"), recursive=True),
+        *glob(str(dir / "utils/kvrocks2redis/**/*.cc"), recursive=True),
     ]
 
 
@@ -162,7 +162,7 @@ def clang_format(clang_format_path: str, fix: bool = False) -> None:
              "or download it from https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.1")
 
     basedir = Path(__file__).parent.absolute()
-    sources = get_source_files()
+    sources = get_source_files(basedir)
 
     if fix:
         options = ['-i']
@@ -191,7 +191,11 @@ def clang_tidy(dir: str, jobs: Optional[int], clang_tidy_path: str, run_clang_ti
     if jobs is not None:
         options.append(f'-j{jobs}')
 
-    run(run_command, *options, 'kvrocks/src/', 'kvrocks2redis/', verbose=True, cwd=basedir)
+    regexes = ['kvrocks/src/', 'kvrocks2redis/']
+
+    options.append(f'-header-filter={"|".join(regexes)}')
+
+    run(run_command, *options, *regexes, verbose=True, cwd=basedir)
 
 
 def golangci_lint() -> None: