| Index: docs/clang_static_analyzer.md
|
| diff --git a/docs/clang_static_analyzer.md b/docs/clang_static_analyzer.md
|
| index ed9feab99e5b6460b79ff78c7954a945abe23f38..dd79d0fc2254edf94e31bb10ac53711fd4afcd20 100644
|
| --- a/docs/clang_static_analyzer.md
|
| +++ b/docs/clang_static_analyzer.md
|
| @@ -3,71 +3,20 @@
|
| See the [official clang static analyzer page](http://clang-analyzer.llvm.org/)
|
| for background.
|
|
|
| -We don't run this regularly (because the analyzer's
|
| -[support for C++ isn't great yet](http://clang-analyzer.llvm.org/dev_cxx.html)),
|
| -so everything on this page is likely broken. The last time I checked, the
|
| -analyzer reported mostly uninteresting things. This assumes you're
|
| -[building chromium with clang](clang.md).
|
| +As of early 2017, we have experimental support for the Clang static analysis
|
| +tool in the Chrome build. Warnings generated by the analysis tool are logged
|
| +to stderr along with other compiler errors at build time.
|
|
|
| -You need an llvm checkout to get `scan-build` and `scan-view`; the easiest way
|
| -to get that is to run
|
| +To enable static analysis for your build, add the following line to your
|
| +output directory's `args.gn`:
|
|
|
| -```shell
|
| -tools/clang/scripts/update.py --force-local-build --without-android
|
| ```
|
| -
|
| -## With make
|
| -
|
| -To build base, if you use the make build:
|
| -
|
| -```
|
| -builddir_name=out_analyze \
|
| -PATH=$PWD/third_party/llvm-build/Release+Asserts/bin:$PATH \
|
| -third_party/llvm/tools/clang/tools/scan-build/scan-build \
|
| - --keep-going --use-cc clang --use-c++ clang++ \
|
| - make -j8 base
|
| -```
|
| -
|
| -(`builddir_name` is set to force a clobber build.)
|
| -
|
| -Once that's done, run `third_party/llvm/tools/clang/tools/scan-view/scan-view`
|
| -to see the results; pass in the pass that `scan-build` outputs.
|
| -
|
| -## With ninja
|
| -
|
| -scan-build does its stuff by mucking with $CC/$CXX, which ninja ignores. gyp
|
| -does look at $CC/$CXX however, so you need to first run gyp\_chromium under
|
| -scan-build:
|
| -
|
| -```shell
|
| -time GYP_GENERATORS=ninja \
|
| -GYP_DEFINES='component=shared_library clang_use_chrome_plugins=0 \
|
| - mac_strip_release=0 dcheck_always_on=1' \
|
| -third_party/llvm/tools/clang/tools/scan-build/scan-build \
|
| - --use-analyzer $PWD/third_party/llvm-build/Release+Asserts/bin/clang \
|
| - build/gyp_chromium -Goutput_dir=out_analyze
|
| -```
|
| -
|
| -You then need to run the build under scan-build too, to get a HTML report:
|
| -
|
| -```shell
|
| -time third_party/llvm/tools/clang/tools/scan-build/scan-build \
|
| - --use-analyzer $PWD/third_party/llvm-build/Release+Asserts/bin/clang \
|
| - ninja -C out_analyze/Release/ base
|
| +use_clang_static_analyzer = true
|
| ```
|
|
|
| -Then run `scan-view` as described above.
|
| -
|
| -## Known False Positives
|
| -
|
| -* http://llvm.org/bugs/show_bug.cgi?id=11425
|
| -
|
| -## Stuff found by the static analyzer
|
| +The next time you rebuild, you should see static analysis warnings appear inline
|
| +with the usual Clang build warnings and errors.
|
|
|
| -* https://code.google.com/p/skia/issues/detail?id=399
|
| -* https://code.google.com/p/skia/issues/detail?id=400
|
| -* https://codereview.chromium.org/8308008/
|
| -* https://codereview.chromium.org/8313008/
|
| -* https://codereview.chromium.org/8308009/
|
| -* https://codereview.chromium.org/10031018/
|
| -* https://codereview.chromium.org/12390058/
|
| +## Future plans/potential issues
|
| +* Support for running under GOMA is untested, but will be added shortly if
|
| + feasible.
|
|
|