This bugged me for a long time, so it's time to put an end to it: collectCheckers was cryptic and hard to understand. This is done by
- Renaming collectCheckers to getEnabledCheckers
- Changing the functionality to acquire all enabled checkers, rather then collect checkers for a specific CheckerOptInfo (for example, collecting all checkers for { "core", true }, which meant enabling all checkers from the core package, which was an unnecessary complication).
- Removing CheckerOptInfo, instead of storing whether the option was claimed via a field, we handle errors immediately, as getEnabledCheckers can now access a DiagnosticsEngine. Realize that the remaining information it stored is directly accessible through AnalyzerOptions.CheckerControlList.
- Fix a test with -analyzer-disable-checker -verify accidentally left in.
I just curious about the reason why you move the CheckerInfoSet from the parameter passing by reference to the return value, keep the number of parameter at a lower value? Or make the code at the caller cite cleaner?