{ "info": { "author": "L\u00e1szl\u00f3 Nagy", "author_email": "rizsotto@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: University of Illinois/NCSA Open Source License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Programming Language :: C", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Compilers", "Topic :: Software Development :: Quality Assurance" ], "description": ".. image:: https://travis-ci.org/rizsotto/scan-build.svg?branch=master\n :target: https://travis-ci.org/rizsotto/scan-build\n\n.. image:: https://ci.appveyor.com/api/projects/status/k5fi1xy90xieqxir/branch/master?svg=true\n :target: https://ci.appveyor.com/project/rizsotto/scan-build/branch/master\n\n.. image:: https://coveralls.io/repos/github/rizsotto/scan-build/badge.svg?branch=master\n :target: https://coveralls.io/github/rizsotto/scan-build?branch=master\n\n.. image:: https://img.shields.io/pypi/v/scan-build.svg\n :target: https://pypi.python.org/pypi/scan-build\n\n.. image:: https://img.shields.io/pypi/l/scan-build.svg\n :target: https://pypi.python.org/pypi/scan-build\n\n.. image:: https://img.shields.io/pypi/dm/scan-build.svg\n :target: https://pypi.python.org/pypi/scan-build\n\n.. image:: https://img.shields.io/pypi/pyversions/scan-build.svg\n :target: https://pypi.python.org/pypi/scan-build\n\n.. image:: https://badges.gitter.im/rizsotto/scan-build.svg\n :target: https://gitter.im/rizsotto/scan-build?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n\nscan-build\n==========\n\nA package designed to wrap a build so that all calls to gcc/clang are\nintercepted and logged into a `compilation database`_ and/or piped to\nthe clang static analyzer. Includes intercept-build tool, which logs\nthe build, as well as scan-build tool, which logs the build and runs\nthe clang static analyzer on it.\n\n\nHow to get\n----------\n\nIt's available from `the Python Package Index`_ ::\n\n $ pip install scan-build\n\n\nPortability\n-----------\n\nShould be working on UNIX operating systems.\n\n- It has been tested on FreeBSD, GNU/Linux, OS X and Windows.\n\n\nPrerequisites\n-------------\n\n1. **clang compiler**, to compile the sources and have the static analyzer.\n2. **python** interpreter (version 2.7, 3.4, 3.5, 3.6, 3.7).\n\n\nHow to use\n----------\n\nTo run the Clang static analyzer against a project goes like this::\n\n $ scan-build \n\nTo generate a compilation database file goes like this::\n\n $ intercept-build \n\nTo run the Clang static analyzer against a project with compilation database\ngoes like this::\n\n $ analyze-build\n\nUse ``--help`` to know more about the commands.\n\n\nLimitations\n-----------\n\nGenerally speaking, the ``intercept-build`` and ``analyze-build`` tools\ntogether does the same job as ``scan-build`` does. So, you can expect the\nsame output from this line as simple ``scan-build`` would do::\n\n $ intercept-build && analyze-build\n\nThe major difference is how and when the analyzer is run. The ``scan-build``\ntool has three distinct model to run the analyzer:\n\n1. Use compiler wrappers to make actions.\n The compiler wrappers does run the real compiler and the analyzer.\n This is the default behaviour, can be enforced with ``--override-compiler``\n flag.\n\n2. Use special library to intercept compiler calls during the build process.\n The analyzer run against each modules after the build finished.\n Use ``--intercept-first`` flag to get this model.\n\n3. Use compiler wrappers to intercept compiler calls during the build process.\n The analyzer run against each modules after the build finished.\n Use ``--intercept-first`` and ``--override-compiler`` flags together to get\n this model.\n\nThe 1. and 3. are using compiler wrappers, which works only if the build\nprocess respects the ``CC`` and ``CXX`` environment variables. (Some build\nprocess can override these variable as command line parameter only. This case\nyou need to pass the compiler wrappers manually. eg.: ``intercept-build\n--override-compiler make CC=intercept-cc CXX=intercept-c++ all`` where the\noriginal build command would have been ``make all`` only.)\n\nThe 1. runs the analyzer right after the real compilation. So, if the build\nprocess removes removes intermediate modules (generated sources) the analyzer\noutput still kept.\n\nThe 2. and 3. generate the compilation database first, and filters out those\nmodules which are not exists. So, it's suitable for incremental analysis during\nthe development.\n\nThe 2. mode is available only on FreeBSD, Linux and OSX. Where library preload\nis available from the dynamic loader. Security extension/modes on different\noperating systems might disable library preload. This case the build behaves\nnormally, but the result compilation database will be empty. (Notable examples\nfor enabled security modes are: SIP on OS X Captain and SELinux on Fedora,\nRHEL and CentOS.) The program checks the security modes for SIP, and falls\nback to 3. mode.\n\n``intercept-build`` command uses only the 2. and 3. mode to generate the\ncompilation database. ``analyze-build`` does only run the analyzer against the\ncaptured compiler calls.\n\n\nKnown problems\n--------------\n\nBecause it uses ``LD_PRELOAD`` or ``DYLD_INSERT_LIBRARIES`` environment variables,\nit does not append to it, but overrides it. So builds which are using these\nvariables might not work. (I don't know any build tool which does that, but\nplease let me know if you do.)\n\n\nProblem reports\n---------------\n\nIf you find a bug in this documentation or elsewhere in the program or would\nlike to propose an improvement, please use the project's `issue tracker`_.\nPlease describing the bug and where you found it. If you have a suggestion\nhow to fix it, include that as well. Patches are also welcome.\n\n\nLicense\n-------\n\nThe project is licensed under University of Illinois/NCSA Open Source License.\nSee LICENSE.TXT for details.\n\n\n.. _compilation database: http://clang.llvm.org/docs/JSONCompilationDatabase.html\n.. _the Python Package Index: https://pypi.python.org/pypi/scan-build\n.. _issue tracker: https://github.com/rizsotto/scan-build/issues", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rizsotto/scan-build", "keywords": "Clang,scan-build,static analyzer", "license": "LICENSE.txt", "maintainer": "", "maintainer_email": "", "name": "scan-build", "package_url": "https://pypi.org/project/scan-build/", "platform": "", "project_url": "https://pypi.org/project/scan-build/", "project_urls": { "Homepage": "https://github.com/rizsotto/scan-build" }, "release_url": "https://pypi.org/project/scan-build/2.0.17/", "requires_dist": null, "requires_python": "", "summary": "static code analyzer wrapper for Clang.", "version": "2.0.17" }, "last_serial": 5511422, "releases": { "2.0.11": [ { "comment_text": "", "digests": { "md5": "7bde9115f001801f2eea576d9959ecda", "sha256": "71431968c08df17782e92d50fae7ceefc0e23e43c5774b315b2e031fdc9b24b0" }, "downloads": -1, "filename": "scan-build-2.0.11.tar.gz", "has_sig": false, "md5_digest": "7bde9115f001801f2eea576d9959ecda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43153, "upload_time": "2018-01-07T10:43:59", "url": "https://files.pythonhosted.org/packages/1b/97/f67ecf030e8ad0a6e4c53ed1cd6636491d6e31bcfd3f6b26150e702b02fe/scan-build-2.0.11.tar.gz" } ], "2.0.12": [ { "comment_text": "", "digests": { "md5": "c9a5b331c93fcc42f0adaf861c6d694c", "sha256": "fb776f8f54c4966494e637f37b8360542a50d635c91a4398da11922b111cb9a2" }, "downloads": -1, "filename": "scan-build-2.0.12.tar.gz", "has_sig": false, "md5_digest": "c9a5b331c93fcc42f0adaf861c6d694c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43138, "upload_time": "2018-04-12T23:16:18", "url": "https://files.pythonhosted.org/packages/fc/7f/752d21daccc5ce2d0ca9ba7221ab8b16250ec4a618d9ea5495e59bd00969/scan-build-2.0.12.tar.gz" } ], "2.0.13": [ { "comment_text": "", "digests": { "md5": "93bd40082d20116a558d3206d63db68c", "sha256": "930cb58ccc0cd4645534ebb41df23bb9766c97c4a66f9f5c6fa9ff7843a391fc" }, "downloads": -1, "filename": "scan-build-2.0.13.tar.gz", "has_sig": false, "md5_digest": "93bd40082d20116a558d3206d63db68c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43440, "upload_time": "2018-04-21T10:26:13", "url": "https://files.pythonhosted.org/packages/7e/94/c8235245aee84953a03ed49e2bb6985afa03099a3a0b190a9a0db74701bb/scan-build-2.0.13.tar.gz" } ], "2.0.14": [ { "comment_text": "", "digests": { "md5": "be35e4338813db9b9ae96a277a21cd81", "sha256": "ea62fb985415e1f37a801caa375bba266b97d9f12cae2caf73058706604b0755" }, "downloads": -1, "filename": "scan-build-2.0.14.tar.gz", "has_sig": false, "md5_digest": "be35e4338813db9b9ae96a277a21cd81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43529, "upload_time": "2018-07-24T11:18:37", "url": "https://files.pythonhosted.org/packages/02/31/37584c92d4c584003978fa46058849f3b71996e2ee20e06e3139565d10af/scan-build-2.0.14.tar.gz" } ], "2.0.15": [ { "comment_text": "", "digests": { "md5": "33ff671ca5a38f9a32539f897a6bc183", "sha256": "d4755284acfe8c9d6c885aed5a24ff7547392bbcaa525a707371636cb456437c" }, "downloads": -1, "filename": "scan-build-2.0.15.tar.gz", "has_sig": false, "md5_digest": "33ff671ca5a38f9a32539f897a6bc183", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45494, "upload_time": "2019-01-01T03:12:24", "url": "https://files.pythonhosted.org/packages/f2/e6/954478d7b50628b6c07317db75a189e3147b7f72984c0dc4498a7c8f02ab/scan-build-2.0.15.tar.gz" } ], "2.0.16": [ { "comment_text": "", "digests": { "md5": "0d1ab93b3be765f8878dadd37b0e52f4", "sha256": "f3dd20031493dd2421219f093daa16c4e4130aee4477254409fb7b73467e8105" }, "downloads": -1, "filename": "scan-build-2.0.16.tar.gz", "has_sig": false, "md5_digest": "0d1ab93b3be765f8878dadd37b0e52f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45285, "upload_time": "2019-05-14T13:02:28", "url": "https://files.pythonhosted.org/packages/7d/54/fc56937c51c1db0e09465d2068b1fa01e63bf9513a828d7ccab02686718f/scan-build-2.0.16.tar.gz" } ], "2.0.17": [ { "comment_text": "", "digests": { "md5": "16cab0a022366e7448d05717096667cd", "sha256": "29f8a99f61fa5bedd4be4eff00d1dd50d9990ec9853230b9fc826c0c694146fa" }, "downloads": -1, "filename": "scan-build-2.0.17.tar.gz", "has_sig": false, "md5_digest": "16cab0a022366e7448d05717096667cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45321, "upload_time": "2019-07-10T10:54:41", "url": "https://files.pythonhosted.org/packages/93/03/f012b6a20a6c8fcac54ebe985fc137d4e899e3b997881445bf69e4277384/scan-build-2.0.17.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "16cab0a022366e7448d05717096667cd", "sha256": "29f8a99f61fa5bedd4be4eff00d1dd50d9990ec9853230b9fc826c0c694146fa" }, "downloads": -1, "filename": "scan-build-2.0.17.tar.gz", "has_sig": false, "md5_digest": "16cab0a022366e7448d05717096667cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45321, "upload_time": "2019-07-10T10:54:41", "url": "https://files.pythonhosted.org/packages/93/03/f012b6a20a6c8fcac54ebe985fc137d4e899e3b997881445bf69e4277384/scan-build-2.0.17.tar.gz" } ] }