NoQ added a comment.

Let's land this together with @Szelethus's proposed solution of hiding hidden 
options (like checkers in D60925 <https://reviews.llvm.org/D60925>). I'm still 
in favor of hiding alpha checkers (as they are for development only, much like 
debug flags; i'd recommend hiding them in the CodeChecker UI as well) and we 
should probably automatically hide options of checker that are hidden. Let's 
also, indeed, remove the USAGE thingy as it doesn't add much.

So, like, the global picture is as follows. In our case the Driver (i.e., 
--analyze) is not much more user facing than frontend flags. It's still fairly 
unusable directly, as our Static Analyzer is generally not a command-line tool. 
The real user-facing stuff is the GUIs such as scan-build or CodeChecker. These 
GUIs decide themselves on what options they want to expose. For instance, you 
have a right to decide that CodeChecker shouldn't support the aggressive mode 
of the move-checker and don't expose it as an option in your GUI. In this sense 
it's not really useful to provide a centralized `-help` of all user-facing 
options.

But it sounds as if you want to change this situation and provide a single 
source of truth on what are the user-facing options. Particular GUIs can still 
ignore them, but you don't want to hardcode flags in CodeChecker, but instead 
you want to rely on clang to provide the list of supported options for you and, 
as a side effect, for scan-build users (if you also add a scan-build help 
flag). I'm totally in favor of crystallizing such list of user-facing flags, 
and this patch sounds like a good step in that direction, assuming that 
non-user-facing options are hidden.

Now, why do we care about frontend/driver flags when they're unusable by 
definition? That's because we have a mental trauma after seeing a few 
powerusers actively explore those flags, observe that they don't work, and then 
tell everybody that the Analyzer is broken. So there's a threshold, based on a 
tiny but painful bit of practical experience, that says that documentation of 
developer-only features on llvm.org or in code comments is fine, but 
documentation printed by the released binary itself is not fine.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D57858/new/

https://reviews.llvm.org/D57858



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to