Package: scancode-toolkit
A typical software project often reuses hundreds of third-party packages.
License and packages, dependencies and origin information is not always easy to
find and not normalized: ScanCode discovers and normalizes this data for you.Read more about ScanCode here:https://scancode-toolkit.readthedocs.io/.Check out the code athttps://github.com/nexB/scancode-toolkitDiscover also:The ScanCode.io server project here:https://scancodeio.readthedocs.ioThe ScanCode Workbench project for visualization of scancode results data:https://github.com/nexB/scancode-workbenchOther companion SCA projects for code origin, license and security analysis
here:https://aboutcode.orgBuild and tests statusWe run 30,000+ tests on each commit on multiple CIs to ensure a good platform
compabitility with multiple versions of Windows, Linux and macOS.AzureRTD BuildGitHub actions DocsGitHub actions ReleaseWhy use ScanCode?As astandalone command-line tool, ScanCode iseasy to install, run,
and embed in your CI/CD processing pipeline.
It runs onWindows, macOS, and Linux.ScanCode isused by several projects and organizationssuch as
theEclipse Foundation,OpenEmbedded.org,
theFSFE,
theFSF,OSS Review Toolkit,ClearlyDefined.io,RedHat Fabric8 analytics,
and many more.ScanCode detects licenses, copyrights, package manifests, direct dependencies,
and more both insource codeandbinaryfiles and is considered as the
best-in-class and reference tool in this domain, re-used as the core tools for
software composition data collection by several open source tools.ScanCode provides themost accurate license detection engineand does a
full comparison (also known as diff or red line comparison) between a database
of license texts and your code instead of relying only on approximate regex
patterns or probabilistic search, edit distance or machine learning.Written in Python, ScanCode iseasy to extend with pluginsto contribute
new and improved scanners, data summarization, package manifest parsers, and
new outputs.You can save your scan results asJSON, YAML, HTML, CycloneDX or SPDXor
even create your own format with Jinja templates.You can also organize and run ScanCode server-side with the
companionScanCode.io web appto organize and store multiple scan projects including scripted scanning pipelines.ScanCode output data can be easily visualized and analysed using theScanCode Workbenchdesktop app.ScanCode isactively maintained, has agrowing users and contributors
community.ScanCode is heavilytestedwith an automated test suite of over20,000 tests.ScanCode has an extensive and growing documentation.ScanCode can process packages, build manifest and lockfile formats to collect
Package URLs and extract metadata: Alpine packages, BUCK files, ABOUT files,
Android apps, Autotools, Bazel, JavaScript Bower, Java Axis, MS Cab,
Rust Cargo, Cocoapods, Chef Chrome apps, PHP Composer and composer.lock,
Conda, CPAN, Debian, Apple dmg, Java EAR, WAR, JAR, FreeBSD packages,
Rubygems gemspec, Gemfile and Gemfile.lock, Go modules, Haxe packages,
InstallShield installers, iOS apps, ISO images, Apache IVY, JBoss Sar,
R CRAN, Apache Maven, Meteor, Mozilla extensions, MSI installers,
JavaScript npm packages, package-lock.json, yarn.lock, NSIS Installers,
NugGet, OPam, Cocoapods, Python PyPI setup.py, setup.cfg, and
several related lockfile formats, semi structured README
files such as README.android, README.chromium, README.facebook, README.google,
README.thirdparty, RPMs, Shell Archives, Squashfs images, Java WAR, Windows
executables and the Windows registry
and a few more. Seeall available package parsersfor the exhaustive list.See ourroadmapfor upcoming features.DocumentationThe ScanCode documentation is hosted atscancode-toolkit.readthedocs.io.If you are new to visualization of scancode results data, start with ournewcomerpage.If you want to compare output changes between different versions of ScanCode,
or want to look at  scans generated by ScanCode, review ourreference scans.Other Important Documentation Pages:Asynopsisof ScanCode command line options.Tutorials on:How to run a scanHow to visualize scan resultsAn exhaustive list ofall available optionsDocumentation onContributing to Code DevelopmentDocumentation onPlugin ArchitectureFAQSee alsohttps://aboutcode.orgfor related companion projects and tools.InstallationBefore installing ScanCode make sure that you have installed the prerequisites
properly. This means installing Python 3.8 for x86/64 architectures.
We support Python 3.8, 3.9, 3.10 and 3.11.Seeprerequisitesfor detailed information on the support platforms and Python versions.There are a few common ways toinstall ScanCode.**Installation as an application: Install Python 3.8, download a release archive, extract and run**.This is the recommended installation method.Development installation from source code using a git cloneDevelopment installation as a library with “pip install scancode-toolkit”[Note that this is not supported on arm64 machines]Run in a Docker container with a git clone and “docker run”Quick StartAfter ScanCode is installed successfully you can run an example scan printed on screen as JSON:scancode -clip --json-pp - samplesFollow theHow to Run a Scantutorial to perform a basic scan on thesamplesdirectory distributed by
default with ScanCode.See more command examples:scancode --examplesSeeHow to select what will be detected in a scanandHow to specify the output formatfor more information.You can also refer to thecommand line options synopsisand an exhaustive list ofall available command line options.Archive extractionBy default ScanCode does not extract files from tarballs, zip files, and
other archives as part of the scan. The archives that exist in a codebase
must be extracted before running a scan:extractcodeis a bundled utility
behaving as a mostly-universal archive extractor. For example, this command will
recursively extract the mytar.tar.bz2 tarball in the mytar.tar.bz2-extract
directory:./extractcode mytar.tar.bz2Seeall extractcode optionsandhow to extract archivesfor details.SupportIf you have a problem, a suggestion or found a bug, please enter a ticket at:https://github.com/nexB/scancode-toolkit/issuesFor discussions and chats, we have:an official Gitter channel forweb-based chats.
Gitter is now accessible throughElementor anIRC bridge.
There are other AboutCode project-specific channels available there too.The discussion channel forscancodespecifically aimed at users and developers using scancode-toolkit.Source code and downloadshttps://github.com/nexB/scancode-toolkit/releaseshttps://github.com/nexB/scancode-toolkit.githttps://pypi.org/project/scancode-toolkit/https://github.com/nexB/scancode-thirdparty-src.githttps://github.com/nexB/scancode-plugins.githttps://github.com/nexB/thirdparty-packages.gitLicenseApache-2.0 as the overall licenseCC-BY-4.0 for reference datasets (initially was in the Public Domain).Multiple other secondary permissive or copyleft licenses (LGPL, MIT,
BSD, GPL 2/3, etc.) for third-party components and test suite code and data.See the NOTICE file and the .ABOUT files that document the origin and license of
the third-party code used in ScanCode for more details.