apache / apache/incubator-pegasus

Introduce IWYU

Open
#1,349 1 comment 0 reactions 0 assignees View on GitHub
type/enhancement
Dominant language
C++
Stars
2.1k
Forks
328
PR merge metrics
No merged PRs in 30d

Description

# Why include what you use?

See [Why include what you use?](https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/WhyIWYU.md)

# How ?

- [x] Introduce Ubuntu 22.04 to supported OS list
- [x] Use clang-14 on Ubuntu 22.04 to run IWYU, fix issues, add CI and make sure CI passed
- [ ] Use Pegasus special `fix_includes.py`
- [ ] Add mapping rules (see: https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUMappings.md)
- [ ] Try to use C++ standard headers instead of C standard headers (e.g. `stdint.h` -> `cstdint`)
- [ ] Separate C standard, C++ standard and thirdparty headers
- [ ] Speed up the workflow

Contributor guide

Open the contributing guide

Research direction

Start with the linked IWYU documentation, especially WhyIWYU.md and IWYUMappings.md, then review the existing Ubuntu 22.04 and clang-14 CI setup. The unchecked scope includes fix_includes.py, mapping rules, standard-header changes, header separation, and workflow speed; confirm which item is still wanted before defining done.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system, ci-cd, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.