class_docstr: clang tidy wrapper.
  Args:
    args:  Command line arguments.
        cpp_lint: Run linter on C++ source code.
        cuda_lint: Run linter on CUDA source code.
        use_dmlc_gtest: Whether to use gtest bundled in dmlc-core.
code: def __init__(self, args):
      self.cpp_lint = args.cpp
      self.cuda_lint = args.cuda
      self.use_dmlc_gtest: bool = args.use_dmlc_gtest
      self.cuda_archs = (
          args.cuda_archs.copy() if args.cuda_archs else []
      )
  
      if args.tidy_version:
          self.exe = "clang-tidy-" + str(args.tidy_version)
      else:
          self.exe = "clang-tidy"
  
      print("Run linter on CUDA: ", self.cuda_lint)
      print("Run linter on C++:", self.cpp_lint)
      print("Use dmlc gtest:", self.use_dmlc_gtest)
      print("CUDA archs:", " ".join(self.cuda_archs))
  
      if not self.cpp_lint and not self.cuda_lint:
          raise ValueError("Both --cpp and --cuda are set to 0.")
      self.root_path = os.path.abspath(os.path.curdir)
      print("Project root:", self.root_path)
      self.cdb_path = os.path.join(self.root_path, "cdb")
  
imports: import argparse
  import json
  import os
  import re
  import shutil
  import subprocess
  import sys
  from multiprocessing import Pool, cpu_count
  from time import time
  import yaml
label_desc: Use image node_id 1 to create a new ClangTidy object from inherited base classes: object with example: obj = ClangTidy(args)