Issue 107625
Summary [clang-tidy] misc-include-header Not directly included & not directly used issue
Labels clang-tidy
Assignees
Reporter mnorfolk03
    The misc-include-header check for clang tidy is not properly identifying which header provides a particular function.

I believe this likely due to the function having an overload defined in different files.


Reproducibility:


```cpp
// clang_tidy_issue.cpp
#include "clang_tidy_issue.h"
#include <unistd.h>

int main() {
    time("hello", [] { sleep(1); });
}

```

```cpp
// clang_tidy_issue.h
#pragma once
#include <chrono>
#include <functional>
#include <string>

inline size_t time(const std::string& prefix, std::function<void()> func) {
    auto thread_local timer_start = std::chrono::high_resolution_clock::now();
    func();
    auto thread_local timer_stop = std::chrono::high_resolution_clock::now();
 const size_t dur = std::chrono::duration_cast<std::chrono::nanoseconds>(timer_stop - timer_start).count();
    printf("[%s] took %ld nanos", prefix.c_str(), dur);
    return dur;
}
```

```
$ clang-tidy-18 --checks=misc-include-cleaner clang_tidy_issue.cpp
...
2 warnings generated.
/scratch/mnorfolk/Code/Clion/CppTesting/clang_tidy/clang_tidy_issue.cpp:5:1: warning: included header clang_tidy_issue.h is not used directly [misc-include-cleaner]
    5 | #include "clang_tidy_issue.h"
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    6 | #include <unistd.h>
/scratch/mnorfolk/Code/Clion/CppTesting/clang_tidy/clang_tidy_issue.cpp:9:5: warning: no header providing "time" is directly included [misc-include-cleaner]
    6 | #include <unistd.h>
    7 | 
    8 | int main() {
    9 |     time("hello", [] { sleep(1); });
      | ^
```

---

In this example, I believe it is trying to find the `time_t time( time_t *arg );` function defined in `<time.h>`
https://en.cppreference.com/w/c/chrono/time
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to