NoQ added a comment.

Hey, thanks for waiting on me! I'm slow these days, just 50 more mails to go >.<

This review strikes me as a wiki material. I wonder what's the community stance 
on making wikis. #showerthoughs



================
Comment at: clang/www/analyzer/codechecker.html:13
+<div id="page">
+<!--#include virtual="menu.html.incl"-->
+<div id="content">
----------------
Note related to your patch, but SSI seem to be completely broken these days; 
previously the dropdown menus header kept working on the front page but now 
even that's missing. Patches are very welcome >.<


================
Comment at: clang/www/analyzer/codechecker.html:23
+<pre class="code_example">
+CodeChecker check -b "cd ~/your-project && make clean && make" -o ~/results
+</pre>
----------------
I think you should start with installing CodeChecker. I.e.,
1. Clone it from github: `git clone ...`.
2. ???


================
Comment at: clang/www/analyzer/codechecker.html:28
+<p>
+The <tt>check</tt> command will print an overview of the issues found in your 
project by the analyzers.
+</p>
----------------
I'm confused. I obtained an overview, but what are the steps that i need to do 
if i want to actually view the issues? I have to start the web server anyway, 
right? Then what's the point of of invoking check separately? Can you invoke 
check from the web server directly?

I wish this document looked more like a step-by-step guide on how to obtain the 
results (or how to set up a collaborative server). Right now it's a collection 
of seemingly unrelated solutions for sub-problems that I don't immediately 
understand how to combine in order to obtain the desired result. 


================
Comment at: clang/www/analyzer/command-line.html:18
+
+<p>The following tools are used commonly to run the analyzer from the command 
line.
+Both tools are wrapper scripts to drive the analysis and the underlying 
invocations of the Clang compiler:
----------------
The first thing that we want to underline here is that the user should 
ABSOLUTELY NOT try to read warnings from the command line. I still see a lot of 
users who try to read scan-build's standard output and understand warnings from 
there without seeing any path notes.

I suggest the following intro:

"Static Analyzer is by design a GUI tool. Its purpose is to find buggy 
execution paths in the program, and such paths are very hard to comprehend by 
looking at a non-interactive standard output. It is possible, however, to 
invoke the Static Analyzer from the command line in order to obtain analysis 
results, and then later view them interactively in a graphical interface."


================
Comment at: clang/www/analyzer/command-line.html:19
+<p>The following tools are used commonly to run the analyzer from the command 
line.
+Both tools are wrapper scripts to drive the analysis and the underlying 
invocations of the Clang compiler:
+<ol>
----------------
Do you plan to eventually mention clang-tidy as well?


================
Comment at: clang/www/analyzer/command-line.html:22-27
+  <ul>
+    <li>Preferred on macOS.</li>
+    <li>In tree, part of the LLVM project.</li>
+    <li>Provides limited and unsupported <a 
href="https://clang.llvm.org/docs/analyzer/user-docs/CrossTranslationUnit.html";>Cross
 Translation Unit (CTU) analysis</a> capabilities.
+    </li>
+  </ul>
----------------
WDYT of the following:

Scan-Build is an old and simple command-line tool that emits static analyzer 
warnings as HTML files while compiling your project. You can view analysis 
results in your web browser.
- Useful for individual developers who simply want to view static analysis 
results at their desk, or in very simple collaborative environment.
- Works on all major platforms (Windows, Linux, macOS) and is available as a 
package in many linux distributions.
- Does not include support for cross-translation-unit analysis.


================
Comment at: clang/www/analyzer/command-line.html:28
+  </ul>
+  <li><a href="codechecker.html">CodeChecker</a></li>
+  <ul>
----------------
Let's describe the tool a bit as well. Maybe something like this:

CodeChecker is a web server that runs the Static Analyzer on your projects on 
demand and maintains a database of issues.

- Perfect for managing large amounts of Static Analyzer warnings in a 
collaborative environment.
- Generally much more feature-rich than scan-build.
- (more stuff here)


================
Comment at: clang/www/analyzer/command-line.html:31
+    <li>Preferred on Linux.</li>
+    <li>Out-of-tree, not part of the LLVM project, hosted on github.</li>
+    <li>On Linux there are many projects for embedded devices which are built 
only with GCC.
----------------
LLVM is now also hosted on github, so not sure what the message is. We should 
probably either provide a link or just say that it's out-of-tree.


================
Comment at: clang/www/analyzer/command-line.html:32-33
+    <li>Out-of-tree, not part of the LLVM project, hosted on github.</li>
+    <li>On Linux there are many projects for embedded devices which are built 
only with GCC.
+    CodeChecker converts these GCC invocations to the appropriate Clang 
invocations, this way the CSA can work on these projects seamlessly.
+    </li>
----------------
[[ 
https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0/clang/tools/scan-build/libexec/ccc-analyzer#L350
 | The same is true for scan-build ]].

Also, while it is possible that one of the tools does a strictly better job 
than the other, but the problem is, i think, generally unsolvable, because 
there's no perfect correspondence between GCC flags and Clang flags. So i think 
we should avoid strong statements here ("work seamlessly") - even intercepting 
the build system (let alone setting correct compiler flags) is an unsolvable 
problem in general.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D70439



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

Reply via email to