Andi-Bogdan Postelnicu
authored
Ported from clangd, this still can be improved over time, but it can be landed. This was based on the work from https://bit.ly/3TkV2N1 * The utility makes the assumption that all header are self contained! * It only checkes `Decls` from the main translation file, where SourceLocarion is the passed `cpp` file. * It builds a list with all of the includes from the translation unit. * It matches all of the `Decls` from the main translation units with definitions from the included header files and builds a list with used header files. * All of the includes that are not part of the matched used header files are considered to be unused. Of course this is correct if the first assumption if followed by the coding guide, where all of the header are self contained. Since the mozilla code base doesn't follow this approach false positives might appear where the is the following situation: FOO.cpp #include <A> #Include <B> If header `A` defines a symbol that is used by header `B` and `B` doesn't include `A` nor it has symbols defined that are used by `FOO.cpp` then `B` it will be marked as potentially to be removed by the tool. This is the limitation determined by header that are not self contained. The limitation presented above can be fixed in the future with extra work, but it's very time expensive during the runtime of the checker. Differential Revision: https://phabricator.services.mozilla.com/D161583
Name | Last commit | Last update |
---|