[PATCH] Add scan-build python implementation

Laszlo Nagy rizsotto.mailinglist at gmail.com
Fri May 8 04:25:38 PDT 2015


Hi zaks.anna, jordan_rose, krememek,

it was mentioned on the static analyzer's [[ http://clang-analyzer.llvm.org/open_projects.html | open project page ]], there is a desire to rewrite the existing Perl implementation to Python. beside that there were also a point "Do a better job interposing on a compilation" which I did prototype and test a solution.

here are the major characteristic of the rewrite:

- it works/tested on python 2.7, 3.x,
- it has no dependencies other than standard python modules,
- it differs from the current perl implementation in functionality,
  - does not generate not-used-attribute files, since analyzer does not report it;
  - does not generate parser reject report, since analyzer does not report it;
  - does not check '-isysroot' uniqness;
  - does execute 'clang' binary only if it needed (one time less than current perl);
  - does not copy pre-compiled header (.ghc) files into report directory;
  - does create compilation database during the analysis;
  - does cover build systems which do not respect 'CC' or 'CXX' environment variables;
  - analyzer is run only after the compilation database were created (not during the build);
  - does filter requested sub-directories from the final report;
  - the invocation of the script changed a little (tried to minimize the change as much as i could)
- it was tested on Linux, FreeBSD and OS X,
- it has functional and unit tests around,
- it is a self contained python package,
  - it's decomposed into multiple modules;
- it has more documentation inside than the original implementation.

http://reviews.llvm.org/D9600

Files:
  tools/scan-build2/.travis.yml
  tools/scan-build2/CHANGES.txt
  tools/scan-build2/LICENSE.txt
  tools/scan-build2/MANIFEST.in
  tools/scan-build2/README.md
  tools/scan-build2/bin/scan-build
  tools/scan-build2/libear/CMakeLists.txt
  tools/scan-build2/libear/config.h.in
  tools/scan-build2/libear/ear.c
  tools/scan-build2/libscanbuild/__init__.py
  tools/scan-build2/libscanbuild/clang.py
  tools/scan-build2/libscanbuild/command.py
  tools/scan-build2/libscanbuild/driver.py
  tools/scan-build2/libscanbuild/intercept.py
  tools/scan-build2/libscanbuild/options.py
  tools/scan-build2/libscanbuild/report.py
  tools/scan-build2/libscanbuild/resources/scanview.css
  tools/scan-build2/libscanbuild/resources/selectable.js
  tools/scan-build2/libscanbuild/resources/sorttable.js
  tools/scan-build2/libscanbuild/runner.py
  tools/scan-build2/requirements.txt
  tools/scan-build2/setup.py
  tools/scan-build2/tests/__init__.py
  tools/scan-build2/tests/functional/__init__.py
  tools/scan-build2/tests/functional/cases/__init__.py
  tools/scan-build2/tests/functional/cases/test_create_cdb.py
  tools/scan-build2/tests/functional/cases/test_exec_anatomy.py
  tools/scan-build2/tests/functional/cases/test_from_cdb.py
  tools/scan-build2/tests/functional/cases/test_from_cmd.py
  tools/scan-build2/tests/functional/exec/CMakeLists.txt
  tools/scan-build2/tests/functional/exec/config.h.in
  tools/scan-build2/tests/functional/exec/main.c
  tools/scan-build2/tests/functional/src/broken-one.c
  tools/scan-build2/tests/functional/src/broken-two.c
  tools/scan-build2/tests/functional/src/build/Makefile
  tools/scan-build2/tests/functional/src/clean-one.c
  tools/scan-build2/tests/functional/src/clean-two.c
  tools/scan-build2/tests/functional/src/compilation_database/build_broken.json.in
  tools/scan-build2/tests/functional/src/compilation_database/build_clean.json.in
  tools/scan-build2/tests/functional/src/compilation_database/build_regular.json.in
  tools/scan-build2/tests/functional/src/emit-one.c
  tools/scan-build2/tests/functional/src/emit-two.c
  tools/scan-build2/tests/functional/src/include/clean-one.h
  tools/scan-build2/tests/functional/src/main.c
  tools/scan-build2/tests/unit/__init__.py
  tools/scan-build2/tests/unit/fixtures.py
  tools/scan-build2/tests/unit/test_clang.py
  tools/scan-build2/tests/unit/test_command.py
  tools/scan-build2/tests/unit/test_driver.py
  tools/scan-build2/tests/unit/test_intercept.py
  tools/scan-build2/tests/unit/test_report.py
  tools/scan-build2/tests/unit/test_runner.py

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D9600.25301.patch
Type: text/x-patch
Size: 191101 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150508/3bf24710/attachment.bin>


More information about the cfe-commits mailing list