> Small bump, just in case this got forgotten.

Yes, I actually forgot to reply. Feel free to ping me each week or so, in case 
I don't reply.

Now to the patch itself. I have a number of concerns, please see the comments 
inline.


================
Comment at: clang-tidy/ClangTidy.cpp:61
@@ -57,10 +60,3 @@
 
-static StringRef StaticAnalyzerChecks[] = {
-#define GET_CHECKERS
-#define CHECKER(FULLNAME, CLASS, DESCFILE, HELPTEXT, GROUPINDEX, HIDDEN)       
\
-  FULLNAME,
-#include "../../../lib/StaticAnalyzer/Checkers/Checkers.inc"
-#undef CHECKER
-#undef GET_CHECKERS
-};
+static std::vector<std::string> StaticAnalyzerChecks;
 
----------------
It was fine to have this as a global variable while it was a compile-time 
constant. But it's a bad idea to use a global mutable variable to pass 
configuration to the library. Actually, I'd leave the compile-time checks list 
as a fallback, and only override it if clang-tidy is instructed to use a static 
analyzer plugin.

================
Comment at: clang-tidy/ClangTidy.cpp:409
@@ -412,1 +408,3 @@
 
+void populateStaticAnalyzerCheckerList(StringRef Plugin, const char **Argv) {
+  IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
----------------
Is the only useful effect of this function to fill the StaticAnalyzerChecks 
variable? It's bad on its own as any other interface which only useful effect 
is side-effect.

AFAIU, you still rely on the compilation arguments to instruct the static 
analyzer that it needs to load a plugin? That doesn't sound like a good idea 
either for multiple reasons, most importantly that:
  1. This requires modification of the compilation arguments in the build 
system in order to run an analysis implemented in a plugin. Looks like an 
overkill and a totally wrong way of doing this.
  2. Compile arguments will affect what is loaded and executed by clang-tidy, 
which also seems wrong. If it is already the case, it was definitely unintended 
and we need to fix this instead of relying on this.
  3. 1 and 2 also mean that for correct usage clang-tidy's -plugin-path option 
will always need to be in sync with the -load options in the compilation 
database (read: in the build system). Extremely brittle and confusing.



================
Comment at: clang-tidy/ClangTidy.cpp:421
@@ +420,3 @@
+    CommandLine.push_back("-Xclang");
+    CommandLine.push_back("-load");
+    CommandLine.push_back("-Xclang");
----------------
BTW, does this option rely on the plugin support turned on at build time? If 
yes, we need to make most of this code #ifdefed out using the same preprocessor 
macros.

================
Comment at: clang-tidy/tool/ClangTidyMain.cpp:149
@@ -148,1 +148,3 @@
 
+static cl::opt<std::string> PluginPath(
+    "plugin-path",
----------------
Does static analyzer support only one plugin at a time?

Also, it _may_ be better to put this into ClangTidyOptions, but I'm not sure 
yet. Upsides are that then we'd avoid modification of most other interfaces. 
Obvious downsides are that this option only makes sense for the command-line 
front-end.

Can you explain your use case in more detail?

================
Comment at: clang-tidy/tool/ClangTidyMain.cpp:270
@@ -263,2 +269,3 @@
 
+
 static int clangTidyMain(int argc, const char **argv) {
----------------
nit: Remove the empty line.

================
Comment at: clang-tidy/tool/Makefile:19
@@ -16,2 +18,3 @@
 
+endif
 include $(CLANG_LEVEL)/../../Makefile.config
----------------
nit: This should be above the empty line.

http://reviews.llvm.org/D9555

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to