SA Checker language options


I am maintaining some SA checkers, which are only relevant to specific languages (C++), and crash when called on irrelevant sources (C).

Are there any best practices, or guidelines regarding the language assessment of the current translation unit?

I am aware that GTestChecker uses its register method to check LangOpts to only register in case the current TU is C++. I have also encountered sporadic LangOpts checks inside the checker callback methods. We could also query the build system to map TU-s to language categories, however, inside the clang framework, a more cognizant decision could be made.

I would like to have your suggestions on this matter.


Yup, querying LangOpts in the registerYourChecker() is the current solution. I don’t think it’s well-thought, but it works and there aren’t any known problems with it.

You can’t do much more than that in this point (eg., query AST for presence of STL declarations) because AST is not constructed yet. I’m not sure if we want to keep it this way, vs. delay checker registration until end of AST construction, but it might turn out to be useful if we want to make, say, preprocessor checkers.