[cfe-dev] [analyzer] Tighter command line interface, new API to register dependencies

Artem Dergachev via cfe-dev cfe-dev at lists.llvm.org
Mon Dec 10 12:56:54 PST 2018

On 12/10/18 8:57 AM, Kristóf Umann via cfe-dev wrote:
> Hi all!
> This mail is a heads up for out-of-tree checker developers that I'm 
> planning to land a variety of changes to how checker registration 
> works. Also, I already commited some changes to make the command line 
> interface a little less annoying. While I will properly document most 
> of these in some form or another with a file in the actual repo, I'll 
> leave about a week for everyone to raise objections.
> ===--- Checker registration ---===
> Registering more than one checker in a registry function leads to 
> multiple checkers receiving the same name. The solution was to 
> reimplement parts on the checker registration process.
> 1. From now, all checkers should have a corresponding 
> shouldRegister##CHECKERNAME function defined, similar to 
> register##CHECKERNAME. The intent here is that once a registry 
> function is called, it should register the checker. If based on some 
> language options you chose not to register your checker within 
> register##CHECKERNAME, please move all such conditions to the new 
> function.
> https://reviews.llvm.org/D55424
> 2. A registry function is no longer allowed to register more then one 
> checker. Also, CheckerManager::registerChecker<CHECKER> may only be 
> called once per checker. If you intend to acquire a checker object 
> within a registry function (for example, if it merely enables 
> extension to the main checker), please use 
> CheckerManager::getChecker<CHECKER>. You can ensure that the checker 
> you'd like to acquire is already registered by adding it as a 
> dependency via CheckerRegistry::addDependency.
> https://reviews.llvm.org/D54438
> https://reviews.llvm.org/D55429

Aren't we doing dependencies via Checkers.td?

> 3. CheckerRegistry was moved from the Core directory to Frontend.
> https://reviews.llvm.org/D54436
> ===--- Command line interface ---===
> Mainly focusing on -analyzer-config options, it was an ancient and 
> annoying issue that any invalid input would be ignored and the 
> analyzer simply didn't do what you want -- this is changing. Please 
> note that most of these have already landed.
> 1. AnalyzerOptions no longer supports adding non-checker options 
> without modifying the actual implementation, which can be done by 
> writing a new entry in AnalyzerOptions.def.
> https://reviews.llvm.org/D53483
> 2. There is a new -analyzer-config-help flag to list all non-checker 
> configurations.
> https://reviews.llvm.org/D53296
> 3. A new flag was added that will emit a warning on almost any invalid 
> -analyzer-config input, called -analyzer-config-compatibility-mode. 
> When the analyzer is invoked with -analyze (in driver mode, I'm unsure 
> about the correct terminology), it will be set to false by default, 
> but will be enabled with -cc1 (in frontend mode). You may enable this 
> feature in the driver mode via 
> -Xclang analyzer-config-compatibility-mode=true.
> https://reviews.llvm.org/D53280
> 4. Similar plans are already in motion to make checker options 
> similarly strict.
> Cheers,
> Kristóf Umann
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20181210/06c1da8e/attachment.html>

More information about the cfe-dev mailing list