Adding HelpText to external flags

Hello,

I’m currently working on the bash-autocompletion project as my GSoC project, and I noticed that some external options (as opposed to cc1 internal options) lack help texts. That is inconvenient not only for users who runs clang with --help but for me because I’m using the following heuristics to determine whether my script should autocomplete an option or not (we don’t want to autocomplete internal options):

I’d like to propose to set a rule about command line options defined in Options.td and their help messages. My proposal is that, if an option is intended to be used by users, it should have a HelpText.

A command line option is considered external if it

  • has an HelpText or GroupID, and

  • doesn’t have NoDriverOption, Unsupported or Ignore bit,

but the heuristic don’t work quite well because some options don’t have HelpText, such as this.

def _sysroot_EQ : Joined<[“–”], “sysroot=”>;

So I’ll be adding HelpTexts to all external options, so that they look like this.

def _sysroot_EQ : Joined<[“–”], “sysroot=”>, HelpText<“use a given directory as the logical root directory for headers and libraries”>;

I believe this is in general a good thing to do, so when you add a new command line flag, and if that is intended to be used by users, please write a help message!

Thanks,

Yuka

I believe this is in general a good thing to do, so when you add a new
command line flag, and if that is intended to be used by users, please write
a help message!

My 2 cents. Usually people are easy to forget writing something which
is not mandatory requirement.
Do you think it's possible to code down the rule, so that if HelpText
is missing for options used by user,
the code won't compile, or at least give some warning?

Regards,
chenwj

To add to this, here is a list of flags that are currently not
completed due to this: https://teemperor.de/pub/clang_lone_flags.txt

- Raphael

-fheinous-gnu-extensions :slight_smile:

I forgot to note that this list might be incomplet and incorrekt. It's
just grepped from the tablegen files.

- Raphael