Here we go guys! This patch is I believe the most important since I started working on this AnalyzerOptions refactoring effort.
It's been a long standing issue that checker options were deep hidden within the implementation, not even necessarily on the bottom of the checker files, in some cases they were totally undocumented, and the possibility of user error due to them being so long was enormous, while at the same time giving no warnings or errors at all.
This patch, similarly to how dependencies were reimplemented, uses TableGen to register checker options, adds them to CheckerRegistry while at the same time exposing the same functionality to non-generated statically linked and plugin checkers.
In detail:
- Add checker and package options to the TableGen files
- Added a new class called CmdLineOption, and both Package and Checker recieved a list<CmdLineOption> field.
- Added every existing checker option to Checkers.td. I'm a little unsure about some, so take a look I guess!
- The CheckerRegistry class
- Received some comments to most of it's inline classes
- Received the CmdLineOption and PackageInfo inline classes, a list of CmdLineOption was added to CheckerInfo and PackageInfo
- Added addCheckerOption and addPackageOption
- Added a new field called Packages, used in addPackageOptions, filled up in addPackage
Might want to add a comment mentioning that additional enumerators require changes to the tablegen code.