You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[clang-tidy] support query based custom check (llvm#131804)
## summary
### Design for Compatibility
For new field design
1. we must make sure the required fields do not change in quiet long
time.
2. we should tolerant the unknown optional field (do not exist now) in
the future.
For large project integration (3rd party)
1. For config itself, since we can tolerant the unknown optional fields
and required fields should not change, the user can decide whether to
use custom check from third-party.
2.For clang-query, if there are some break change, since the query will
be parsed at check time, the user can disable the check and it will not
damage the whole clang-tidy
----
Inherit from llvm#123734
RFC:
https://discourse.llvm.org/t/support-query-based-clang-tidy-external-check/85331
this patch introduce query based custom check by `CustomChecks` options.
The major improvement compared with llvm#123734:
1. don't need to define config yaml file in command line
4. all behavior including `InheritFromParantConfig` is same as other
config.
6. change configuration schema from KV structured to List structured to
make extend new function easier.
7. Split bind string and diag message to two field to give more freedom
to design query.
example:
```yaml
Checks: -*,custom-call-main-function
CustomChecks:
- Name: call-main-function
Query: |
match callExpr(
callee(
functionDecl(isMain()).bind("fn")
)
).bind("callee")
Diagnostic:
- BindName: fn
Message: main function.
Level: Note
- BindName: callee
Message: call to main function.
Level: Warning
```
```c++
int main(); // note: main function.
void bar() {
main(); // warning: call to main function. [custom-call-main-function]
}
```
---
To make this PR don't do too much things that hard to review, here are
some possible features not included in this PR
- support language
- support traverse
- easier used template string in diagnostics message
---------
Co-authored-by: DeNiCoN <[email protected]>
Co-authored-by: Baranov Victor <[email protected]>
0 commit comments