steakhal added reviewers: jansvoboda11, myhsu. steakhal added subscribers: jansvoboda11, myhsu. steakhal added a comment. Herald added a project: All.
> We can put all the acceptable values in the help text AND generate the enum > class WITHOUT any redundancy. +1 > While not demonstrated, it'd be easy to add help texts to the enum values as > well. Ah yes! We should take it one step further. Generate user-facing documentation from the descriptions embedded in the `td file. We should really have a doc page for analyzer configs as well, similarly to the one we have for checkers. That being said, I would vote for generating the checker's user-facing docs as well, from the `Checkers.td` file. That way they would be always in sync and we could easily check if an option/checker is not documented.` > Automatic initialization and validation of the user input can be done by > marshaling, but its so strongly tied to regular llvm/clang flags, I'd rather > use it as a source of inspiration. I think we can introduce //marshaling// and `cl::opts` in a subsequent patch if we need to, but I cannot immediately foresee the impact of any of these. Let me invite @myhsu for Tablegen and @jansvoboda11 for marshaling. ================ Comment at: clang/include/clang/StaticAnalyzer/AnalyzerFlagsBase.td:9 + +/// Describes ain option type. This is important for validating user supplied +/// inputs. ---------------- typo ================ Comment at: clang/utils/TableGen/ClangSAConfigsEmitter.cpp:19 +#include "llvm/TableGen/TableGenBackend.h" +#include <map> +#include <string> ---------------- Where do you use `std::map`? ================ Comment at: clang/utils/TableGen/ClangSAConfigsEmitter.cpp:35-38 + if (DefaultVal == "") + OS << "\"\""; + else + OS << "\"" << DefaultVal << "\""; ---------------- ================ Comment at: clang/utils/TableGen/ClangSAConfigsEmitter.cpp:43-49 +static SortedRecords getSortedDerivedDefinitions(RecordKeeper &Records, + StringRef ClassName) { + SortedRecords Ret; + for (const Record *R : Records.getAllDerivedDefinitions(ClassName)) + Ret[R->getValueAsString("Name")] = R; + return Ret; +} ---------------- How does this return a sorted data structure? `SortedRecords` aliases `llvm::StringMap<const Record *>`. ================ Comment at: clang/utils/TableGen/ClangSAConfigsEmitter.cpp:114 + + // Emit enum options. These are string options can only take a select fe + // values, and are parsed into enums. ---------------- typo Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104439/new/ https://reviews.llvm.org/D104439 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits