diff --git a/docs/source/cli-reference/basic-options.rst b/docs/source/cli-reference/basic-options.rst new file mode 100644 index 00000000000..70fbec2c1c3 --- /dev/null +++ b/docs/source/cli-reference/basic-options.rst @@ -0,0 +1,239 @@ +`Basic` Options +=============== + +.. include:: /rst_snippets/basic_options.rst + +---- + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +---- + +``--generated`` Options +----------------------- + + The ``--generated`` option classifies automatically generated code files with a flag. + + An example of using ``--generated`` in a scan:: + + scancode -clpieu --json-pp output.json samples --generated + + In the results, for each file the following attribute is added with it's corresponding + ``true``/``false`` value :: + + "is_generated": true + + In the samples folder, the following files have a true value for their is_generated attribute:: + + "samples/zlib/dotzlib/LICENSE_1_0.txt" + "samples/JGroups/licenses/apache-2.0.txt" + + .. + [ToDo] Research and Write Better + +---- + +``--max-email`` Options +----------------------- + + .. admonition:: Dependency + + The option ``--max-email`` is a sub-option of and requires the option ``--email``. + + If in the files that are scanned, in individual files, there are a lot of emails (i.e lists) which + are unnecessary and clutter the scan results, ``--max-email`` option can be used to report emails + only up to a limit in individual files. + + Some important INTEGER values of the ``--max-email INTEGER`` option: + + - 0 - No limit, include all emails. + - 50 - Default. + + An example usage:: + + scancode -clpieu --json-pp output.json samples --max-email 5 + + This only reports 5 email addresses per file and ignores the rest. + +---- + +``--max-url`` Options +--------------------- + + .. admonition:: Dependency + + The option ``--max-url`` is a sub-option of and requires the option ``--url``. + + If in the files that are scanned, in individual files, there are a lot of links to other websites + (i.e url lists) which are unnecessary and clutter the scan results, ``--max-url`` option can be + used to report urls only up to a limit in individual files. + + Some important INTEGER values of the ``--max-url INTEGER`` option: + + - 0 - No limit, include all urls. + - 50 - Default. + + An example usage:: + + scancode -clpieu --json-pp output.json samples --max-url 10 + + This only reports 10 urls per file and ignores the rest. + +---- + +``--license-score`` Options +--------------------------- + + .. admonition:: Dependency + + The option ``--license-score`` is a sub-option of and requires the option ``--license``. + + .. + [ToDo] Research and Write License Matching Better + + License matching strictness, i.e. How closely matched licenses are detected in a scan, can be + modified by using this ``--license-score`` option. + + Some important INTEGER values of the ``--license-score INTEGER`` option: + + - **0** - Default and Lowest Value, All matches are reported. + - **100** - Highest Value, Only licenses with a much better match are reported + + Here, a bigger number means a better match, i.e. Setting a higher license score translates to a + higher threshold for matching licenses (with equal or less number of license matches). + + An example usage:: + + scancode -clpieu --json-pp output.json samples --license-score 70 + + Here's the license results on setting the integer value to 100, Vs. the default value 0. This is + visualized using ScanCode workbench in the License Info Dashboard. + + .. list-table:: License scan results of Samples Directory. + + * - .. figure:: data/core_lic_score_0.png + + License Score 0 (Default). + + - .. figure:: data/core_lic_score_100.png + + License Score 100. + +---- + +``--license-text`` Options +-------------------------- + + .. admonition:: Dependency + + The option ``--license-text`` is a sub-option of and requires the option ``--license``. + + .. admonition:: Sub-Option + + The option ``--license-text-diagnostics`` and ``--is-license-text`` are sub-options of + ``--license-text``. ``--is-license-text`` is a Post-Scan Option. + + With the ``--license-text`` option, the scan results attribute "matched text" includes the matched text + for the detected license. + + An example Scan:: + + scancode -cplieu --json-pp output.json samples --license-text + + An example matched text included in the results is as follows:: + + "matched_text": + " This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu" + + - The file in which this license was detected: ``samples/arch/zlib.tar.gz-extract/zlib-1.2.8/zlib.h`` + - License name: "ZLIB License" + +---- + +``--license-url-template`` Options +---------------------------------- + + .. admonition:: Dependency + + The option ``--license-url-template`` is a sub-option of and requires the option + ``--license``. + + The ``--license-url-template`` option sets the template URL used for the license reference URLs. + + The default template URL is : [https://enterprise.dejacode.com/urn/urn:dje:license:{}] + In a template URL, curly braces ({}) are replaced by the license key. + + So, by default the license reference URL points to the dejacode page for that license. + + A scan example using the ``--license-url-template TEXT`` option :: + + scancode -clpieu --json-pp output.json samples --license-url-template https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/{}.yml + + In a normal scan, reference url for "ZLIB License" is as follows:: + + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + + After using the option in the following manner:: + + ``--license-url-template https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/{}`` + + the reference URL changes to this `zlib.yml file `_:: + + "reference_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/zlib.yml", + + The reference URL changes for all detected licenses in the scan, across the scan result file. + +---- + +``--license-text-diagnostics`` Options +-------------------------------------- + + .. admonition:: Dependency + + The option ``--license-text-diagnostics`` is a sub-option of and requires the options + ``--license`` and ``--license-text``. + + In the matched license text, include diagnostic highlights surrounding with square brackets [] + words that are not matched. + + In a normal scan, whole lines of text are included in the matched license text, including parts + that are possibly unmatched. + + An example Scan:: + + scancode -cplieu --json-pp output.json samples --license-text --license-text-diagnostics + + Running a scan on the samples directory with ``--license-text --license-text-diagnostics`` options, + causes the following difference in the scan result of the file + ``samples/JGroups/licenses/bouncycastle.txt``. + + Without Diagnostics:: + + "matched_text": + "License Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle + (http://www.bouncycastle.org) Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files (the \"Software\"), + to deal in the Software without restriction + + With Diagnostics on:: + + "matched_text": + "License [Copyright] ([c]) [2000] - [2006] [The] [Legion] [Of] [The] [Bouncy] [Castle] + ([http]://[www].[bouncycastle].[org]) Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files (the \"Software\"), + to deal in the Software without restriction, diff --git a/docs/source/cli-reference/core-options.rst b/docs/source/cli-reference/core-options.rst new file mode 100644 index 00000000000..a612f13730e --- /dev/null +++ b/docs/source/cli-reference/core-options.rst @@ -0,0 +1,121 @@ +`Core` Options +============== + +.. _cli_core: + +.. include:: /rst_snippets/core_options.rst + +---- + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +---- + +Comparing Progress Message Options +---------------------------------- + + **Default Progress Message**:: + + Scanning files for: infos, licenses, copyrights, packages, emails, urls with 1 process(es)... + Building license detection index...Done. + Scanning files... + [####################] 43 + Scanning done. + Scan statistics: 43 files scanned in 33s. + Scan options: infos, licenses, copyrights, packages, emails, urls with 1 process(es). + Scanning speed: 1.4 files per sec. + Scanning time: 30s. + Indexing time: 2s. + Saving results. + + **Progress Message with ``--verbose``**:: + + Scanning files for: infos, licenses, copyrights, packages, emails, urls with 1 process(es)... + Building license detection index...Done. + Scanning files... + Scanned: screenshot.png + Scanned: README + ... + Scanned: zlib/dotzlib/ChecksumImpl.cs + Scanned: zlib/dotzlib/readme.txt + Scanned: zlib/gcc_gvmat64/gvmat64.S + Scanned: zlib/ada/zlib.ads + Scanned: zlib/infback9/infback9.c + Scanned: zlib/infback9/infback9.h + Scanned: arch/zlib.tar.gz + Scanning done. + Scan statistics: 43 files scanned in 29s. + Scan options: infos, licenses, copyrights, packages, emails, urls with 1 process(es). + Scanning speed: 1.58 files per sec. + Scanning time: 27s. + Indexing time: 2s. + Saving results. + + So, with ``--verbose`` enables, progress messages for individual files are shown. + + **With the ``--quiet`` option enabled**, nothing is printed on the Command Line. + +---- + +``--timeout`` Option +-------------------- + + This option sets scan timeout for **each file** (and not the entire scan). If some file scan + exceeds the specified timeout, that file isn't scanned anymore and the next file scanning + starts. This helps avoiding very large/long files, and saves time. + + Also the number (timeout in seconds) to be followed by this option can be a + floating point number, i.e. 1.5467. + +---- + +``--reindex-licenses`` Option +----------------------------- + + ScanCode maintains a license index to search for and detect licenses. When Scancode is + configured for the first time, a license index is built and used in every scan thereafter. + + This ``--reindex-licenses`` option rebuilds the license index. Running a scan with this option + displays the following message to the terminal in addition to what it normally shows:: + + Checking and rebuilding the license index... + + .. + [ToDo] Research and Write Better + +---- + +``--from-json`` Option +---------------------- + + If you want to input scan results from a .json file, and run a scan again on those same files, + with some other options/output format, you can do so using the ``--from-json`` option. + + An example scan command using ``--from-json``:: + + scancode --from-json sample.json --json-pp sample_2.json --classify + + This inputs the scan results from ``sample.json``, runs the post-scan plugin ``--classify`` and + outputs the results for this scan to ``sample_2.json``. + +---- + +``--max-in-memory`` Option +---------------------------------- + + During a scan, as individual files are scanned, the scan details for those files are kept on + memory till the scan is completed. Then after the scan is completed, they are written in the + specified output format. + + Now, if the scan involves a very large number of files, they might not fit in the memory during + the scan. For this reason, disk-caching can be used for some/all of the files. + + Some important INTEGER values of the ``--max-in-memory INTEGER`` option: + + - **0** - Unlimited Memory, store all the file/directory scan results on memory + - **-1** - Use only Disk-Caching, store all the file/directory scan results on disk + - **10000** - Default, store 10,000 file/directory scan results on memory and the rest on disk + + An example usage:: + + scancode -clieu --json-pp sample.json samples --max-in-memory -1 diff --git a/docs/source/cli-reference/data/core_lic_score_0.png b/docs/source/cli-reference/data/core_lic_score_0.png new file mode 100644 index 00000000000..0888bb7530f Binary files /dev/null and b/docs/source/cli-reference/data/core_lic_score_0.png differ diff --git a/docs/source/cli-reference/data/core_lic_score_100.png b/docs/source/cli-reference/data/core_lic_score_100.png new file mode 100644 index 00000000000..77859934a80 Binary files /dev/null and b/docs/source/cli-reference/data/core_lic_score_100.png differ diff --git a/docs/source/cli-reference/data/json_ugly.png b/docs/source/cli-reference/data/json_ugly.png new file mode 100644 index 00000000000..d5e4c88770b Binary files /dev/null and b/docs/source/cli-reference/data/json_ugly.png differ diff --git a/docs/source/cli-reference/data/output_csv.png b/docs/source/cli-reference/data/output_csv.png new file mode 100644 index 00000000000..d232e1b5bc7 Binary files /dev/null and b/docs/source/cli-reference/data/output_csv.png differ diff --git a/docs/source/cli-reference/data/output_html1.png b/docs/source/cli-reference/data/output_html1.png new file mode 100644 index 00000000000..7f624ea4648 Binary files /dev/null and b/docs/source/cli-reference/data/output_html1.png differ diff --git a/docs/source/cli-reference/data/output_html2.png b/docs/source/cli-reference/data/output_html2.png new file mode 100644 index 00000000000..5f0253a0366 Binary files /dev/null and b/docs/source/cli-reference/data/output_html2.png differ diff --git a/docs/source/cli-reference/data/output_html3.png b/docs/source/cli-reference/data/output_html3.png new file mode 100644 index 00000000000..31dc68d971b Binary files /dev/null and b/docs/source/cli-reference/data/output_html3.png differ diff --git a/docs/source/cli-reference/data/output_html_app1.png b/docs/source/cli-reference/data/output_html_app1.png new file mode 100644 index 00000000000..1d8e3551da4 Binary files /dev/null and b/docs/source/cli-reference/data/output_html_app1.png differ diff --git a/docs/source/cli-reference/data/output_html_app2.png b/docs/source/cli-reference/data/output_html_app2.png new file mode 100644 index 00000000000..ff80a5dc60b Binary files /dev/null and b/docs/source/cli-reference/data/output_html_app2.png differ diff --git a/docs/source/cli-reference/data/output_html_app3.png b/docs/source/cli-reference/data/output_html_app3.png new file mode 100644 index 00000000000..89e7b2ba6ea Binary files /dev/null and b/docs/source/cli-reference/data/output_html_app3.png differ diff --git a/docs/source/cli-reference/data/output_json.png b/docs/source/cli-reference/data/output_json.png new file mode 100644 index 00000000000..21d5313e1ad Binary files /dev/null and b/docs/source/cli-reference/data/output_json.png differ diff --git a/docs/source/cli-reference/data/output_jsonlines.png b/docs/source/cli-reference/data/output_jsonlines.png new file mode 100644 index 00000000000..e957aa56b82 Binary files /dev/null and b/docs/source/cli-reference/data/output_jsonlines.png differ diff --git a/docs/source/cli-reference/data/output_jsonpp.png b/docs/source/cli-reference/data/output_jsonpp.png new file mode 100644 index 00000000000..5c609257701 Binary files /dev/null and b/docs/source/cli-reference/data/output_jsonpp.png differ diff --git a/docs/source/cli-reference/data/output_spdx_rdf1.png b/docs/source/cli-reference/data/output_spdx_rdf1.png new file mode 100644 index 00000000000..0ae14bfc740 Binary files /dev/null and b/docs/source/cli-reference/data/output_spdx_rdf1.png differ diff --git a/docs/source/cli-reference/data/output_spdx_tv_file.png b/docs/source/cli-reference/data/output_spdx_tv_file.png new file mode 100644 index 00000000000..b1f841b320c Binary files /dev/null and b/docs/source/cli-reference/data/output_spdx_tv_file.png differ diff --git a/docs/source/cli-reference/data/output_spdx_tv_licenses.png b/docs/source/cli-reference/data/output_spdx_tv_licenses.png new file mode 100644 index 00000000000..db854e47df5 Binary files /dev/null and b/docs/source/cli-reference/data/output_spdx_tv_licenses.png differ diff --git a/docs/source/cli-reference/data/output_spdx_tv_package.png b/docs/source/cli-reference/data/output_spdx_tv_package.png new file mode 100644 index 00000000000..5139e92888f Binary files /dev/null and b/docs/source/cli-reference/data/output_spdx_tv_package.png differ diff --git a/docs/source/cli-reference/data/scancode-toolkit-static-html1.png b/docs/source/cli-reference/data/scancode-toolkit-static-html1.png new file mode 100644 index 00000000000..dafdc4e41b2 Binary files /dev/null and b/docs/source/cli-reference/data/scancode-toolkit-static-html1.png differ diff --git a/docs/source/cli-reference/data/scancode-toolkit-static-html2.png b/docs/source/cli-reference/data/scancode-toolkit-static-html2.png new file mode 100644 index 00000000000..28b5458a221 Binary files /dev/null and b/docs/source/cli-reference/data/scancode-toolkit-static-html2.png differ diff --git a/docs/source/cli-reference/help-text-options.rst b/docs/source/cli-reference/help-text-options.rst new file mode 100644 index 00000000000..173efbb6ffe --- /dev/null +++ b/docs/source/cli-reference/help-text-options.rst @@ -0,0 +1,779 @@ +Getting Help from the Command Line +================================== + +ScanCode-Toolkit Command Line Interface can help you to search for specific options or use cases +from the command line itself. These are two options are ``--help`` and ``--examples``, and are +very helpful if you need a quick glance of the options or use cases. Or it can be useful when you +can't access, the more elaborate online documentation. + +.. include:: /rst_snippets/doc_help.rst + +.. _cli_help_text: + +Help text +--------- + +The Scancode-Toolkit Command Line Interface has a Help option displaying all the options. It also +displays basic usage, and some simple examples. The command line option for this is ``--help``. + +.. Tip:: + + You can also use the shorter ``-h`` option, which does the same. + +To see the help text from the Terminal, execute the following command:: + + $ scancode --help + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +The Following Help Text is displayed, i.e. This is the help text for Scancode Version 3.1.1 :: + + Usage: scancode [OPTIONS] ... + + scan the file or directory for license, origin and packages + and save results to FILE(s) using one or more output format option. + + Error and progress are printed to stderr. + + Options: + + primary scans: + -l, --license Scan for licenses. + -p, --package Scan for package manifests and packages. + -c, --copyright Scan for copyrights. + + other scans: + -i, --info Scan for file information (size, checksums, etc). + --generated Classify automatically generated code files with a flag. + -e, --email Scan for emails. + -u, --url Scan for urls. + + scan options: + --license-score INTEGER Do not return license matches with a + score lower than this score. A number + between 0 and 100. [default: 0] + --license-text Include the detected licenses matched + text. + --license-text-diagnostics In the matched license text, include + diagnostic highlights surrounding with + square brackets [] words that are not + matched. + --license-url-template TEXT Set the template URL used for the license + reference URLs. Curly braces ({}) are + replaced by the license key. [default: h + ttps://enterprise.dejacode.com/urn/urn:dj + e:license:{}] + --max-email INT Report only up to INT emails found in a + file. Use 0 for no limit. [default: 50] + --max-url INT Report only up to INT urls found in a + file. Use 0 for no limit. [default: 50] + + output formats: + --json FILE Write scan output as compact JSON to FILE. + --json-pp FILE Write scan output as pretty-printed JSON to + FILE. + --json-lines FILE Write scan output as JSON Lines to FILE. + --csv FILE Write scan output as CSV to FILE. + --html FILE Write scan output as HTML to FILE. + --custom-output FILE Write scan output to FILE formatted with the + custom Jinja template file. + --custom-template FILE Use this Jinja template FILE as a custom + template. + --spdx-rdf FILE Write scan output as SPDX RDF to FILE. + --spdx-tv FILE Write scan output as SPDX Tag/Value to FILE. + --html-app FILE (DEPRECATED: use the ScanCode Workbench app + instead ) Write scan output as a mini HTML + application to FILE. + + output filters: + --ignore-author Ignore a file (and all its findings) + if an author contains a match to the + regular expression. Note + that this will ignore a file even if + it has other findings such as a + license or errors. + --ignore-copyright-holder + Ignore a file (and all its findings) + if a copyright holder contains a match + to the regular expression. + Note that this will ignore a file even + if it has other scanned data such as a + license or errors. + --only-findings Only return files or directories with + findings for the requested scans. + Files and directories without findings + are omitted (file information is not + treated as findings). + + output control: + --full-root Report full, absolute paths. + --strip-root Strip the root directory segment of all paths. The + default is to always include the last directory segment + of the scanned path such that all paths have a common + root directory. + + pre-scan: + --ignore Ignore files matching . + --include Include files matching . + --classify Classify files with flags telling if the + file is a legal, or readme or test file, + etc. + --facet = Add the to files with a path + matching . + + post-scan: + --consolidate Group resources by Packages or license and + copyright holder and return those groupings + as a list of consolidated packages and a list + of consolidated components. This requires the + scan to have/be run with the copyright, + license, and package options active + --filter-clues Filter redundant duplicated clues already + contained in detected license and copyright + texts and notices. + --is-license-text Set the "is_license_text" flag to true for + files that contain mostly license texts and + notices (e.g over 90% of the content). + [EXPERIMENTAL] + --license-clarity-score Compute a summary license clarity score at + the codebase level. + --license-policy FILE Load a License Policy file and apply it to + the scan at the Resource level. + --mark-source Set the "is_source" to true for directories + that contain over 90% of source files as + children and descendants. Count the number of + source files in a directory as a new + source_file_counts attribute + --summary Summarize license, copyright and other scans + at the codebase level. + --summary-by-facet Summarize license, copyright and other scans + and group the results by facet. + --summary-key-files Summarize license, copyright and other scans + for key, top-level files. Key files are top- + level codebase files such as COPYING, README + and package manifests as reported by the + --classify option "is_legal", "is_readme", + "is_manifest" and "is_top_level" flags. + --summary-with-details Summarize license, copyright and other scans + at the codebase level, keeping intermediate + details at the file and directory level. + + core: + --timeout Stop an unfinished file scan after a timeout + in seconds. [default: 120 seconds] + -n, --processes INT Set the number of parallel processes to use. + Disable parallel processing if 0. Also + disable threading if -1. [default: 1] + --quiet Do not print summary or progress. + --verbose Print progress as file-by-file path instead + of a progress bar. Print verbose scan + counters. + --from-json Load codebase from an existing JSON scan + --max-in-memory INTEGER Maximum number of files and directories scan + details kept in memory during a scan. + Additional files and directories scan details + above this number are cached on-disk rather + than in memory. Use 0 to use unlimited memory + and disable on-disk caching. Use -1 to use + only on-disk caching. [default: 10000] + + miscellaneous: + --reindex-licenses Check the license index cache and reindex if + needed and exit. + + documentation: + -h, --help Show this message and exit. + --about Show information about ScanCode and licensing and + exit. + --version Show the version and exit. + --examples Show command examples and exit. + --list-packages Show the list of supported package types and exit. + --plugins Show the list of available ScanCode plugins and exit. + --print-options Show the list of selected options and exit. + + Examples (use --examples for more): + + Scan the 'samples' directory for licenses and copyrights. + Save scan results to the 'scancode_result.json' JSON file: + + scancode --license --copyright --json-pp scancode_result.json + samples + + Scan the 'samples' directory for licenses and package manifests. Print scan + results on screen as pretty-formatted JSON (using the special '-' FILE to print + to on screen/to stdout): + + scancode --json-pp - --license --package samples + + Note: when you run scancode, a progress bar is displayed with a + counter of the number of files processed. Use --verbose to display + file-by-file progress. + +.. _cli_examples_text: + +Command Examples Text +--------------------- + +The Scancode-Toolkit Command Line Interface has an ``--examples`` option which displays some basic +examples (more than the basic synopsis in ``--help``). These examples include the following aspects +of code scanning: + +- Scanning Single File/Directory +- Output Scan results to stdout (as JSON) or HTML/JSON file +- Scanning for only Copyrights/Licenses +- Ignoring Files +- Using GLOB Patterns to Scan Multiple Files +- Using Verbose Mode + +The command line option for displaying these basic examples is ``--examples``. + +To see the help text from the Terminal, execute the following command:: + + $ scancode --examples + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +The Following Text is displayed, i.e. This is the examples for Scancode Version 3.1.1 :: + + Scancode command lines examples: + + (Note for Windows: use '\' back slash instead of '/' forward slash for paths.) + + Scan a single file for copyrights. Print scan results to stdout as pretty JSON: + + scancode --copyright samples/zlib/zlib.h --json-pp - + + Scan a single file for licenses, print verbose progress to stderr as each + file is scanned. Save scan to a JSON file: + + scancode --license --verbose samples/zlib/zlib.h --json licenses.json + + Scan a directory explicitly for licenses and copyrights. Redirect JSON scan + results to a file: + + scancode --license --copyright samples/zlib/ --json - > scan.json + + Scan a directory while ignoring a single file. Scan for license, copyright and + package manifests. Use four parallel processes. + Print scan results to stdout as pretty formatted JSON. + + scancode -lc --package --ignore README --processes 4 --json-pp - samples/ + + Scan a directory while ignoring all files with .txt extension. + Print scan results to stdout as pretty formatted JSON. + It is recommended to use quotes around glob patterns to prevent pattern + expansion by the shell: + + scancode --json-pp - --ignore "*.txt" samples/ + + Special characters supported in GLOB pattern: + - * matches everything + - ? matches any single character + - [seq] matches any character in seq + - [!seq] matches any character not in seq + + For a literal match, wrap the meta-characters in brackets. + For example, '[?]' matches the character '?'. + For details on GLOB patterns see https://en.wikipedia.org/wiki/Glob_(programming). + + Note: Glob patterns cannot be applied to path as strings. + For example, this will not ignore "samples/JGroups/licenses". + + scancode --json - --ignore "samples*licenses" samples/ + + + Scan a directory while ignoring multiple files (or glob patterns). + Print the scan results to stdout as JSON: + + scancode --json - --ignore README --ignore "*.txt" samples/ + + Scan a directory for licenses and copyrights. Save scan results to an + HTML file: + + scancode --license --copyright --html scancode_result.html samples/zlib + + To extract archives, see the 'extractcode' command instead. + +Plugins Help Text +----------------- + +The command line option for displaying all the plugins is: + +- ``--plugins`` + +To see the help text from the Terminal, execute the following command:: + + $ scancode --plugins + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +.. note:: + + Plugins that are shown by using ``--plugins`` include the following: + + #. Post-Scan Plugins + #. Pre-Scan Plugins + #. Output Options + #. Output Control + #. Basic Scan Options + +The Following Text is displayed, i.e. This is the available plugins for Scancode Version 3.1.1 :: + + -------------------------------------------- + Plugin: scancode_output:csv class: formattedcode.output_csv:CsvOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: csv: --csv + help: Write scan output as CSV to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:html class: formattedcode.output_html:HtmlOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: html: --html + help: Write scan output as HTML to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:html-app class: formattedcode.output_html:HtmlAppOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: html_app: --html-app + help: (DEPRECATED: use the ScanCode Workbench app instead ) Write scan output as a mini HTML application to FILE. + doc: + Write scan output as a mini HTML application. + + -------------------------------------------- + Plugin: scancode_output:json class: formattedcode.output_json:JsonCompactOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: output_json: --json + help: Write scan output as compact JSON to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:json-pp class: formattedcode.output_json:JsonPrettyOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: output_json_pp: --json-pp + help: Write scan output as pretty-printed JSON to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:jsonlines class: formattedcode.output_jsonlines:JsonLinesOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: output_json_lines: --json-lines + help: Write scan output as JSON Lines to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:spdx-rdf class: formattedcode.output_spdx:SpdxRdfOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: spdx_rdf: --spdx-rdf + help: Write scan output as SPDX RDF to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:spdx-tv class: formattedcode.output_spdx:SpdxTvOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: spdx_tv: --spdx-tv + help: Write scan output as SPDX Tag/Value to FILE. + doc: None + + -------------------------------------------- + Plugin: scancode_output:template class: formattedcode.output_html:CustomTemplateOutput + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output formats, name: custom_output: --custom-output + help: Write scan output to FILE formatted with the custom Jinja template file. + help_group: output formats, name: custom_template: --custom-template + help: Use this Jinja template FILE as a custom template. + doc: None + + -------------------------------------------- + Plugin: scancode_output_filter:ignore-copyrights class: cluecode.plugin_ignore_copyrights:IgnoreCopyrights + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output filters, name: ignore_copyright_holder: --ignore-copyright-holder + help: Ignore a file (and all its findings) if a copyright holder contains a match to the regular expression. Note that this will ignore a file even if it has other scanned data such as a license or errors. + help_group: output filters, name: ignore_author: --ignore-author + help: Ignore a file (and all its findings) if an author contains a match to the regular expression. Note that this will ignore a file even if it has other findings such as a license or errors. + doc: + Filter findings that match given copyright holder or author patterns. + Has no effect unless the --copyright scan is requested. + + -------------------------------------------- + Plugin: scancode_output_filter:only-findings class: scancode.plugin_only_findings:OnlyFindings + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: output filters, name: only_findings: --only-findings + help: Only return files or directories with findings for the requested scans. Files and directories without findings are omitted (file information is not treated as findings). + doc: + Filter files or directories without scan findings for the requested scans. + + -------------------------------------------- + Plugin: scancode_post_scan:classify-package class: summarycode.classify:PackageTopAndKeyFilesTagger + codebase_attributes: + resource_attributes: + sort_order: 0 + required_plugins: + options: + doc: + Tag resources as key or top level based on Package-type specific settings. + + -------------------------------------------- + Plugin: scancode_post_scan:consolidate class: scancode.plugin_consolidate:Consolidator + codebase_attributes: consolidated_components, consolidated_packages + resource_attributes: consolidated_to + sort_order: 8 + required_plugins: + options: + help_group: post-scan, name: consolidate: --consolidate + help: Group resources by Packages or license and copyright holder and return those groupings as a list of consolidated packages and a list of consolidated components. This requires the scan to have/be run with the copyright, license, and package options active + doc: + A ScanCode post-scan plugin to return consolidated components and consolidated + packages for different types of codebase summarization. + + A consolidated component is a group of Resources that have the same origin. + Currently, consolidated components are created by grouping Resources that have + the same license expression and copyright holders and the files that contain + this license expression and copyright holders combination make up 75% or more of + the files in the directory where they are found. + + A consolidated package is a detected package in the scanned codebase that has + been enhanced with data about other licenses and holders found within it. + + If a Resource is part of a consolidated component or consolidated package, then + the identifier of the consolidated component or consolidated package it is part + of is in the Resource's ``consolidated_to`` field. + + -------------------------------------------- + Plugin: scancode_post_scan:filter-clues class: cluecode.plugin_filter_clues:RedundantCluesFilter + codebase_attributes: + resource_attributes: + sort_order: 1 + required_plugins: + options: + help_group: post-scan, name: filter_clues: --filter-clues + help: Filter redundant duplicated clues already contained in detected license and copyright texts and notices. + doc: + Filter redundant clues (copyrights, authors, emails, and urls) that are already + contained in another more important scan result. + + -------------------------------------------- + Plugin: scancode_post_scan:is-license-text class: licensedcode.plugin_license_text:IsLicenseText + codebase_attributes: + resource_attributes: is_license_text + sort_order: 80 + required_plugins: + options: + help_group: post-scan, name: is_license_text: --is-license-text + help: Set the "is_license_text" flag to true for files that contain mostly license texts and notices (e.g over 90% of the content). [EXPERIMENTAL] + doc: + Set the "is_license_text" flag to true for at the file level for text files + that contain mostly (as 90% of their size) license texts or notices. + Has no effect unless --license, --license-text and --info scan data + are available. + + -------------------------------------------- + Plugin: scancode_post_scan:license-clarity-score class: summarycode.score:LicenseClarityScore + codebase_attributes: license_clarity_score + resource_attributes: + sort_order: 110 + required_plugins: + options: + help_group: post-scan, name: license_clarity_score: --license-clarity-score + help: Compute a summary license clarity score at the codebase level. + doc: + Compute a License clarity score at the codebase level. + + -------------------------------------------- + Plugin: scancode_post_scan:license-policy class: licensedcode.plugin_license_policy:LicensePolicy + codebase_attributes: + resource_attributes: license_policy + sort_order: 9 + required_plugins: + options: + help_group: post-scan, name: license_policy: --license-policy + help: Load a License Policy file and apply it to the scan at the Resource level. + doc: + Add the "license_policy" attribute to a resouce if it contains a + detected license key that is found in the license_policy.yml file + + -------------------------------------------- + Plugin: scancode_post_scan:mark-source class: scancode.plugin_mark_source:MarkSource + codebase_attributes: + resource_attributes: source_count + sort_order: 8 + required_plugins: + options: + help_group: post-scan, name: mark_source: --mark-source + help: Set the "is_source" to true for directories that contain over 90% of source files as children and descendants. Count the number of source files in a directory as a new source_file_counts attribute + doc: + Set the "is_source" flag to true for directories that contain + over 90% of source files as direct children. + Has no effect unless the --info scan is requested. + + -------------------------------------------- + Plugin: scancode_post_scan:summary class: summarycode.summarizer:ScanSummary + codebase_attributes: summary + resource_attributes: + sort_order: 10 + required_plugins: + options: + help_group: post-scan, name: summary: --summary + help: Summarize license, copyright and other scans at the codebase level. + doc: + Summarize a scan at the codebase level. + + -------------------------------------------- + Plugin: scancode_post_scan:summary-by-facet class: summarycode.summarizer:ScanByFacetSummary + codebase_attributes: summary_by_facet + resource_attributes: + sort_order: 200 + required_plugins: + options: + help_group: post-scan, name: summary_by_facet: --summary-by-facet + help: Summarize license, copyright and other scans and group the results by facet. + doc: + Summarize a scan at the codebase level groupping by facets. + + -------------------------------------------- + Plugin: scancode_post_scan:summary-keeping-details class: summarycode.summarizer:ScanSummaryWithDetails + codebase_attributes: summary + resource_attributes: summary + sort_order: 100 + required_plugins: + options: + help_group: post-scan, name: summary_with_details: --summary-with-details + help: Summarize license, copyright and other scans at the codebase level, keeping intermediate details at the file and directory level. + doc: + Summarize a scan at the codebase level and keep file and directory details. + + -------------------------------------------- + Plugin: scancode_post_scan:summary-key-files class: summarycode.summarizer:ScanKeyFilesSummary + codebase_attributes: summary_of_key_files + resource_attributes: + sort_order: 150 + required_plugins: + options: + help_group: post-scan, name: summary_key_files: --summary-key-files + help: Summarize license, copyright and other scans for key, top-level files. Key files are top-level codebase files such as COPYING, README and package manifests as reported by the --classify option "is_legal", "is_readme", "is_manifest" and "is_top_level" flags. + doc: + Summarize a scan at the codebase level for only key files. + + -------------------------------------------- + Plugin: scancode_pre_scan:classify class: summarycode.classify:FileClassifier + codebase_attributes: + resource_attributes: is_legal, is_manifest, is_readme, is_top_level, is_key_file + sort_order: 50 + required_plugins: + options: + help_group: pre-scan, name: classify: --classify + help: Classify files with flags telling if the file is a legal, or readme or test file, etc. + doc: + Classify a file such as a COPYING file or a package manifest with a flag. + + -------------------------------------------- + Plugin: scancode_pre_scan:facet class: summarycode.facet:AddFacet + codebase_attributes: + resource_attributes: facets + sort_order: 20 + required_plugins: + options: + help_group: pre-scan, name: facet: --facet + help: Add the to files with a path matching . + doc: + Assign one or more "facet" to each file (and NOT to directories). Facets are + a way to qualify that some part of the scanned code may be core code vs. + test vs. data, etc. + + -------------------------------------------- + Plugin: scancode_pre_scan:ignore class: scancode.plugin_ignore:ProcessIgnore + codebase_attributes: + resource_attributes: + sort_order: 100 + required_plugins: + options: + help_group: pre-scan, name: ignore: --ignore + help: Ignore files matching . + help_group: pre-scan, name: include: --include + help: Include files matching . + doc: + Include or ignore files matching patterns. + + -------------------------------------------- + Plugin: scancode_scan:copyrights class: cluecode.plugin_copyright:CopyrightScanner + codebase_attributes: + resource_attributes: copyrights, holders, authors + sort_order: 4 + required_plugins: + options: + help_group: primary scans, name: copyright: -c, --copyright + help: Scan for copyrights. + doc: + Scan a Resource for copyrights. + + -------------------------------------------- + Plugin: scancode_scan:emails class: cluecode.plugin_email:EmailScanner + codebase_attributes: + resource_attributes: emails + sort_order: 8 + required_plugins: + options: + help_group: other scans, name: email: -e, --email + help: Scan for emails. + help_group: scan options, name: max_email: --max-email + help: Report only up to INT emails found in a file. Use 0 for no limit. + doc: + Scan a Resource for emails. + + -------------------------------------------- + Plugin: scancode_scan:generated class: summarycode.generated:GeneratedCodeDetector + codebase_attributes: + resource_attributes: is_generated + sort_order: 50 + required_plugins: + options: + help_group: other scans, name: generated: --generated + help: Classify automatically generated code files with a flag. + doc: + Tag a file as generated. + + -------------------------------------------- + Plugin: scancode_scan:info class: scancode.plugin_info:InfoScanner + codebase_attributes: + resource_attributes: date, sha1, md5, mime_type, file_type, programming_language, is_binary, is_text, is_archive, is_media, is_source, is_script + sort_order: 0 + required_plugins: + options: + help_group: other scans, name: info: -i, --info + help: Scan for file information (size, checksums, etc). + doc: + Scan a file Resource for miscellaneous information such as mime/filetype and + basic checksums. + + -------------------------------------------- + Plugin: scancode_scan:licenses class: licensedcode.plugin_license:LicenseScanner + codebase_attributes: + resource_attributes: licenses, license_expressions + sort_order: 2 + required_plugins: + options: + help_group: primary scans, name: license: -l, --license + help: Scan for licenses. + help_group: scan options, name: license_score: --license-score + help: Do not return license matches with a score lower than this score. A number between 0 and 100. + help_group: scan options, name: license_text: --license-text + help: Include the detected licenses matched text. + help_group: scan options, name: license_text_diagnostics: --license-text-diagnostics + help: In the matched license text, include diagnostic highlights surrounding with square brackets [] words that are not matched. + help_group: scan options, name: license_url_template: --license-url-template + help: Set the template URL used for the license reference URLs. Curly braces ({}) are replaced by the license key. + help_group: scan options, name: license_diag: --license-diag + help: (DEPRECATED: this is always included by default now). Include diagnostic information in license scan results. + help_group: miscellaneous, name: reindex_licenses: --reindex-licenses + help: Check the license index cache and reindex if needed and exit. + doc: + Scan a Resource for licenses. + + -------------------------------------------- + Plugin: scancode_scan:packages class: packagedcode.plugin_package:PackageScanner + codebase_attributes: + resource_attributes: packages + sort_order: 6 + required_plugins: scan:licenses + options: + help_group: primary scans, name: package: -p, --package + help: Scan for package manifests and packages. + help_group: documentation, name: list_packages: --list-packages + help: Show the list of supported package types and exit. + doc: + Scan a Resource for Package manifests and report these as "packages" at the + right file or directory level. + + -------------------------------------------- + Plugin: scancode_scan:urls class: cluecode.plugin_url:UrlScanner + codebase_attributes: + resource_attributes: urls + sort_order: 10 + required_plugins: + options: + help_group: other scans, name: url: -u, --url + help: Scan for urls. + help_group: scan options, name: max_url: --max-url + help: Report only up to INT urls found in a file. Use 0 for no limit. + doc: + Scan a Resource for URLs. + +``--list-packages`` Option +-------------------------- + +This shows all the types of packages that can be scanned using Scancode. +These are located in packagedcode i.e. Code used to parse various package formats. + +.. + [ToDo] + Check and Write docs + +``--print-options`` Option +-------------------------- + +This option prints the options selected for one specific scan command. + +If we run this command:: + + scancode -clpieu --json-pp sample.json samples --classify --summary --summary-with-details --print-options + +The output will be:: + + Options: + classify: True + copyright: True + email: True + info: True + license: True + list_packages: None + output_json_pp: + package: True + reindex_licenses: None + summary: True + summary_with_details: True + url: True diff --git a/docs/source/cli-reference/index.rst b/docs/source/cli-reference/index.rst new file mode 100644 index 00000000000..c38f3df5433 --- /dev/null +++ b/docs/source/cli-reference/index.rst @@ -0,0 +1,16 @@ +**Command Line Interface Reference** +==================================== + +.. toctree:: + :maxdepth: 2 + + synopsis + help-text-options + list-options + simple-examples + basic-options + core-options + output-format + output-filters-and-control + scan-options-pre + scan-options-post diff --git a/docs/source/cli-reference/list-options.rst b/docs/source/cli-reference/list-options.rst new file mode 100644 index 00000000000..f8e7f695400 --- /dev/null +++ b/docs/source/cli-reference/list-options.rst @@ -0,0 +1,49 @@ +.. _cli_list_options: + +All Available Options +===================== + +This section contains an exhaustive list of all Scancode options, arranged in various sections. +The sections are as follows: + +- Basic Scan Options +- Core Scan Options +- Output Formats +- Controlling Output and Filters +- Pre-Scan Options +- Post-Scan Options + +There's also another section for ``extractcode`` options. + +The order of the sections and all their options is the same as in the :ref:'cli_help_text', +available in the command line. + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +.. _cli_basic: + +.. include:: /rst_snippets/basic_options.rst + +---- + +.. include:: /rst_snippets/extract.rst + +---- + +.. include:: /rst_snippets/core_options.rst + +---- + +.. include:: /rst_snippets/output_format_options.rst + +---- + +.. include:: /rst_snippets/output_control_options.rst + +---- + +.. include:: /rst_snippets/pre_scan_options.rst + +---- + +.. include:: /rst_snippets/post_scan_options.rst diff --git a/docs/source/cli-reference/output-filters-and-control.rst b/docs/source/cli-reference/output-filters-and-control.rst new file mode 100644 index 00000000000..5681e34d74f --- /dev/null +++ b/docs/source/cli-reference/output-filters-and-control.rst @@ -0,0 +1,101 @@ +.. _cli_output_control: + +Controlling Scancode Output and Filters +======================================= + +.. include:: /rst_snippets/output_control_options.rst + +---- + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +---- + +``--strip-root`` Vs. ``--full-root`` +------------------------------------ + + For a default scan of the "samples" folder, this a comparison between the default, + ``strip-root`` and ``full-root`` options. + + An example Scan + + :: + + scancode -cplieu --json-pp output.json samples --full-root + + These two changes only the "path" attribute of the file information. For this comparison we + compare the "path" attributes of the file ``LICENSE`` inside ``JGroups`` directory. + + The default path:: + + "path": "samples/JGroups/LICENSE", + + For the ``--full-root`` option, the path relative to the Root of your local filesystem. + + :: + + "path": "/home/ayansm/Desktop/GSoD/scancode-toolkit-versions/scancode-toolkit-2.2.1/samples/JGroups/LICENSE" + + + For the ``--strip-root`` option, the root directory (here ``samples``) is removed from path : + + :: + + "path": "JGroups/LICENSE" + + .. include:: /rst_snippets/note_snippets/control_strip_full_root.rst + +---- + +``--ignore-author `` Option +------------------------------------ + + In a normal scan, all files inside the directory specified as an input argument is scanned and + subsequently included in the scan report. But if you want to run the scan on only some selective + files, with some specific **common author** then ``--ignore-author`` option can be used to do + the same. + + This scan ignores all files with authors matching the string "Apache Software Foundation":: + + scancode -cplieu --json-pp output.json samples --ignore-author "Apache Software Foundation" + + More information on :ref:`glob_pattern_matching`. + + .. include:: /rst_snippets/warning_snippets/control_ignore_author_copyright.rst + +---- + +``--ignore-copyright-holder `` Option +---------------------------------------------- + + In a normal scan, all files inside the directory specified as an input argument is scanned and + subsequently included in the scan report. But if you want to run the scan on only some selective + files, with some specific **common copyright holder** then ``--ignore-copyright-holder`` option + can be used to do the same. + + This scan ignores all files with Copyright Holders matching the string "Free Software Foundation":: + + scancode -cplieu --json-pp output.json samples --ignore-copyright-holder "Free Software Foundation" + + More information on :ref:`glob_pattern_matching`. + +---- + +``--only-findings`` Plugin +-------------------------- + + This option removes from the scan results, the files where nothing significant has been + detected, like files which doesn't contain any licenses, copyrights, emails or urls (if + requested in the scan options), and isn't a package. + + An example Scan:: + + scancode -cplieu --json-pp output.json samples --only-findings + + .. note:: + + This also changes in the result displayed, the number of files scanned. + + For example, scanning the ``sample`` files (distributed by default with scancode-toolkit) without + this option, displays in it's report information of 43 files. But after enabling this option, the + result shows information for only 31 files. diff --git a/docs/source/cli-reference/output-format.rst b/docs/source/cli-reference/output-format.rst new file mode 100644 index 00000000000..363c7008345 --- /dev/null +++ b/docs/source/cli-reference/output-format.rst @@ -0,0 +1,580 @@ +.. _cli_output_format: + +Scancode Output Formats +======================= + +Scan results generated by Scancode are available in different formats, to be specified by the +following options. + +.. include:: /rst_snippets/output_format_options.rst + +.. include:: /rst_snippets/note_snippets/output_samples.rst + +---- + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +---- + +.. _output_to_stdout: + +.. include:: /rst_snippets/stdout.rst + +---- + +``--json FILE`` +--------------- + + Among the ScanCode Output Formats, ``json`` is the most important one, and is recommended over + others. Scancode Workbench and other applications that use Scancode Result data as input accept + only the ``json`` format. + + .. include:: /rst_snippets/note_snippets/output_json_notdef.rst + + The following code performs a scan on the samples directory, and publishes the results in + ``json`` format:: + + scancode -clpieu --json output.json samples + + .. include:: /rst_snippets/note_snippets/output_json_ugly.rst + + .. figure:: data/json_ugly.png + + + The entire JSON file is structured in the following manner: + + At first some general information on the scan, what options were used, the number of files etc. + And then all the files follow. + + :: + + { + "headers": [ + { + "tool_name": "scancode-toolkit", + "tool_version": "3.1.1", + "options": { + "input": [ + "samples/" + ], + "--copyright": true, + "--email": true, + "--info": true, + "--json-pp": "output.json", + "--license": true, + "--package": true, + "--url": true + }, + "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "start_timestamp": "2019-10-19T191117.292858", + "end_timestamp": "2019-10-19T191219.743133", + "message": null, + "errors": [], + "extra_data": { + "files_count": 36 + } + } + ], + "files": [ + { + "path": "samples", + "type": "directory", + ... + ... + ... + "scan_errors": [] + }, + { + "path": "samples/README", + "type": "file", + "name": "README", + "base_name": "README", + "extension": "", + "size": 236, + "date": "2019-02-12", + "sha1": "2e07e32c52d607204fad196052d70e3d18fb8636", + "md5": "effc6856ef85a9250fb1a470792b3f38", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [], + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + ... + ... + ... + { + "path": "samples/zlib/iostream2/zstream_test.cpp", + "type": "file", + "name": "zstream_test.cpp", + "base_name": "zstream_test", + "extension": ".cpp", + "size": 711, + "date": "2019-02-12", + ... + ... + ... + "scan_errors": [] + } + ] + } + +---- + +``--json-pp FILE`` +------------------ + + ``json-pp`` stands for JSON Pretty-Print format. In the previous format, i.e. Simple ``json``, + the whole output is printed in one line, which isn't well suited for getting information if + you're looking at the file itself (or printing at stdout). So this option formats the output + results in json but in a properly spaced and indented manner, and is easy to look at. + + The following code performs a scan on the samples directory, and publishes the results in + ``json-pp`` format:: + + scancode -clpieu --json-pp output.json samples + + A sample JSON output for an individual file will look like:: + + { + "path": "samples/zlib/iostream2/zstream.h", + "type": "file", + "name": "zstream.h", + "base_name": "zstream", + "extension": ".h", + "size": 9283, + "date": "2019-02-12", + "sha1": "fca4540d490fff36bb90fd801cf9cd8fc695bb17", + "md5": "a980b61c1e8be68d5cdb1236ba6b43e7", + "mime_type": "text/x-c++", + "file_type": "C++ source, ASCII text", + "programming_language": "C++", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "mit-old-style", + "score": 100.0, + "name": "MIT Old Style", + "short_name": "MIT Old Style", + "category": "Permissive", + "is_exception": false, + "owner": "MIT", + "homepage_url": "http://fedoraproject.org/wiki/Licensing:MIT#Old_Style", + "text_url": "http://fedoraproject.org/wiki/Licensing:MIT#Old_Style", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:mit-old-style", + "spdx_license_key": null, + "spdx_url": "", + "start_line": 9, + "end_line": 15, + "matched_rule": { + "identifier": "mit-old-style_cmr-no_1.RULE", + "license_expression": "mit-old-style", + "licenses": [ + "mit-old-style" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 71, + "matched_length": 71, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "mit-old-style" + ], + "copyrights": [ + { + "value": "Copyright (c) 1997 Christian Michelsen Research AS Advanced Computing", + "start_line": 3, + "end_line": 5 + } + ], + "holders": [ + { + "value": "Christian Michelsen Research AS Advanced Computing", + "start_line": 3, + "end_line": 5 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.cmr.no/", + "start_line": 7, + "end_line": 7 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + + This is the recommended Output option for Scancode Toolkit. + +---- + +``--json-lines FILE`` +--------------------- + + ScanCode also has a ``--json-lines`` format option, where each report of a file scanned is + formatted in one line. + + The following code performs a scan on the samples directory, and publishes the results in + ``json-lines`` format:: + + scancode -clpieu --json-lines output.json samples + + Here is a sample line from a report generated by the ``jsonlines`` format:: + + {"files":[{"path":"samples/zlib/ada",licenses":[],"copyrights":[],"packages":[]}]} + + The header information is also formatted in one line (i.e. The First Line of the file). + + The whole Output file looks like:: + + {"headers":[{"tool_name":"scancode-toolkit","tool_version":"3.1.1","options":{"input":["samples/"],"--copyright":true,"--email":true,"--info":true,"--json-lines":"output.json","--license":true,"--package":true,"--url":true},"notice":"Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.","start_timestamp":"2019-10-19T210920.143831","end_timestamp":"2019-10-19T211052.048182","message":null,"errors":[],"extra_data":{"files_count":36}}]} + {"files":[{"path":"samples" ... "scan_errors":[]}]} + {"files":[{"path":"samples/README", ... "scan_errors":[]}]} + {"files":[{"path":"samples/screenshot.png", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch/zlib.tar.gz", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch/zlib.tar.gz-extract", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch/zlib.tar.gz-extract/zlib-1.2.8", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch/zlib.tar.gz-extract/zlib-1.2.8/adler32.c", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch/zlib.tar.gz-extract/zlib-1.2.8/zlib.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/arch/zlib.tar.gz-extract/zlib-1.2.8/zutil.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/EULA", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/LICENSE", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/licenses", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/licenses/apache-1.1.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/licenses/apache-2.0.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/licenses/bouncycastle.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/licenses/cpl-1.0.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/licenses/lgpl.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/FixedMembershipToken.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/GuardedBy.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/ImmutableReference.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/RATE_LIMITER.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/RouterStub.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/RouterStubManager.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/JGroups/src/S3_PING.java", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/adler32.c", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/deflate.c", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/deflate.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/zlib.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/zutil.c", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/zutil.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/ada", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/ada/zlib.ads", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/dotzlib", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/dotzlib/AssemblyInfo.cs", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/dotzlib/ChecksumImpl.cs", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/dotzlib/LICENSE_1_0.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/dotzlib/readme.txt", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/gcc_gvmat64" ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/gcc_gvmat64/gvmat64.S" ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/infback9", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/infback9/infback9.c", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/infback9/infback9.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/iostream2", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/iostream2/zstream.h", ... "scan_errors":[]}]} + {"files":[{"path":"samples/zlib/iostream2/zstream_test.cpp", ... "scan_errors":[]}]} + + + .. include:: /rst_snippets/note_snippets/output_jsonlines.rst + +---- + +.. _comparing_json: + +Comparing Different ``json`` Output Formats +------------------------------------------- + + Default ``--json`` Output: + + .. figure:: data/output_json.png + + ``--json-pp`` Output: + + .. figure:: data/output_jsonpp.png + + ``--json-lines`` Output: + + .. figure:: data/output_jsonlines.png + +---- + +``--spdx-rdf FILE`` +------------------- + + `SPDX `_ stands for "Software Package and Data Exchange" and is an open standard + for communicating software bill of material information (including components, licenses, + copyrights, and security references). + + The following code performs a scan on the samples directory, and publishes the results in + ``spdx-rdf`` format:: + + scancode -clpieu --spdx-rdf output.spdx samples + + Learn more about SPDX specifications `here `_ and in this GitHub + `repository `_. + + Here the file is structured as a dictionary of named properties and classes using W3C's + `RDF Technology `_. + + ... figure:: data/output_spdx_rdf1.png + +---- + +``--spdx-tv FILE`` +------------------ + + This format is another SPDX variant, with the output file being structured in the following + manner: + + The following code performs a scan on the samples directory, and publishes the results in + ``spdx-tv`` format:: + + scancode -clpieu --spdx-tv output.spdx samples + + A SPDX-TV file starts with:: + + # Document Information + + SPDXVersion: SPDX-2.1 + DataLicense: CC0-1.0 + DocumentComment: Generated with ScanCode and provided on an "AS IS" BASIS, WITHOUT WARRANTIES + OR CONDITIONS OF ANY KIND, either express or implied. No content created from + ScanCode should be considered or used as legal advice. Consult an Attorney + for any legal advice. + ScanCode is a free software code scanning tool from nexB Inc. and others. + Visit https://github.com/nexB/scancode-toolkit/ for support and download. + + + # Creation Info + + Creator: Tool: ScanCode 2.2.1 + Created: 2019-09-22T21:55:04Z + + After a section titled ``#Packages``, a list follows. + + .. figure:: data/output_spdx_tv_package.png + + Each File information is listed under a ``#File`` title, for each of the files. + + .. hlist:: + :columns: 3 + + - FileName + - FileChecksum + - LicenseConcluded + - LicenseInfoInFile + - FileCopyrightText + + An example goes as follows: + + .. figure:: data/output_spdx_tv_file.png + + After the files section, there's a section for licenses under a ``#Licences`` title, with the + following information for each license: + + .. hlist:: + :columns: 3 + + - LicenseID + - LicenseComment + - ExtractedText + + Here's an example: + + .. figure:: data/output_spdx_tv_licenses.png + +---- + +.. _output_html: + +``--html FILE`` +--------------- + + ScanCode supports formatting the Output result is a simple ``html`` format, to open with your + favorite browser. This helps quick visualization of the detected license/copyright and other + main information in the form of tables. + + The following code performs a scan on the samples directory, and publishes the results in + HTML format:: + + scancode -clpieu --html output.html samples + + The HTML page generated has these following Tables: + + .. hlist:: + :columns: 2 + + - Copyright and Licenses Information + - File Information + - Package Information + - Licenses (Links to Dejacode/License Homepage) + + .. figure:: data/output_html1.png + + .. figure:: data/output_html2.png + + .. figure:: data/output_html3.png + +---- + +``--html-app FILE`` +------------------- + + ScanCode also supports formatting the output in a HTML visualization tool, which is more + helpful than the standard HTML format. + + .. include:: /rst_snippets/warning_snippets/output_htmlapp_dep.rst + + The following code performs a scan on the samples directory, and publishes the results in + ``html-app`` format:: + + scancode -clpieu --csv output.html samples + + The Files scanned are shown in the left sidebar, and the section on the right contains separate + tabs for the following: + + .. hlist:: + :columns: 2 + + - License Summary + - Copyright Summary + - Clues + - File Details + - Packages + + .. include:: /rst_snippets/note_snippets/output_htmlapp_search.rst + + .. figure:: data/output_html_app1.png + + .. figure:: data/output_html_app2.png + + .. figure:: data/output_html_app3.png + +---- + +``--csv FILE`` +-------------- + + ScanCode can publish results in the useful ``.csv`` format. + + The following code performs a scan on the samples directory, and publishes the results in + ``csv`` format:: + + scancode -lpceiu --csv sample.csv samples + + The first line of the csv file contains the headings, and they are: + + .. hlist:: + :columns: 3 + + - Resource, + - type, + - name, + - base_name, + - extension, + - date, + - size, + - sha1, + - md5, + - files_count, + - mime_type, + - file_type, + - programming_language, + - is_binary, + - is_text, + - is_archive, + - is_media, + - is_source, + - is_script, + - scan_errors, + - license__key, + - license__score, + - license__short_name, + - license__category, + - license__owner, + - license__homepage_url, + - license__text_url, + - license__reference_url, + - license__spdx_license_key, + - license__spdx_url, + - matched_rule__identifier, + - matched_rule__license_choice, + - matched_rule__licenses, + - copyright, + - copyright_holder, + - author, + - email, + - start_line, + - end_line, + - url, + - package__type, + - package__name, + - package__version, + - package__primary_language, + - package__summary, + - package__description, + - package__size, + - package__release_date, + - package__homepage_url, + - package__notes, + - package__bug_tracking_url, + - package__vcs_repository, + - package__copyright_top_level + + Each subsequent line represents one element, i.e. can be any of the following: + + .. hlist:: + :columns: 5 + + - license + - copyright + - package + - email + - url + + So if there's multiple elements in a file, they are each given an entry with the details mentioned + earlier. + + .. figure:: data/output_csv.png + +---- + +.. include:: /rst_snippets/custom_output_format.rst diff --git a/docs/source/cli-reference/scan-options-post.rst b/docs/source/cli-reference/scan-options-post.rst new file mode 100644 index 00000000000..10955bbc198 --- /dev/null +++ b/docs/source/cli-reference/scan-options-post.rst @@ -0,0 +1,796 @@ +.. _cli_post_scan: + +Post-Scan Options +================= + +Post-Scan options activate their respective post-scan plugins which execute the task. + +.. include:: /rst_snippets/post_scan_options.rst + +---- + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +To see all plugins available via command line help, use ``--plugins``. + +.. include:: /rst_snippets/note_snippets/post_scan_plugins.rst + +---- + +``--mark-source`` Option +------------------------ + + .. admonition:: Dependency + + The option ``--mark-source`` is a sub-option of and **requires** the option ``--info``. + + The ``mark-source`` option marks the "is_source" attribute of a directory to be "True", if more + than 90% of the files under that directory is source files, i.e. Their "is_source" attribute is + "True". + + When the following command is executed to scan the ``samples`` directory with this option enabled:: + + scancode -clpieu --json-pp output.json samples --mark-source + + Then, the following directories are marked as "Source", i.e. Their "is_source" attribute is changed + from "false" to "True". + + - ``samples/JGroups/src`` + - ``samples/zlib/iostream2`` + - ``samples/zlib/gcc_gvmat64`` + - ``samples/zlib/ada`` + - ``samples/zlib/infback9`` + +---- + +``--consolidate`` Option +------------------------ + + .. admonition:: Dependency + + The option ``--consolidate`` is a sub-option of and **requires** the options ``--license`` + , ``--copyright`` and ``--package``. + + The JSON file containing scan results after using the ``--consolidate`` Plugin is structured as + follows: (note: "..." in the image contains more data) + + An example Scan:: + + scancode -clpieu --json-pp output.json samples --consolidate + + The JSON output file is structured as follows:: + + { + "headers": [ + {...} + ], + "consolidated_components": [ + {... + }, + { + "type": "license-holders", + "identifier": "dmitriy_anisimkov_1", + "consolidated_license_expression": "gpl-2.0-plus WITH ada-linking-exception", + "consolidated_holders": [ + "Dmitriy Anisimkov" + ], + "consolidated_copyright": "Copyright (c) Dmitriy Anisimkov", + "core_license_expression": "gpl-2.0-plus WITH ada-linking-exception", + "core_holders": [ + "Dmitriy Anisimkov" + ], + "other_license_expression": null, + "other_holders": [], + "files_count": 1 + }, + {... + } + ], + "consolidated_packages": [], + "files": [ + ] + } + + Each consolidated component has the following information:: + + "consolidated_components": [ + { + "type": "license-holders", + "identifier": "dmitriy_anisimkov_1", + "consolidated_license_expression": "gpl-2.0-plus WITH ada-linking-exception", + "consolidated_holders": [ + "Dmitriy Anisimkov" + ], + "consolidated_copyright": "Copyright (c) Dmitriy Anisimkov", + "core_license_expression": "gpl-2.0-plus WITH ada-linking-exception", + "core_holders": [ + "Dmitriy Anisimkov" + ], + "other_license_expression": null, + "other_holders": [], + "files_count": 1 + }, + + In addition to this, in every file/directory where the consolidated part (i.e. License information) + was present, a "consolidated_to" attribute is added pointing to the "identifier" of + "consolidated_components":: + + "consolidated_to": [ + "dmitriy_anisimkov_1" + ], + + Note that multiple files may have the same "consolidated_to" attribute. + +---- + +``--filter-clues`` Option +------------------------- + + The ``--filter-clues`` Plugin filters redundant duplicated clues already contained in detected + licenses, copyright texts and notices. + + .. + [ToDo] Resolve Error and then Add content + [ERROR] Check https://github.com/nexB/scancode-toolkit/issues/1758 + + .. WARNING:: + + Running the following scan generates an error:: + + ./scancode -clp --json-pp sample_filter_clues.json samples --filter-clues + +---- + +``--is-license-text`` Option +---------------------------- + + .. admonition:: Dependency + + The option ``--is-license-text`` is a sub-option of and requires the options + ``--info`` and ``--license-text``. + Also, the option ``--license-text`` is a sub-option of and requires the options + ``--license``. + + If the ``--is-license-text`` is used, then the “is_license_text” flag is set to true for files that + contain mostly license texts and notices. Here mostly means over 90% of the content of the file. + + An example Scan:: + + scancode -clpieu --json-pp output.json samples --license-text --is-license-text + + If the samples directory is scanned with this plugin, the files containing mostly license texts + will have the following attribute set to 'true':: + + "is_license_text": true, + + The files in samples that will have the "is_license_text" to be true are:: + + samples/JGroups/EULA + samples/JGroups/LICENSE + samples/JGroups/licenses/apache-1.1.txt + samples/JGroups/licenses/apache-2.0.txt + samples/JGroups/licenses/bouncycastle.txt + samples/JGroups/licenses/cpl-1.0.txt + samples/JGroups/licenses/lgpl.txt + samples/zlib/dotzlib/LICENSE_1_0.txt + + Note that the license objects for each detected license in the files already has "is_license_text" + attributes by default, but not the file objects. They only have this attribute if the plugin is used. + + .. include:: /rst_snippets/warning_snippets/post_is_license_text.rst + +---- + +``--license-clarity-score`` Option +---------------------------------- + + .. admonition:: Dependency + + The option ``--license-clarity-score`` is a sub-option of and requires the option + ``--classify``. + + The ``--license-clarity-score`` plugin when used in a scan, computes a summary license clarity + score at the codebase level. + + An example Scan:: + + scancode -clpieu --json-pp output.json samples --classify --license-clarity-score + + The "license_clarity_score" will have the following attributes: + + .. hlist:: + :columns: 3 + + - "score" + - "declared" + - "discovered" + - "consistency" + - "spdx" + - "license_texts" + + It whole JSON file is structured as follows, when it has "license_clarity_score":: + + { + "headers": [ + { ... + } + ], + "license_clarity_score": { + "score": 17, + "declared": false, + "discovered": 0.69, + "consistency": false, + "spdx": false, + "license_texts": false + }, + "files": [ + ... + ] + } + + .. + [ToDo] Research and Elaborate the attributes + +---- + +``--license-policy FILE`` Option +-------------------------------- + + The Policy file is a YAML (.yml) document with the following structure:: + + license_policies: + - license_key: mit + label: Approved License + color_code: '#00800' + icon: icon-ok-circle + - license_key: agpl-3.0 + label: Approved License + color_code: '#008000' + icon: icon-ok-circle + + + .. include:: /rst_snippets/note_snippets/post_lic_pol_key.rst + + Applying License Policies during a ScanCode scan, using the ``--license-policy`` Plugin:: + + scancode -clipeu --json-pp output.json samples --license-policy policy-file.yml + + .. include:: /rst_snippets/note_snippets/post_lic_pol_notsub.rst + + This adds to every file/directory an object "license_policy", having as further attributes under it + the fields as specified in the .YAML file. Here according to our example .YAML file, the attributes + will be: + + .. hlist:: + :columns: 4 + + - "license_key" + - "label" + - "color_code" + - "icon" + + Here the ``samples`` directory is scanned, and the Scan Results for a sample file is as follows:: + + { + "path": "samples/JGroups/licenses/apache-2.0.txt", + ... + ... + ... + "licenses": [ + ... + ... + ... + ], + "license_expressions": [ + "apache-2.0" + ], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "license_policy": { + "license_key": "apache-2.0", + "label": "Approved License", + "color_code": "#008000", + "icon": "icon-ok-circle" + }, + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + + More information on the :ref:`license_policy_plugin` and usage. + +---- + +``--summary`` Option +-------------------- + + .. admonition:: Sub-Option + + The option ``--summary-by-facet``, ``--summary-key-files`` and + ``--summary-with-details``are sub-options of ``--summary``. These Sub-Options are all + Post-Scan Options. + + An example Scan:: + + scancode -clpieu --json-pp output.json samples --summary + + The whole JSON file is structured as follows, when the ``--summary`` plugin is applied:: + + { + "headers": [ + { + ... + } + ], + "summary": { + "license_expressions": [ ... + ], + "copyrights": [ ... + ], + "holders": [ ... + ], + "authors": [ ... + ], + "programming_language": [ ... + ], + "packages": [] + }, + "files": [ ... + ] + } + + The Summary object has the following attributes. + + .. hlist:: + :columns: 3 + + - "license_expressions" + - "copyrights" + - "holders" + - "authors" + - "programming_language" + - "packages" + + Each attribute has multiple entries each containing "value" and "count", with their values having + the summary information inside them. + + A sample summary object generated:: + + "summary": { + "license_expressions": [ + { + "value": "zlib", + "count": 13 + }, + ] + ], + "copyrights": [ + { + "value": "Copyright (c) Mark Adler", + "count": 4 + }, + { + "value": "Copyright (c) Free Software Foundation, Inc.", + "count": 2 + }, + { + "value": "Copyright (c) The Apache Software Foundation", + "count": 1 + }, + { + "value": "Copyright Red Hat, Inc. and individual contributors", + "count": 1 + } + ], + "holders": [ + { + "value": null, + "count": 10 + }, + { + "value": "Mark Adler", + "count": 4 + }, + { + "value": "Red Hat, Inc. and individual contributors", + "count": 1 + }, + { + "value": "The Apache Software Foundation", + "count": 1 + }, + ], + "authors": [ + { + "value": "Bela Ban", + "count": 4 + }, + { + "value": "Brian Stansberry", + "count": 1 + }, + { + "value": "the Apache Software Foundation (http://www.apache.org/)", + "count": 1 + } + ], + "programming_language": [ + { + "value": "C++", + "count": 13 + }, + { + "value": "Java", + "count": 7 + }, + ], + "packages": [] + +---- + +``--summary-by-facet`` Option +----------------------------- + + .. admonition:: Dependency + + The option ``--summary-by-facet`` is a sub-option of and requires the options ``--facet`` + and ``--summary``. + + Running the scan with ``--summary --summary-by-facet`` Plugins creates individual summaries for + all the facets with the same license, copyright and other scan information, at a codebase level + (in addition to the codebase level general summary generated by ``--summary`` Plugin) + + An example scan using the ``--summary-by-facet`` Plugin:: + + scancode -clieu --json-pp output.json samples --summary --facet dev="*.java" --facet dev="*.c" --summary-by-facet + + .. include:: /rst_snippets/note_snippets/pre_facet_core.rst + + .. + [ToDo] Remove this Warning when Issue solved. + [ERROR] Issue at - https://github.com/nexB/scancode-toolkit/issues/1759 + + .. WARNING:: + + Running the same scan with ``./scancode -clpieu`` i.e. with ``-p`` generates an error. + Avoid this. + + The JSON file containing scan results is structured as follows:: + + { + "headers": [ ... + ], + "summary": { ... + }, + "summary_by_facet": [ + { + "facet": "core", + "summary": { ... + } + }, + { + "facet": "dev", + "summary": { ... + } + }, + { + "facet": "tests", + "summary": { ... + } + }, + { + "facet": "docs", + "summary": { ... + } + }, + { + "facet": "data", + "summary": { ... + } + }, + { + "facet": "examples", + "summary": { ... + } + } + ], + "files": [ + } + + A sample "summary_by_facet" object generated by the previous scan (shortened):: + + "summary_by_facet": [ + { + "facet": "core", + "summary": { + "license_expressions": [ + { + "value": "mit", + "count": 1 + }, + ], + "copyrights": [ + { + "value": "Copyright (c) Free Software Foundation, Inc.", + "count": 2 + }, + ], + "holders": [ + { + "value": "The Apache Software Foundation", + "count": 1 + }, + "authors": [ + { + "value": "Gilles Vollant", + "count": 1 + }, + ], + "programming_language": [ + { + "value": "C++", + "count": 8 + }, + ] + } + }, + { + "facet": "dev", + "summary": { + "license_expressions": [ + { + "value": "zlib", + "count": 5 + }, + "copyrights": [ + { + "value": "Copyright Red Hat Middleware LLC, and individual contributors", + "count": 1 + }, + ], + "holders": [ + { + "value": "Mark Adler", + "count": 3 + }, + ], + "authors": [ + "value": "Brian Stansberry", + "count": 1 + }, + ], + "programming_language": [ + { + "value": "Java", + "count": 7 + }, + { + "value": "C++", + "count": 5 + } + ] + } + }, + ], + + .. include:: /rst_snippets/note_snippets/post_summary_facet.rst + + For users who want to know :ref:`what_is_a_facet`. + +---- + +``--summary-key-files`` Option +------------------------------ + + .. admonition:: Dependency + + The option ``--summary-key-files`` is a sub-option of and requires the options + ``--classify`` and ``--summary``. + + An example Scan:: + + scancode -clpieu --json-pp output.json samples --classify --summary --summary-key-files + + Running the scan with ``--summary --summary-key-files`` Plugins creates summaries for key files + with the same license, copyright and other scan information, at a codebase level (in addition + to the codebase level general summary generated by ``--summary`` Plugin) + + The resulting JSON file containing the scan results is structured as follows:: + + { + "headers": [ ... + ], + "summary": { + "license_expressions": [ ... + ], + "copyrights": [ ... + ], + "holders": [ ... + ], + "authors": [ ... + ], + "programming_language": [ ... + ], + "packages": [] + }, + "summary_of_key_files": { + "license_expressions": [ + { + "value": null, + "count": 1 + } + ], + "copyrights": [ + { + "value": null, + "count": 1 + } + ], + "holders": [ + { + "value": null, + "count": 1 + } + ], + "authors": [ + { + "value": null, + "count": 1 + } + ], + "programming_language": [ + { + "value": null, + "count": 1 + } + ] + }, + "files": [ + + These following flags for each file/directory is also present (generated by ``--classify``) + + .. hlist:: + :columns: 3 + + - "is_legal" + - "is_manifest" + - "is_readme" + - "is_top_level" + - "is_key_file" + +---- + +``--summary-with-details`` Option +--------------------------------- + + The ``--summary`` plugin summarizes license, copyright and other scan information at the + codebase level. Now running the scan with the ``--summary-with-details`` plugin instead creates + summaries at individual file/directories with the same license, copyright and other scan + information, but at a file/directory level (in addition to the the codebase level summary). + + An example Scan:: + + scancode -clpieu --json-pp output.json samples --summary-with-details + + .. include:: /rst_snippets/note_snippets/post_summary_details.rst + + A sample file object in the scan results (a directory level summary of ``samples/arch``) is + structured as follows:: + + { + "path": "samples/arch", + "type": "directory", + "name": "arch", + "base_name": "arch", + "extension": "", + "size": 0, + "date": null, + "sha1": null, + "md5": null, + "mime_type": null, + "file_type": null, + "programming_language": null, + "is_binary": false, + "is_text": false, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [], + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "is_legal": false, + "is_manifest": false, + "is_readme": false, + "is_top_level": true, + "is_key_file": false, + "summary": { + "license_expressions": [ + { + "value": "zlib", + "count": 3 + }, + { + "value": null, + "count": 1 + } + ], + "copyrights": [ + { + "value": null, + "count": 1 + }, + { + "value": "Copyright (c) Jean-loup Gailly", + "count": 1 + }, + { + "value": "Copyright (c) Jean-loup Gailly and Mark Adler", + "count": 1 + }, + { + "value": "Copyright (c) Mark Adler", + "count": 1 + } + ], + "holders": [ + { + "value": null, + "count": 1 + }, + { + "value": "Jean-loup Gailly", + "count": 1 + }, + { + "value": "Jean-loup Gailly and Mark Adler", + "count": 1 + }, + { + "value": "Mark Adler", + "count": 1 + } + ], + "authors": [ + { + "value": null, + "count": 4 + } + ], + "programming_language": [ + { + "value": "C++", + "count": 3 + }, + { + "value": null, + "count": 1 + } + ] + }, + "files_count": 4, + "dirs_count": 2, + "size_count": 127720, + "scan_errors": [] + }, + + These following flags for each file/directory is also present (generated by ``--classify``) + + .. hlist:: + :columns: 3 + + - "is_legal" + - "is_manifest" + - "is_readme" + - "is_top_level" + - "is_key_file" diff --git a/docs/source/cli-reference/scan-options-pre.rst b/docs/source/cli-reference/scan-options-pre.rst new file mode 100644 index 00000000000..05c1b354374 --- /dev/null +++ b/docs/source/cli-reference/scan-options-pre.rst @@ -0,0 +1,210 @@ +.. _cli_pre_scan: + +Pre-Scan Options +================ + +.. include:: /rst_snippets/pre_scan_options.rst + +---- + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +---- + +``--ignore`` Option +------------------- + + In a scan, all files inside the directory specified as an input argument is scanned. But if + there are some files which you don't want to scan, the ``--ignore`` option can be used to do + the same. + + A sample usage:: + + scancode --ignore "*.java" samples samples.json + + Here, Scancode ignores files ending with `.java`, and continues with other files as usual. + + More information on :ref:`glob_pattern_matching`. + +---- + +``--include`` Option +-------------------- + + In a normal scan, all files inside the directory specified as an input argument is scanned. But + if you want to run the scan on only some selective files, then ``--include`` option can be used + to do the same. + + A sample usage:: + + scancode --include "*.java" samples samples.json + + Here, Scancode selectively scans files that has names ending with `.java`, and ignores all other files. This + is basically complementary in behavior to the ``--ignore`` option. + + More information on :ref:`glob_pattern_matching`. + +---- + +``--classify`` +-------------- + + .. admonition:: Sub-Option + + The options ``--license-clarity-score`` and ``--summary-key-files`` are sub-options of + ``--classify``. ``--license-clarity-score`` and ``--summary-key-files`` are Post-Scan + Options. + + The ``--classify`` option can be used like:: + + scancode -clpieu --json-pp sample_facet.json samples --classify + + This option makes ScanCode further classify scanned files/directories, to determine whether they + fall in these following categories + + - legal + - readme + - top-level + - manifest + + A manifest file in computing is a file containing metadata for a group of accompanying + files that are part of a set or coherent unit. + + - key-file + + A KEY file is a generic file extension used by various programs when registering legal copies + of the software. It may be saved in a plain text format, but generally contains some form of + encrypted key string that authenticates the purchase and registers the software. + + As in, to the JSON object of each file scanned, these extra attributes are added:: + + "is_legal": false, + "is_manifest": false, + "is_readme": true, + "is_top_level": true, + "is_key_file": true, + +---- + +``--facet`` Option +------------------ + + .. admonition:: Sub-Option + + The option ``--summary-by-facet`` is a sub-option of ``--facet``. ``--summary-by-facet`` is + a Post-Scan Option. + + Valid ```` values are: + + - core, + - dev, + - tests, + - docs, + - data, + - examples. + + You can use the ``--facet`` option in the following manner:: + + scancode -clpieu --json-pp sample_facet.json samples --facet dev="*.java" --facet dev="*.c" + + This adds to the header object, the following attribute:: + + "--facet": [ + "dev=*.java", + "dev=*.c" + ], + + Here in this example, ``.java`` and ``.c`` files are marked as it belongs to facet ``dev``. + + As a result, ``.java`` file has the following attribute added:: + + "facets": [ + "dev" + ], + + .. include:: /rst_snippets/note_snippets/pre_facet_core.rst + + For each facet, the ``--facet`` option precedes the ``=`` argument. For specifying + multiple facets, this whole part is repeated, including the ``--facet`` option. + + For users who want to know :ref:`what_is_a_facet`. + +---- + +.. _glob_pattern_matching: + +Glob Pattern Matching +--------------------- + + All the Pre-Scan options use pattern matching, so the basics of Glob Pattern Matching is + discussed briefly below. + + Glob pattern matching is useful for matching a group of files, by using patterns in their + names. Then using these patterns, files are grouped and treated differently as required. + + Here are some rules from the `Linux Manual `_ + on glob patterns. Refer the same for more detailed information. + + A string is a wildcard pattern if it contains one of the characters '?', '*' or '['. Globbing + is the operation that expands a wildcard pattern into the list of pathnames matching the + pattern. Matching is defined by: + + - A '?' (not between brackets) matches any single character. + + - A '*' (not between brackets) matches any string, including the empty string. + + - An expression "[...]" where the first character after the leading '[' is not an '!' matches a + single character, namely any of the characters enclosed by the brackets. + + - There is one special convention: two characters separated by '-' denote a range. + + - An expression "[!...]" matches a single character, namely any character that is not matched + by the expression obtained by removing the first '!' from it. + + - A '/' in a pathname cannot be matched by a '?' or '*' wildcard, or by a range like "[.-0]". + + Note that wildcard patterns are not regular expressions, although they are a bit similar. + + For more information on Glob pattern matching refer these resources: + + - `Linux Manual `_ + - `Wildcard Match Documentation `_. + + You can also import these Python Libraries to practice UNIX style pattern matching: + + - `fnmatch `_ for File Name matching + - `glob `_ for File Path matching + +---- + +.. _what_is_a_facet: + +What is a Facet? +---------------- + + A facet is defined as follows (by ClearlyDefined): + + A facet of a component is a subset of the files related to the component. It's really just a + grouping that helps us understand the shape of the project. Each facet is described by a set of + glob expressions, essentially wildcard patterns that are matched against file names. + + Each facet definition can have zero or more glob expressions. A file can be captured by more + than one facet. Any file found but not captured by a defined facet is automatically assigned to + the core facet. + + - ``core`` - The files that go into making the release of the component. Note that the core + facet is not explicitly defined. Rather, it is made up of whatever is not in any other facet. + So, by default, all files are in the core facet unless otherwise specified. + - ``data`` - The files included in any data distribution of the component. + - ``dev`` - Files primarily used at development time (e.g., build utilities) and not + distributed with the component + - ``docs`` - Documentation files. Docs may be included with the executable component or + separately or not at all. + - ``examples`` -- Like docs, examples may be included in the main component release or + separately. + - ``tests`` -- Test files may include code, data and other artifacts. + + Important Links: + + - `Facets `_ + - `ClearlyDefined `_ diff --git a/docs/source/cli-reference/simple-examples.rst b/docs/source/cli-reference/simple-examples.rst new file mode 100644 index 00000000000..306a4041a6d --- /dev/null +++ b/docs/source/cli-reference/simple-examples.rst @@ -0,0 +1,3 @@ +.. _how_to_run_a_scan: + +.. include:: /tutorials/how_to_run_a_scan.rst diff --git a/docs/source/cli-reference/synopsis.rst b/docs/source/cli-reference/synopsis.rst new file mode 100644 index 00000000000..7608473d742 --- /dev/null +++ b/docs/source/cli-reference/synopsis.rst @@ -0,0 +1,299 @@ +.. _cli_synopsis: + +Synopsis +======== + +ScanCode detects licenses, copyrights, package manifests and direct dependencies and more, both +in source code and binary files, by scanning the files. This page introduces you to the ScanCode +Toolkit Command Line Interface in the following sections: + +- Installation +- Quickstart +- Type of Options +- Output Formats +- Other Important Documentation + +.. _syn_install: + +Installation +------------ + +Scancode-Toolkit installation can be installed from ``pip``, the default Python Package Manager. +However, there are more ways to perform an installation, and refer the following sections for +detailed Instructions on the each of the Installation Methods. + +- :ref:`pip_install` +- :ref:`latest_release_download_install` +- :ref:`source_configure_install` + +.. _synopsis_quickstart: + +Quickstart +---------- + +The basic command to perform a scan, if Scancode is installed from ``pip``:: + + scancode [OPTIONS] + +The basic usage in case of a download and configure installation (on Linux/MacOS) is:: + + path/to/scancode [OPTIONS] + +.. include:: /rst_snippets/tip_snippets/synopsis_quickstart.rst + +Here Scancode scans the file or directory for license, origin and packages and saves +results to FILE(s) using one or more output format option. Error and progress are printed to +stdout. + +To scan the ``samples`` directory distributed with ScanCode-Toolkit, the command will be:: + + scancode -clpieu --json-pp path/to/output.json path/to/samples + +.. include:: /rst_snippets/note_snippets/synopsis_output_format.rst + +Alternatively, in case of download and configure installations, where ``path/to/scancode`` is used +(the path from root of file system) we can go into the scancode directory +(like ``scancode-toolkit-3.1.1``) and then use ``./scancode``. The same applies for input and +output options. To scan a folder ``samples`` inside ScanCode directory, and output to a file +``output.json`` in the same directory, the command will be:: + + ./scancode -clpieu --json-pp output.json samples + +While a scan using absolute paths from the file system root will look like:: + + home/ayansm/software/scancode-toolkit-3.1.1/scancode -clpieu --json-pp home/ayansm/scan_scan_results/output.json home/ayansm/codebases/samples/ + +Commands similar to ``scancode --clpi --json-pp output.json samples`` will be used as examples +throughout the documentation. Here we are inside the ``virtualenv`` where Scancode-Toolkit was +installed by ``pip``, and the default ``samples`` folder is being scanned, which is distributed +by default with Scancode-Toolkit. + + +.. _scancode_cli_options: + +Type of Options +--------------- + +ScanCode Toolkit Command Line options can be divided into these major sections: + +- :ref:`cli_basic` +- :ref:`Extractcode Options ` +- :ref:`cli_core` +- :ref:`cli_output_control` +- :ref:`cli_pre_scan` +- :ref:`cli_post_scan` + +Refer the individual pages which are linked to above, for detailed discussions on the Command +Line Options listed under each section. + +.. _synopsis_output: + +Output Formats +-------------- + +The output file format is set by using the various output options. The recommended output format +is JSON. If ``--json`` is used, the entire file being in one line, without whitespace characters. + +The following example scans will show you how to run a scan with each of the result formats. For +the scans, we will use the ``samples`` directory provided with the ScanCode Toolkit. + +.. include:: /rst_snippets/tip_snippets/stdout.rst + +JSON file output +^^^^^^^^^^^^^^^^ + +Scan the ``samples`` directory and save the scan to a JSON file (pretty-printed)::: + + scancode -clpieu --json-pp output.json samples + +A sample JSON output file structure will look like:: + + { + "headers": [ + { + "tool_name": "scancode-toolkit", + "tool_version": "3.1.1", + "options": { + "input": [ + "samples/" + ], + "--copyright": true, + "--email": true, + "--info": true, + "--json-pp": "output.json", + "--license": true, + "--package": true, + "--url": true + }, + "notice": "Generated with ScanCode and provided on an \"AS IS\" BASIS, WITHOUT WARRANTIES\nOR CONDITIONS OF ANY KIND, either express or implied. No content created from\nScanCode should be considered or used as legal advice. Consult an Attorney\nfor any legal advice.\nScanCode is a free software code scanning tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.", + "start_timestamp": "2019-10-19T191117.292858", + "end_timestamp": "2019-10-19T191219.743133", + "message": null, + "errors": [], + "extra_data": { + "files_count": 36 + } + } + ], + "files": [ + { + "path": "samples", + "type": "directory", + ... + ... + ... + "scan_errors": [] + }, + { + "path": "samples/README", + "type": "file", + "name": "README", + "base_name": "README", + "extension": "", + "size": 236, + "date": "2019-02-12", + "sha1": "2e07e32c52d607204fad196052d70e3d18fb8636", + "md5": "effc6856ef85a9250fb1a470792b3f38", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [], + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + ... + ... + ... + { + "path": "samples/zlib/iostream2/zstream_test.cpp", + "type": "file", + "name": "zstream_test.cpp", + "base_name": "zstream_test", + "extension": ".cpp", + "size": 711, + "date": "2019-02-12", + ... + ... + ... + "scan_errors": [] + } + ] + } + +A sample JSON output for an individual file will look like:: + + { + "path": "samples/zlib/iostream2/zstream.h", + "type": "file", + "name": "zstream.h", + "base_name": "zstream", + "extension": ".h", + "size": 9283, + "date": "2019-02-12", + "sha1": "fca4540d490fff36bb90fd801cf9cd8fc695bb17", + "md5": "a980b61c1e8be68d5cdb1236ba6b43e7", + "mime_type": "text/x-c++", + "file_type": "C++ source, ASCII text", + "programming_language": "C++", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "mit-old-style", + "score": 100.0, + "name": "MIT Old Style", + "short_name": "MIT Old Style", + "category": "Permissive", + "is_exception": false, + "owner": "MIT", + "homepage_url": "http://fedoraproject.org/wiki/Licensing:MIT#Old_Style", + "text_url": "http://fedoraproject.org/wiki/Licensing:MIT#Old_Style", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:mit-old-style", + "spdx_license_key": null, + "spdx_url": "", + "start_line": 9, + "end_line": 15, + "matched_rule": { + "identifier": "mit-old-style_cmr-no_1.RULE", + "license_expression": "mit-old-style", + "licenses": [ + "mit-old-style" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 71, + "matched_length": 71, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "mit-old-style" + ], + "copyrights": [ + { + "value": "Copyright (c) 1997 Christian Michelsen Research AS Advanced Computing", + "start_line": 3, + "end_line": 5 + } + ], + "holders": [ + { + "value": "Christian Michelsen Research AS Advanced Computing", + "start_line": 3, + "end_line": 5 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.cmr.no/", + "start_line": 7, + "end_line": 7 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + +Static HTML output +^^^^^^^^^^^^^^^^^^ + +Scan the ``samples`` directory for licenses and copyrights and save the scan results to an HTML +file. When the scan is done, open ``samples.html`` in your web browser. + +:: + + scancode -clpieu --html output.html samples + +.. image:: data/scancode-toolkit-static-html1.png +.. image:: data/scancode-toolkit-static-html2.png + +.. include:: /rst_snippets/other_imp_doc.rst diff --git a/docs/source/conf.py b/docs/source/conf.py index fd6e1cf15ba..4b918932b17 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -28,8 +28,14 @@ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ +'sphinx.ext.intersphinx' ] +# This points to aboutcode.readthedocs.io +# In case of "undefined label" ERRORS check docs on intersphinx to troubleshoot +# Link was created at commit - https://github.com/nexB/aboutcode/commit/faea9fcf3248f8f198844fe34d43833224ac4a83 +intersphinx_mapping = {'aboutcode': ('https://aboutcode.readthedocs.io/en/latest/', None)} + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/docs/source/contribute/contrib_dev.rst b/docs/source/contribute/contrib_dev.rst new file mode 100644 index 00000000000..415ae4bd43b --- /dev/null +++ b/docs/source/contribute/contrib_dev.rst @@ -0,0 +1,133 @@ +.. _contrib_code_dev: + +Contributing to Code Development +================================ + +See `CONTRIBUTING.rst `_ +for details. + +.. _contrib_code_conven: + +Code layout and conventions +--------------------------- + +Source code is in ``src/`` Tests are in ``tests/``. + +There is one Python package for each major feature under ``src/`` and a corresponding directory +with the same name under ``tests`` (but this is not a package by design). + +Each test script is named ``test_XXXX`` and while we love to use ``py.test`` as a test runner, +most tests have no dependencies on ``py.test``, only on the ``unittest`` module (with the exception +of some command line tests that depend on pytest monkeypatching capabilities. + +When source or tests need data files, we store these in a ``data`` subdirectory. + +We use PEP8 conventions with a relaxed line length that can be up to 90'ish characters long when +needed to keep the code clear and readable. + +We store pre-built bundled native binaries in ``bin/`` sub-directories of each ``src/`` packages. +These binaries are organized by OS and architecture. This ensures that ScanCode works out of the box +either using a checkout or a download, without needing a compiler and toolchain to be installed. +The corresponding source code for the pre-built binaries are stored in a separate repository at +https://github.com/nexB/scancode-thirdparty-src. + +We store bundled thirdparty components and libraries in the ``thirdparty`` directory. Python +libraries are stored as wheels, eventually pre-built if the corresponding wheel is not available +in the Pypi repository. Some of these components may be advanced builds with bug fixes or advanced +patches. + +We write tests, a lot of tests, thousands of tests. Several tests are data-driven and use data +files as test input and sometimes data files as test expectation (in this case using either +JSON or YAML files). The tests should pass on Linux 64 bits, Windows 32 and 64 bits and on +MacOSX 10.6.8 and up. We maintain two CI loops with Travis (Linux) at +https://travis-ci.org/nexB/scancode-toolkit and Appveyor (Windows) at +https://ci.appveyor.com/project/nexB/scancode-toolkit. + +When finding bugs or adding new features, we add tests. See existing test code for examples. + +More info: + +- Source code and license datasets are in the /src/ directory. +- Test code and test data are in the /tests/ directory. +- Datasets and test data are in /data/ sub-directories. +- Third-party components are vendored in the /thirdparty/ directory. ScanCode is self contained + and should not require network access for installation or configuration of third-party libraries. +- Additional pre-compiled vendored binaries are stored in bin/ sub-directories of the /src/ + directory with their sources in this repo: https://github.com/nexB/scancode-thirdparty-src/ +- Porting ScanCode to other OS (FreeBSD, etc.) is possible. Enter an issue for help. +- Bugs and pull requests are welcomed. +- See the wiki and CONTRIBUTING.rst for more info. + +.. _scancode_toolkit_developement_running_tests: + +Running tests +------------- + +ScanCode comes with over 13,000 unit tests to ensure detection accuracy and stability across Linux, +Windows and macOS OSes: we kinda love tests, do we? + +We use pytest to run the tests: call the ``py.test`` script to run the whole test suite. This is +installed by ``pytest``, which is bundled with a ScanCode checkout and installed when you +run ``./configure``). + +If you are running from a fresh git clone and you run ``./configure`` and then +``source bin/activate`` the ``py.test`` command will be available in your path. + +Alternatively, if you have already configured but are not in an activated "virtualenv" the +``py.test`` command is available under ``/bin/py.test`` + +(Note: paths here are for POSIX, but mostly the same applies to Windows) + +If you have a multiprocessor machine you might want to run the tests in parallel (and faster) +For instance: ``py.test -n4`` runs the tests on 4 CPUs. We typically run the tests in +verbose mode with ``py.test -vvs -n4``. + +You can also run a subset of the test suite as shown in the CI configs +https://github.com/nexB/scancode-toolkit/blob/develop/appveyor.yml#L6 e,g, +``py.test -n 2 -vvs tests/scancode`` runs only the test scripts present in the ``tests/scancode`` +directory. (You can pass a path to a specific test script file there too). + +See also https://docs.pytest.org for details or use the ``py.test -h`` command to show the many +other options available. + +One useful option is to run a select subset of the test functions matching a pattern with the +``-k`` option, for instance: ``py.test -vvs -k tcpdump`` would only run test functions that contain +the string "tcpdump" in their name or their class name or module name . + +Another useful option after a test run with some failures is to re-run only the failed tests with +the ``--lf`` option, for instance: ``py.test -vvs --lf`` would only run only test functions that +failed in the previous run. + +.. _contrib_dev_pip_and_configure: + +pip requirements and the configure script +----------------------------------------- + +ScanCode use the ``configure`` and ``configure.bat`` (and ``etc/configure.py`` behind the scenes) +scripts to install a `virtualenv `_ , install required +packaged dependencies as `pip `_ requirements and more configure tasks +such that ScanCode can be installed in a self-contained way with no network connectivity required. + +Earlier unreleased versions of ScanCode where using ``buildout`` to install and configure +eventually complex dependencies. We had some improvements that were merged in the upstream +``buildout`` to support bootstrapping and installing without a network connection and When we +migrated to use ``pip`` and ``wheels`` as new, improved and faster way to install and configure +dependencies we missed some of the features of ``buildout`` like the ``recipes``, being able to +invoke arbitrary Python or shell scripts after installing packages and have scripts or requirements +that are operating system-specific. + +ScanCode requirements and third-party Python libraries +------------------------------------------------------ + +In a somewhat unconventional way, all the required libraries are bundled aka. Copied in the repo +itself in the thirdparty/ directory. If ScanCode were only a library it would not make sense. But +it is first an application and having a well defined frozen set of dependent packages is important +for an app. The benefit of this approach (combined with the ``configure`` script) means that a mere +checkout of the repository contains everything needed to run ScanCode except for a +Python interpreter. + +Using ScanCode as a Python library +---------------------------------- + +ScanCode can be used alright as a Python library and is available as as a Python wheel in Pypi and +installed with ``pip install scancode-toolkit``. diff --git a/docs/source/contribute/contrib_doc.rst b/docs/source/contribute/contrib_doc.rst new file mode 100644 index 00000000000..3a10a7f8760 --- /dev/null +++ b/docs/source/contribute/contrib_doc.rst @@ -0,0 +1,307 @@ +.. _contrib_doc_dev: + +Contributing to the Documentation +================================= + +.. _contrib_doc_setup_local: + +Setup Local Build +----------------- + +To get started, create or identify a working directory on your local machine. + +Open that directory and execute the following command in a terminal session:: + + git clone https://github.com/nexB/scancode-toolkit.git + +That will create an ``/scancode-toolkit`` directory in your working directory. +Now you can install the dependencies in a virtualenv:: + + cd scancode-toolkit + virtualenv -p /usr/bin/python3.6 docs-venv + source docs-venv/bin/activate + +Now, the following prerequisites are installed + +- Sphinx +- sphinx_rtd_theme (the format theme used by ReadTheDocs) +- docs8 (style linter) + +:: + + pip install Sphinx sphinx_rtd_theme doc8 + +Now you can build the HTML documents locally:: + + cd docs + make html + +Assuming that your Sphinx installation was successful, Sphinx should build a local instance of the +documentation .html files:: + + open build/html/index.html + +.. note:: + + In case this command did not work, for example on Ubuntu 18.04 you may get a message like “Couldn’t + get a file descriptor referring to the console”, try: + + :: + + see build/html/index.html + +You now have a local build of the AboutCode documents. + +.. _contrib_doc_share_improvements: + +Share Document Improvements +--------------------------- + +Ensure that you have the latest files:: + + git pull + git status + +Before commiting changes run Continious Integration Scripts locally to run tests. Refer +:ref:`doc_ci` for instructions on the same. + +Follow standard git procedures to upload your new and modified files. The following commands are +examples:: + + git status + git add source/index.rst + git add source/how-to-scan.rst + git status + git commit -m "New how-to document that explains how to scan" + git status + git push + git status + +The Scancode-Toolkit webhook with ReadTheDocs should rebuild the documentation after your +Pull Request is Merged. + +Refer the `Pro Git Book `_ available online for Git tutorials +covering more complex topics on Branching, Merging, Rebasing etc. + +.. _doc_ci: + +Continuous Integration +---------------------- + +The documentations are checked on every new commit through Travis-CI, so that common errors are +avoided and documentation standards are enforced. Travis-CI presently checks for these 3 aspects +of the documentation : + +1. Successful Builds (By using ``sphinx-build``) +2. No Broken Links (By Using ``link-check``) +3. Linting Errors (By Using ``Doc8``) + +So run these scripts at your local system before creating a Pull Request:: + + cd docs + ./scripts/sphinx_build_link_check.sh + ./scripts/doc8_style_check.sh + +.. _doc_style_docs8: + +Style Checks Using ``Doc8`` +--------------------------- + +How To Run Style Tests +^^^^^^^^^^^^^^^^^^^^^^ + +In the project root, run the following command:: + + $ doc8 --max-line-length 100 docs/source/ --ignore D000 + +A sample output is:: + + Scanning... + Validating... + docs/source/misc/licence_policy_plugin.rst:37: D002 Trailing whitespace + docs/source/misc/faq.rst:45: D003 Tabulation used for indentation + docs/source/misc/faq.rst:9: D001 Line too long + docs/source/misc/support.rst:6: D005 No newline at end of file + ======== + Total files scanned = 34 + Total files ignored = 0 + Total accumulated errors = 326 + Detailed error counts: + - CheckCarriageReturn = 0 + - CheckIndentationNoTab = 75 + - CheckMaxLineLength = 190 + - CheckNewlineEndOfFile = 13 + - CheckTrailingWhitespace = 47 + - CheckValidity = 1 + +Now fix the errors and run again till there isn't any style error in the documentation. + +What is Checked? +^^^^^^^^^^^^^^^^ + +PyCQA is an Organization for code quality tools (and plugins) for the Python programming language. +Doc8 is a sub-project of the same Organization. Refer this `README `_ for more details. + +What is checked: + + - invalid rst format - D000 + - lines should not be longer than 100 characters - D001 + + - RST exception: line with no whitespace except in the beginning + - RST exception: lines with http or https URLs + - RST exception: literal blocks + - RST exception: rst target directives + + - no trailing whitespace - D002 + - no tabulation for indentation - D003 + - no carriage returns (use UNIX newlines) - D004 + - no newline at end of file - D005 + +.. _doc_interspinx: + +Interspinx +---------- + +ScanCode toolkit documentation uses `Intersphinx `_ +to link to other Sphinx Documentations, to maintain links to other Aboutcode Projects. + +To link sections in the same documentation, standart reST labels are used. Refer +`Cross-Referencing `_ for more information. + +For example:: + + .. _my-reference-label: + + Section to cross-reference + -------------------------- + + This is the text of the section. + + It refers to the section itself, see :ref:`my-reference-label`. + +Now, using Intersphinx, you can create these labels in one Sphinx Documentation and then referance +these labels from another Sphinx Documentation, hosted in different locations. + +You just have to add the following in the ``conf.py`` file for your Sphinx Documentation, where you +want to add the links:: + + extensions = [ + 'sphinx.ext.intersphinx' + ] + + intersphinx_mapping = {'aboutcode': ('https://aboutcode.readthedocs.io/en/latest/', None)} + +To show all Intersphinx links and their targets of an Intersphinx mapping file, run:: + + python -msphinx.ext.intersphinx https://aboutcode.readthedocs.io/en/latest/objects.inv + +.. WARNING:: + + ``python -msphinx.ext.intersphinx https://aboutcode.readthedocs.io/objects.inv`` will give + error. + +This enables you to create links to the ``aboutcode`` Documentation in your own Documentation, +where you modified the configuration file. Links can be added like this:: + + For more details refer :ref:`aboutcode:doc_style_guide`. + +You can also not use the ``aboutcode`` label assigned to all links from aboutcode.readthedocs.io, +if you don't have a label having the same name in your Sphinx Documentation. Example:: + + For more details refer :ref:`doc_style_guide`. + +If you have a label in your documentation which is also present in the documentation linked by +Intersphinx, and you link to that label, it will create a link to the local label. + +For more information, refer this tutorial named +`Using Intersphinx `_. + +.. _doc_style_conv: + +Style Conventions for the Documentaion +-------------------------------------- + +1. Headings + + (`Refer `_) + Normally, there are no heading levels assigned to certain characters as the structure is + determined from the succession of headings. However, this convention is used in Python’s Style + Guide for documenting which you may follow: + + # with overline, for parts + + * with overline, for chapters + + =, for sections + + -, for subsections + + ^, for sub-subsections + + ", for paragraphs + +2. Heading Underlines + + Do not use underlines that are longer/shorter than the title headline itself. As in: + + :: + + Correct : + + Extra Style Checks + ------------------ + + Incorrect : + + Extra Style Checks + ------------------------ + +.. note:: + + Underlines shorter than the Title text generates Errors on sphinx-build. + + +3. Internal Links + + Using ``:ref:`` is advised over standard reStructuredText links to sections (like + ```Section title`_``) because it works across files, when section headings are changed, will + raise warnings if incorrect, and works for all builders that support cross-references. + However, external links are created by using the standard ```Section title`_`` method. + +4. Eliminate Redundancy + + If a section/file has to be repeated somewhere else, do not write the exact same section/file + twice. Use ``.. include: ../README.rst`` instead. Here, ``../`` refers to the documentation + root, so file location can be used accordingly. This enables us to link documents from other + upstream folders. + +5. Using ``:ref:`` only when necessary + + Use ``:ref:`` to create internal links only when needed, i.e. it is referenced somewhere. + Do not create references for all the sections and then only reference some of them, because + this created unnecessary references. This also generates ERROR in ``restructuredtext-lint``. + +6. Spelling + + You should check for spelling errors before you push changes. `Aspell `_ + is a GNU project Command Line tool you can use for this purpose. Download and install Aspell, + then execute ``aspell check `` for all the files changed. Be careful about not + changing commands or other stuff as Aspell gives prompts for a lot of them. Also delete the + temporary ``.bak`` files generated. Refer the `manual `_ for more + information on how to use. + +7. Notes and Warning Snippets + + Every ``Note`` and ``Warning`` sections are to be kept in ``rst_snippets/note_snippets/`` and + ``rst_snippets/warning_snippets/`` and then included to eliminate redundancy, as these are + frequently used in multiple files. + +Converting from Markdown +------------------------ + +If you want to convert a ``.md`` file to a ``.rst`` file, this `tool `_ +does it pretty well. You'd still have to clean up and check for errors as this contains a lot of +bugs. But this is definitely better than converting everything by yourself. + +This will be helpful in converting GitHub wiki's (Markdown Files) to reStructuredtext files for +Sphinx/ReadTheDocs hosting. diff --git a/docs/source/contribute/cut_new_release.rst b/docs/source/contribute/cut_new_release.rst new file mode 100644 index 00000000000..6d66a3c3825 --- /dev/null +++ b/docs/source/contribute/cut_new_release.rst @@ -0,0 +1,45 @@ +How to cut a new release: +========================= + +- run bumpversion with major, minor or patch to bump the version in: + + - ``src/scancode/__init__.py`` + - ``setup.py`` + - Update the CHANGELOG.rst + +- commit changes and push changes to develop: + + - ``git commit -m "commit message"`` + - ``git push --set-upstream origin develop`` + +- merge develop branch in master and tag the release. + + - ``git checkout master`` + - ``git merge develop`` + - ``git tag -a v1.6.1 -m "Release v1.6.1"`` + - ``git push --set-upstream origin master`` + - ``git push --set-upstream origin v1.6.1`` + +- draft a new release in GitHub, using the previous release blurb as a base. Highlight new and + noteworthy changes from the CHANGELOG.rst. + +- run ``etc/release/release.sh`` locally. + +- upload the release archives created in the ``dist/`` directory to the GitHub release page. + +- save the release as a draft. Use the previous release notes to create notes in the same style. + Ensure that the link to third-party source code is present. + +- test the downloads. + +- publish the release on GitHub + +- then build and publish the released wheel on Pypi. For this you need your own Pypi credentials + (and get authorized to publish Pypi release: ask @pombredanne) and you need to have the ``twine`` + package installed and configured. + + - Build a ``.whl`` with ``python setup.py bdist_wheel`` + - Run twine with ``twine upload dist/`` + - Once uploaded check the published release at https://pypi.python.org/pypi/scancode-toolkit/ + - Then create a new fresh local virtualenv and test the wheel installation with: + ``pip install scancode-toolkit`` diff --git a/docs/source/contribute/data/clock.png b/docs/source/contribute/data/clock.png new file mode 100644 index 00000000000..6fbdf8f89e7 Binary files /dev/null and b/docs/source/contribute/data/clock.png differ diff --git a/docs/source/contribute/data/done.png b/docs/source/contribute/data/done.png new file mode 100644 index 00000000000..574e872db86 Binary files /dev/null and b/docs/source/contribute/data/done.png differ diff --git a/docs/source/contribute/data/planned.png b/docs/source/contribute/data/planned.png new file mode 100644 index 00000000000..e66db8e6c2b Binary files /dev/null and b/docs/source/contribute/data/planned.png differ diff --git a/docs/source/contribute/gsoc17_final_report.rst b/docs/source/contribute/gsoc17_final_report.rst new file mode 100644 index 00000000000..8dec03b8bd0 --- /dev/null +++ b/docs/source/contribute/gsoc17_final_report.rst @@ -0,0 +1,135 @@ +Google Summer of Code 2017 - Final report +========================================= + +**Project: Plugin architecture for ScanCode** +--------------------------------------------- + +Yash D. Saraf `yashdsaraf@gmail.com `_ + +---- + +This project’s purpose was to create a decoupled plugin architecture for +`ScanCode `_ such that it can handle plugins at different +stages of a scan and can be coupled at runtime. These stages were, + +1. `Format `_ : +--------------------------------------------------------------------- + +In this stage, the plugins are supposed to run **after** the scanning is done and ``post-scan`` +plugins are called. These plugins could be used for: + + +- **converting the scanned output to the given format (say csv, json, etc.)** + +**HOWTO** + +Here, a plugin needs to add an entry in the ``scancode_output_writers`` entry point in the following +format : ``' = :'``. + + +- ```` is the format name which will be used as the command line option name + (e.g ``csv`` or ``json`` ). +- ```` is a python module which implements the ``output`` hook specification. +- ```` is the function to which the scan output will be passed if this plugin is called. + +The ```` name will be automatically added to the ``--format`` command line option and +(if called) the scanned data will be passed to the plugin. + +2. `Post-scan `_ : +------------------------------------------------------------------------ + +In this stage, the plugins are supposed to run **after** the scanning is done. Some uses for these +plugins were: + + +- **summarization of scan outputs** + + e.g A post-scan plugin for marking ``is_source`` to true for directories with ~90% of source + files. + +- **simplification of scan outputs** + + e.g The ``--only-findings`` option to return files or directories with findings for the + requested scans. Files and directories without findings are omitted (not considering basic file + information as findings)). + +This option already existed, I just ported it to a post-scan plugin. + +**HOWTO** + +Here, a plugin needs to add an entry in the ``scancode_post_scan`` entry point in the following +format ``' = :'`` + +- ```` is the command line option name (e.g **only-findings**). +- ```` is a python module which implements the ``post_scan`` hook specification. +- ```` is the function to which the scanned files will be passed if this plugin is called + +The command line option for this plugin will be automatically created using the ```` 's +doctring as its help text and (if called) the scanned files will be passed to the plugin. + +3. `Pre-scan `_ : +----------------------------------------------------------------------- + +In this stage, the plugins are supposed to run **before** the scan starts. So the potential uses +for these types of plugins were to: + +- **ignore files based on a given pattern (glob)** +- **ignore files based on their info i.e size, type etc.** +- **extract archives before scanning** + +**HOWTO** + +Here, a plugin needs to add an entry in the ``scancode_pre_scan`` entry point in the following +format : ``' = :'`` + + +* ```` is the command line option name (e.g **ignore** ). +* ```` is a python module which implements the ``pre_scan`` hook specification. +* ```` is the class which is instantiated and its appropriate method is invoked if this + plugin is called. This needs to extend the ``plugincode.pre_scan.PreScanPlugin`` class. + +The command line option for this plugin will be automatically created using the ```` 's +doctring as its help text. Since there isn't a single spot where ``pre-scan`` plugins can be +plugged in, more methods to ``PreScanPlugin`` class can be added which can represent different +hooks, say to add or delete a scan there might be a method called ``process_scan``. + +If a plugin's option is passed by the user, then the ```` is instantiated with the user +input and its appropriate aforementioned methods are called. + +4. Scan (proper): +----------------- + +In this stage, the plugins are supposed to run **before** the scan starts and **after** the +``pre-scan`` plugins are called. These plugins would have been used for + +- **adding or deleting scans** +- **adding dependency scans (whose data could be used in other scans)** + +No development has been done for this stage, but it will be quite similar to ``pre-scan``. + +5. Other work: +-------------- + +`Group cli options in cli help `_ + +Here, the goal was to add command line options to pre-defined groups such that they are displayed +in their respective groups when ``scancode -h`` or ``scancode --help`` is called. This helped to +better visually represent the command line options and determine more easily what context they +belong to. + +`Add a Resource class to hold all scanned info `_ +* ``Ongoing`` * + +Here, the goal was to create a ``Resource`` class, such that it holds all the scanned data for a +resource (i.e a file or a directory). This class would go on to eventually encapsulate the caching +logic entirely. For now, it just holds the ``info`` and ``path`` of a resource. + +6. What's left? +--------------- + +- Pre-scan plugin for archive extractions +- Scan (proper) plugins +- More complex post-scan plugins +- Support plugins written in languages other than python + +**Additionally, all my commits can be found** `here `_. diff --git a/docs/source/contribute/gsoc19_final_report.rst b/docs/source/contribute/gsoc19_final_report.rst new file mode 100644 index 00000000000..c51473583e7 --- /dev/null +++ b/docs/source/contribute/gsoc19_final_report.rst @@ -0,0 +1,102 @@ +Google Summer of Code 2019 - Final report +========================================= + +Project: **scancode-toolkit** to Python 3 +----------------------------------------- + +**Owner:** `Abhishek Kumar `_ + +**Mentor:** `Philippe Ombredanne `_ + +Overview +-------- + +**Problem:** Since Python 2.7 will retire in few months and will not be maintained any longer. + +**Solution:** `Scancode `__ needs to be ported to +python 3 and all test suites must pass on both version of Python. The main difference that +makes Python 3 better than Python 2.x is that the support for unicode is greatly improved in +Python 3. This will also be useful for scancode as scancode has users in more than 100 languages +and it's easy to translate strings from unicode to other languages. + +**Objective**: To make scancode-toolkit installable on on Python 3.6 and higher, as presently it +installs with Python 2.7 only. + +Implementation +-------------- + +- It was started in development mode(editable mode) and then it was moved to work in virtual + environments. +- I have worked module by module according to the order of hierarchy of modules. For example :All + module is dependent on commoncode, so it must be ported first. In this way we have created the + Porting order: + + 1. commoncode + 2. plugincode + 3. typecode + 4. extractcode + 5. textcode + 6. scancode basics (some tests are integration tests and will have to wait to be ported) + 7. formattedcode, starting with JSON (some tests are integration tests and will have to wait + to be ported) + 8. cluecode + 9. licensedcode + 10. packagedcode (depends on licensecode) + 11. summarycode + 12. fixup the remaining bits and tests + +After porting each module, I have marked these modules as ported ``scanpy3`` with help of +**conffest** plugin (created by `@pombredanne `_). **Conffest** +plugin is heart of this project. Without this, it was very difficult to do. Dependencies was fixed +at the time of porting the module where it was used. + +Challenging part of Project +--------------------------- + +It is very difficult to deal with paths on different operating systems.The issue is around +macOS/Windows/Linux. The first two OS handle unicode paths comfortably on Python 2 and 3 but not +completely on macOS Mojave because its filesystem encoding is APFS. Linux paths are bytes and +os.listdir is broken on Python 2. As a result you can only sanely handle Linux paths as bytes +on Python 2. But on Python 3 path seems to be corrected as ``unicode`` on Linux. + +For more details visit here : + +- https://vstinner.github.io/painful-history-python-filesystem-encoding.html +- `jaraco/path.py#130 `__ + +We came with various Solution: + +- To use pathlib which generally handle paths correctly across platforms. And for backports we use + pathlib 2. But this solution also fails because pathlib 2 does not work as expected wrt unicode + vs bytes. And os.listdir also doesn't work properly. + +- To use `path.py `__ which handles the paths across all the + platforms even on macOS Mojave . + +- Use ``bytes`` on linux and python 3 and ``unicode`` everywhere. + +We choose the third solution because it is most fundamental and simple and easy to use. + +Project was tracked in this ticket `nexB/scancode-toolkit#295 `__ + +**Project link :** `Port Scancode to Python 3 `__ + +.. + [Org Link] https://summerofcode.withgoogle.com/organizations/6118953540124672/ + [Project Link] https://summerofcode.withgoogle.com/projects/#5969926387400704 + +**My contribution :** `List of Commits `__ + +**Note :** Please give your feedback `here `_ + +Outcome +------- + +Now we have liftoff on Python 3 . We are able to run basic scans without errors on develop branch. +You check it by running ``scancode -clipeu samples/ --json-pp - -n4`` . + +At last I would like to thanks my Mentor **@pombredanne** aka +`Philippe Ombredanne `__ . He has helped lot in completing this +project. He is very supportive and responsive. I have learned a lot from him. By his encouragement +and motivation, I am very improving day by day, building and developing my skills. I have completed +all the tasks that were in the scope of this GSoC project. diff --git a/docs/source/contribute/index.rst b/docs/source/contribute/index.rst new file mode 100644 index 00000000000..be58f651585 --- /dev/null +++ b/docs/source/contribute/index.rst @@ -0,0 +1,13 @@ +**Contribute** +============== + +.. toctree:: + :maxdepth: 2 + + contrib_dev + cut_new_release + contrib_doc + roadmap + gsoc17_final_report + gsoc19_final_report + long_running_issues diff --git a/docs/source/contribute/long_running_issues.rst b/docs/source/contribute/long_running_issues.rst new file mode 100644 index 00000000000..d41db92b2b6 --- /dev/null +++ b/docs/source/contribute/long_running_issues.rst @@ -0,0 +1,183 @@ +Long Running Issues - Help Needed +================================= + +Long Running Issues - Scancode Toolkit +-------------------------------------- + +- `Good First Issues List `_ +- `First Timers Only Issues List `_ +- `Add improved documentation for V3.0 `_ +- `Documentation Roadmap `_ +- `Documentation Inconsistencies Tracker `_ + +.. + [Suggestions for LRIs][ToDo] + - People Interested in GSoC (And PRs Opened by Them) + +Roadmaps +-------- + +This section provides a overview of ScanCode developement roadmap, in the sense what maintainers +are considering, what the long-term goals are. + +- :ref:`roadmap` +- `Milestones `_ +- `v3.1 `_ +- `v3.2 `_ +- `Documentation Roadmap `_ + +.. _good_first_issue: + +Good First Issue +---------------- + +A `good first issue `_ +means it's recommended for people who haven't contributed to our codebase before. + +A ``Solving Good First Issue`` is basically an issue based guide for new contributors to +solve a ``Good First Issue``. + +Manitainers of ScanCode Toolkit label small bugs as good first issues for new contributors. + +.. _good_1st_issue_links: + +Important Links +^^^^^^^^^^^^^^^ + +- Issues labeled `good first issue `_ +- The status `list of good first issue `_ +- opening a `Solving Good First Issue `_ + +.. _good_1st_issue_understand_b4_solving: + +What you should understand before Solving a Good First Issue +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ScanCode Toolkit tracks different kinds of `issues using GitHub `_. +- Some of these issues are labeled ``Good First Issue`` by the Maintainers, as in they + recommend them. +- A list of ``Good First Issue`` is also maintained `here `_. +- The list of ``Good First Issue`` contains a list of Issues, people assigned to them + (or waiting to be assigned) and their status (active/completed). +- Issues here are marked Solved using a `Task List `_. +- Contributors come at this issue (and not at individual issues) and ask the maintainers to + be assigned. +- After being assigned, contributors open another Issue labeled ``Solving Good First Issue`` + so maintainers can Track their Progress on that Issue. +- The task list in the new issue opened (labeled ``Solving Good First Issue``) has to be updated by + the Contributor. + +.. _good_1st_issue_workflow: + +Step by Step Workflow : Contributor's Tasks +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Look at the Issues in `Good First Issues List `_ + These are basically all the `issues labeled Good First Issue `_ + with information on people assigned to the issues, and their status. + +#. Select a ``Good First Issue`` which isn't assigned and comment in the `Good First Issues List `_ + asking the maintainers to assign you. + +#. After you are assigned to that Issue by a maintainer, make sure you are assigned to the one you + requested. It'll look like ``[ ] #1724 @AyanSinhaMahapatra`` where ``#1724`` is the Issue number + and ``AyanSinhaMahapatra`` is your GitHub user ID. + +#. Open an Issue labeled `Solving Good First Issue here `_ . + +#. In this issue you opened, reference the following: + (include ``#[number]`` in comments, like ``#1724``) + + - The Original issue labeled ``Good First Issue`` that you are solving. + - The Pull Request you open later. + - The `Good First Issues List `_ + +#. Follow the Instruction on that Issue (It's a Template you'll just have to mark the Task List + as you complete tasks) + + - **Claim this issue** + - **Reproduce** + - **Create a Unit test** + - **Come up with a Solution** + - **Code your Solution** + - **Run the tests locally** + - **Commit and Push** + - **Start a Pull Request** + - **Make Sure all the Tests Pass** + - **Done** Ask in comments for a review :) + +#. Remind maintainers to close both Issues, after your Pull Request is Merged. + + - The Original issue labeled ``Good First Issue`` + - The issue opened by you labeled ``Solving Good First Issue`` + +.. _first_timers_only: + +First Timers Only +----------------- + +A `first timers only `_. +issue means we've worked to make it more legible to folks who either **haven't contributed to our +codebase before, or even folks who haven't contributed to open source before**. + +Small documenation inconsistencies are first timers only issues for new contributors. + +Important Links +^^^^^^^^^^^^^^^ + +- Issues labeled `first timers only `_ +- The status list of `all first timers only `_ Issues +- All `Documentation Inconsistencies Issue `_. +- opening a `First Timers Only Issue `_ + +What you should understand before Solving a First Timers Only Issue +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ScanCode Toolkit tracks different kinds of `issues using GitHub `_. +- Some of these issues are documentation inconsistencies `listed here `_. +- A list of ``First Timers Only`` Issues is also `maintained here `_. +- The list of ``First Timers Only`` contains a list of Issues, people assigned to them + (or waiting to be assigned) and their status (active/completed). +- Issues here are marked Solved using a `Task List `_. +- Contributors come at this issue and ask the maintainers to be assigned. +- After being assigned, contributors open another Issue labeled ``First Timers Only`` + so maintainers can Track their Progress. +- The task list has to be updated by the Contributor. + +Step by Step Workflow : Contributor's Tasks +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Look at the Issues in ``First Timers Only`` `List `_ + These are basically all the `issues `_ + labeled ``First Timers Only`` issues, with information on people assigned to the issues, + and their status. + +#. Select a ``First Timers Only`` issue which isn't assigned to anyone yet, and comment on the + `List `_ asking the maintainers to assign + you. + +#. After you are assigned to that Issue by a maintainer, make sure you are assigned to the one you + requested. It'll look like ``[ ] #1724 @AyanSinhaMahapatra`` where ``#1724`` is the Issue number + and ``AyanSinhaMahapatra`` is your GitHub user ID. + +#. Open an Issue labeled `First Timers Only here `_ . + +#. In this issue you opened, reference the following: + (include ``#[number]`` in comments, like ``#1724``) + + - The Original issue labeled ``Good First Issue`` that you are solving. + - The Pull Request you open later. + - The `Good First Issues List `_ + +#. Follow the Instruction on that Issue (It's a Template you'll just have to mark the Task List + as you complete tasks) + + - **Issue Claimed** + - **Review Guidelines** + - **Refer Documentation** + - **Build Docs Locally** + - **Update** + - **Commit and Push** + - **Start a Pull Request** + - **Make Sure all the Tests Pass** + - **Done** Ask in comments for a review :) diff --git a/docs/source/contribute/roadmap.rst b/docs/source/contribute/roadmap.rst new file mode 100644 index 00000000000..167277db924 --- /dev/null +++ b/docs/source/contribute/roadmap.rst @@ -0,0 +1,202 @@ +.. _roadmap: + +Roadmap +======= + +This is a high level list of what we are working on and what is completed. + +Legend +------ + +|white_check_mark| completed |clock1030| In progress |white_large_square| Planned, not started + +Work in Progress +---------------- + +(see Completed features below) + +Packages manifests and dependencies parsers +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- |clock1030| Docker images base (as part of: https://github.com/pombredanne/conan ) #651 +- |clock1030| RubyGems base and dependencies #650 (code in https://github.com/nexB/scancode-toolkit-contrib/ ) +- |clock1030| Perl, CPAN (basic in https://github.com/nexB/scancode-toolkit-contrib/) +- |clock1030| Go : parsing for Godep in https://github.com/nexB/scancode-toolkit-contrib/ +- |clock1030| Windows PE #652 +- |white_large_square| RPMs dependencies #649 +- |white_large_square| Windows Nuget dependencies #648 +- |white_check_mark| Bower packages #654 +- |clock1030| Python dependencies #653 +- |white_check_mark| CRAN +- |white_check_mark| Plain packages +- |white_large_square| other Java-related meta files (SBT, Ivy, Gradle, etc.) +- |white_large_square| Debian debs +- |white_large_square| other JavaScript (jspm, etc.) +- |white_large_square| other Linux distro packages + +License Detection +^^^^^^^^^^^^^^^^^ + +- |white_check_mark| support and detect license expressions (code in https://github.com/nexB/license-expression) +- |clock1030| support and detect composite licenses +- |white_large_square| support custom licenses +- |white_large_square| move licenses data set to external separate repository +- |white_check_mark| Improved unknown license detection +- |white_check_mark| sync with external sources (DejaCode, SPDX, etc.) + +Copyrights +^^^^^^^^^^ + +- |white_check_mark| speed up copyright detection +- |white_check_mark| improved detected lines range +- |white_check_mark| streamline grammar of copyright parser +- |white_check_mark| normalize holders and authors for summarizing +- |white_check_mark| normalize and streamline results data format + +Core features +^^^^^^^^^^^^^ + +- |white_check_mark| pre scan filtering (ignore binaries, etc) +- |white_check_mark| pre/post/ouput plugins! (worked as part of the GSoC by @yadsharaf ) +- |white_check_mark| scan plugins (e.g. plugins that run a scan to collect data) +- |white_check_mark| support Python 3 #295 +- |clock1030| transparent archive extraction (as opposed to on-demand with extractcode) +- |clock1030| scancode.yml configuration file for exclusions, defaults, scan failure conditions, + etc. +- |white_large_square| support scan pipelines and rules to organize more complex scans +- |white_check_mark| scan baselining, delta scan and failure conditions (such as license change, + etc) ( spawned as its the `DeltaCode `_ project) +- |white_large_square| dedupe and similarities to avoid re-scanning. For now only identical files + are scanned only once. +- |clock1030| Improved logging, tracing and error diagnostics +- |white_check_mark| native support for ABC Data (See :ref:`aboutcode_data` ) + +Classification, summarization and deduction +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- |clock1030| File classification #426 +- |white_check_mark| summarize and aggregate data #377 at the top level + +Source code support (some will be spawned as their own tool) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- |clock1030| symbols : parsing complete in https://github.com/nexB/scancode-toolkit-contrib/ +- |clock1030| metrics : some elements in https://github.com/nexB/scancode-toolkit-contrib/ + +Compiled code support (will be spawned as their own tool) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- |clock1030| ELFs : parsing complete in https://github.com/nexB/scancode-toolkit-contrib/ +- |clock1030| Java bytecode : parsing complete in https://github.com/nexB/scancode-toolkit-contrib/ +- |clock1030| Windows PE : parsing complete in https://github.com/nexB/scancode-toolkit-contrib/ +- |clock1030| Mach-O : parsing complete in in https://github.com/nexB/scancode-toolkit-contrib/ +- |white_large_square| Dalvik/dex + +Data exchange +^^^^^^^^^^^^^ + +- |white_check_mark| SPDX data conversion #338 + +Packaging +^^^^^^^^^ + +- |white_large_square| simpler installation, automated installer +- |white_check_mark| distro-friendly packaging +- |clock1030| unbundle and package as multiple libaries (commoncode, extractcode, etc) + +Documentation +^^^^^^^^^^^^^ + +- |white_large_square| integration in a build/CI loop +- |white_large_square| end to end guide to analyze a codebase +- |white_large_square| hacking guides +- |white_large_square| API doc when using ScanCode as a library + +CI integration +^^^^^^^^^^^^^^ + +- |white_large_square| Plugins for CI (Jenkins, etc) +- |white_large_square| Integration for CI (Travis, Appveyor, Drone, etc) + + +Other work in progress +---------------------- + +- |clock1030| ScanCode server: Spawned as its own project: https://github.com/nexB/scancode-server. + Will include Integration / webhooks for Github, Bitbucket. +- |clock1030| VulnerableCode: NVD and CVE lookups: Spawned as its own project: + https://github.com/nexB/vulnerablecode +- |white_check_mark| ScanCode Workbench: desktop app for scan review: Spawned as its own project: + https://github.com/nexB/scancode-workbench +- |white_large_square| DependentCode: dynamic dependencies resolutions: Spawned as its own project: + https://github.com/nexB/dependentcode + +Package mining and matching +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +(Note that this will be spawned in its project) +Some code is in https://github.com/nexB/scancode-toolkit-contrib/ + +- |clock1030| exact matching +- |clock1030| attribute-based matching +- |clock1030| fuzzy matching +- |white_large_square| peer-reviewed meta packages repo +- |white_large_square| basic mining of package repositories + +Other +^^^^^ + +- |white_large_square| Crypto code detection + + +Completed features +------------------ + +Core scans +^^^^^^^^^^ + +- |white_check_mark| exact license detection +- |white_check_mark| approximate license detection +- |white_check_mark| copyright detection +- |white_check_mark| file information (size, type, etc.) +- |white_check_mark| URLs, emails, authors + +Outputs and UI +^^^^^^^^^^^^^^ +- |white_check_mark| JSON compact and pretty +- |white_check_mark| plain HTML tables, also usable in a spreadsheet +- |white_check_mark| fancy HTML 'app' with a file tree navigation, and scan results filtering, + search and sorting +- |white_check_mark| improved scans GUI now its own project: https://github.com/nexB/aboutcode-manager +- |white_check_mark| simple scan summary +- |white_check_mark| SPDX output + +Package and dependencies +^^^^^^^^^^^^^^^^^^^^^^^^ +- |white_check_mark| common model for packages data +- |white_check_mark| basic support for common packages format +- |white_check_mark| RPM packages base +- |white_check_mark| NuGet packages base +- |white_check_mark| Python packages base +- |white_check_mark| PHP Composer packages support with dependencies +- |white_check_mark| Java Maven POM packages support with dependencies +- |white_check_mark| npm packages support with dependencies + +Speed! +^^^^^^ +- |white_check_mark| accelerate license detection indexing and scanning; include caching +- |white_check_mark| scan using multiple processes to speed up overall scan +- |white_check_mark| cache per-file scan to disk and stream final results + +Other +^^^^^ +- |white_check_mark| archive extraction with extractcode +- |white_check_mark| conversion of scan results to CSV +- |white_check_mark| improved error handling, verbose and diagnostic output + +.. |white_check_mark| image:: data/done.png + :scale: 10 % +.. |white_large_square| image:: data/planned.png + :scale: 10 % +.. |clock1030| image:: data/clock.png + :scale: 10 % diff --git a/docs/source/doc_maintenance.rst b/docs/source/doc_maintenance.rst deleted file mode 100644 index 2d5cc635734..00000000000 --- a/docs/source/doc_maintenance.rst +++ /dev/null @@ -1,89 +0,0 @@ -Document Maintenance -==================== - -Document Software Setup ------------------------ - -ScanCode Toolkit documentation is built using Sphinx. -See http://www.sphinx-doc.org/en/master/index.html - -ScanCode Toolkit documentation is distributed using "Read the Docs". -See https://readthedocs.org/ - -Individual document files are in reStructuredText format. -See http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html - -You create, build, and preview ScanCode Toolkit documentation on your local machine. - -You commit your updates to the ScanCode Toolkit repository on GitHub, which triggers an automatic rebuild of https://scancode-toolkit.readthedocs.io/en/latest/index.html - - -Clone ScanCode Toolkit ----------------------- - -To get started, create or identify a working directory on your local machine. - -Open that directory and execute the following command in a terminal session:: - - git clone https://github.com/nexB/scancode-toolkit.git - -That will create an /scancode-toolkit directory in your working directory. -Now you can install the dependencies in a virtualenv:: - - cd scancode-toolkit - python3.6 -m venv . - cd docs - source bin/activate - -Now you can install Sphinx and the format theme used by readthedocs:: - - pip install Sphinx sphinx_rtd_theme - -Now you can build the HTML documents locally:: - - cd docs - make html - -Assuming that your Sphinx installation was successful, Sphinx should build a local instance of the -documentation .html files:: - - open build/html/index.html - -You now have a local build of the ScanCode Toolkit documents. - -Improve ScanCode Toolkit Documents ----------------------------------- - -Before you begin creating and modifying ScanCode Toolkit documents, be sure that you understand the basics of reStructuredText as explained at http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html - -Ensure that you have the latest ScanCode Toolkit files:: - - git pull - git status - -Use your favorite text editor to create and modify .rst files to make your documentation -improvements. - -Review your work:: - - cd docs - make html - open build/html/index.html - -Share ScanCode Toolkit Document Improvements --------------------------------------------- - -Follow standard git procedures to upload your new and modified files. The following commands are -examples:: - - git status - git add source/index.rst - git add source/how-to-scan.rst - git status - git commit -m "New how-to document that explains how to scan" - git status - git push - git status - -The ScanCode Toolkit webhook with ReadTheDocs should rebuild the documentation. You can review your -results online. diff --git a/docs/source/explanations/index.rst b/docs/source/explanations/index.rst new file mode 100644 index 00000000000..82b9b35dfa0 --- /dev/null +++ b/docs/source/explanations/index.rst @@ -0,0 +1,23 @@ +.. _how_it_works: + +**How it all Works** +==================== + +.. toctree:: + :maxdepth: 2 + + overview + +.. + [ToAdd] + file_collect_classify + extract + rules_engine + parser + package + report + integration + +.. + [ToDo] + Each Section to Be Elaborated diff --git a/docs/source/explanations/overview.rst b/docs/source/explanations/overview.rst new file mode 100644 index 00000000000..c3df546cee5 --- /dev/null +++ b/docs/source/explanations/overview.rst @@ -0,0 +1,46 @@ +Overview +======== + +.. _explain_how_scancode_works: + +How does ScanCode work? +----------------------- + +For license detection, ScanCode uses a (large) number of license texts and license detection +'rules' that are compiled in a search index. When scanning, the text of the target file is +extracted and used to query the license search index and find license matches. + +For copyright detection, ScanCode uses a grammar that defines the most common and less common +forms of copyright statements. When scanning, the target file text is extracted and 'parsed' +with this grammar to extract copyright statements. + +ScanCode-Toolkit performs the scan on a codebase in the following steps : + +1. Collect an inventory of the code files and classify the code using file types, +2. Extract files from any archive using a general purpose extractor +3. Extract texts from binary files if needed +4. Use an extensible rules engine to detect open source license text and notices +5. Use a specialized parser to capture copyright statements +6. Identify packaged code and collect metadata from packages +7. Report the results in the formats of your choice (JSON, CSV, etc.) for integration + with other tools + +Scan results are provided in various formats: + +- a JSON file simple or pretty-printed, +- SPDX tag value or XML, RDF formats, +- CSV, +- a simple unformatted HTML file that can be opened in browser or as a spreadsheet. + +For each scanned file, the result contains: + +- its location in the codebase, +- the detected licenses and copyright statements, +- the start and end line numbers identifying where the license or copyright was found in the + scanned file, and +- reference information for the detected license. + +For archive extraction, ScanCode uses a combination of Python modules, 7zip and libarchive/bsdtar +to detect archive types and extract these recursively. + +Several other utility modules are used such as libmagic for file and mime type detection. diff --git a/docs/source/getting-started/home.rst b/docs/source/getting-started/home.rst new file mode 100644 index 00000000000..55ca682da75 --- /dev/null +++ b/docs/source/getting-started/home.rst @@ -0,0 +1,98 @@ +Home +==== + +ScanCode is a tool to scan code and detect licenses, copyrights and more. + +Why ScanCode? +------------- + +Discovering the origin and license for a software component is important, but it is often much +harder to accomplish than it should be because: + +- A typical software project may reuse tens or hundreds of third-party software components +- Software authors do not always provide copyright and license information +- Copyright and license information that is provided may be hard to find and interpret + +ScanCode tries to address this issue by offering: + +- A comprehensive code scanner that can detect origin or license information inside codebase files +- A simple command line approach that runs on Windows, Linux, and Mac +- Your choice of JSON or other output formats (SPDX, HTML, CSV) for integration with other tools +- ScanCode workbench for Visualization +- Well-tested, easy to hack, and well-documented code +- Release of the code and reference data under attribution licenses (Apache 2.0 and CC-BY-1.0) +- Plugin System for easily adding new Functionality to Scans. +- Python 3 Unicode Capabilities for better supporting users from 100+ languages. +- Extensive Documentation Support. + +What does ScanCode Toolkit do? +------------------------------ + +ScanCode finds the origin history information that is in your codebase with a focus on: + +- Copyright and other origin clues (emails, urls, authors etc) +- License notices and license text with reference information about detected licenses. + +Using this data you can: + +- Discover the origin and license of the open source and third-party software + components that you use, +- Create a software component Inventory for your codebase, and +- Use this data to comply with open source license obligations such as attribution + and redistribution. + +How does it work? +----------------- + +Given a codebase in a directory, ScanCode will: + +- Collect an inventory of the code files and classify the code using file types +- Extract files from any archive using a general purpose extractor +- Extract texts from binary files if needed +- Use an extensible rules engine to detect open source license text and notices +- Use a specialized parser to capture copyright statements +- Identify packaged code and collect metadata from packages +- Report the results in the formats of your choice (JSON, SPDX, etc.) for integration with + other tools +- Browse the results using the `ScanCode Workbench `_ + companion app to assist your analysis. + +ScanCode should enable you to identify the “easy” cases on your own, but a software development +team will probably need to build internal expertise or use outside experts (like nexB) in +many cases. + +ScanCode is written in Python and also uses other open source packages. + +Alternatives? +-------------- + +There are several utilities that do some of what ScanCode does - e.g. You can grep files for +copyright and license text. This may work well for simple cases - e.g. at the single file level, +but we created ScanCode for ourselves because this approach does not help you to see the +recurring patterns of licenses and other origin history clues. + +Or you can consider other tools such as: + +- FOSSology (open source, written in C, Linux only, GPL-licensed) +- Ninka (open source, written in Perl, GPL-licensed) +- Commercially-licensed tools, most of them written in Java + +History +------- + +ScanCode was originally created by nexB to support our software audit consulting services. We have +used and continuously enhanced the underlying toolkit for six years. We decided to release +ScanCode as open source software to give software development teams the opportunity to perform +as much of the software audit function as they like on their own. + +If you have questions or are interested in nexB-provided training or support for ScanCode, please +send us a note at info@scancode.io or visit http://www.nexb.com/. + +We are part of nexB Inc. and most of us are located in the San Francisco Bay Area. Our mission is +to provide the tools and services that enable and accelerate component-based software development. +Reusing software components is essential for the efficient delivery of software products and +systems in every industry. + +Thank you for giving ScanCode a try! + +.. include:: /rst_snippets/other_imp_doc.rst diff --git a/docs/source/getting-started/ide-config.rst b/docs/source/getting-started/ide-config.rst new file mode 100644 index 00000000000..9ebfb95e194 --- /dev/null +++ b/docs/source/getting-started/ide-config.rst @@ -0,0 +1,41 @@ +.. _ide_config: + +IDE Configuration +================= + +The instructions below assume that you followed the :ref:`contrib_code_dev` including a python +virtualenv. + +PyCharm +------- + +Open the settings dialog and navigate to "Project Interpreter". Click on the gear button in the +upper left corner and select "Add Local". Find the python binary in the virtualenv +(``bin/python`` in the repository root) and confirm. Open a file that contains tests and set a +breakpoint. Right click in the test and select "Debug ". Afterwards you can re-run +the same test in the debugger using the appropriate keyboard shortcut (e.g. Shift-F9, depending +on platform and configured layout). + +Visual Studio Code +------------------ + +Install the `Python extension from Microsoft `_. + +The ``configure`` script should have created a VSCode workspace directory with a basic +``settings.json``. To do this manually, add to or create the workspace settings file +``.vscode/settings.json``:: + + "python.pythonPath": "${workspaceRoot}/bin/python", + "python.unitTest.pyTestEnabled": true + +If you created the file, also add ``{`` and ``}`` on the first and last line respectively. + +When you open the project root folder in VSCode, the status bar should show the correct python +interpreter and, after a while, a "Run Tests" button. If not, try restarting VSCode. + +Open a file that contains tests (e.g. ``tests/cluecode/test_copyrights.py``). Above the test +functions you should now see "Run Test" and "Debug Test". Set a breakpoint in a test function +and click on "Debug Test" above it. The debugger panel should show up on the left and show the +program state at the breakpoint. Stepping over and into code seems not to work. Clicking one of +those buttons just runs the test to completion. As a workaround, navigate to the function you want +to step into, set another breakpoint and click on "continue" instead. diff --git a/docs/source/getting-started/index.rst b/docs/source/getting-started/index.rst new file mode 100644 index 00000000000..a2f44536ce1 --- /dev/null +++ b/docs/source/getting-started/index.rst @@ -0,0 +1,15 @@ +**Getting Started** +=================== + +.. toctree:: + :maxdepth: 2 + + home + install + ide-config + whats-new + newcomer + +.. + [ToAdd] + Link to Changelog diff --git a/docs/source/getting-started/install.rst b/docs/source/getting-started/install.rst new file mode 100644 index 00000000000..5ee32c74597 --- /dev/null +++ b/docs/source/getting-started/install.rst @@ -0,0 +1,272 @@ +Comprehensive Installation +========================== + +The fastest way to install Scancode-Toolkit is by using ``pip``. You can also install +ScanCode-Toolkit by compiling it from source or by Downloading and Configuring the +latest release from GitHub. + +- :ref:`pip_install` +- :ref:`latest_release_download_install` +- :ref:`source_configure_install` + +.. NOTE:: + + After ``pip install``, you can perform a scan using only:: + + scancode [OPTIONS] + + This is unlike other install methods where path to scancode is provided by using + ``path/to/scancode``, or by using ``./scancode`` inside the Scancode install directory. + +--- + +Before Installing +----------------- + +ScanCode requires either Python 3.6.x or Python 2.7.x and is tested on Linux, Mac, and Windows. +Make sure Python 2.7 or Python 3.6 is installed first. + +System Requirements +^^^^^^^^^^^^^^^^^^^ + +- Hardware : ScanCode will run best with a modern X86 processor and at least 2GB of RAM and + 250MB of disk. + +- Supported operating systems : ScanCode should run on these OSes: + + #. Linux: on most recent 64-bit Linux distributions (32-bit distros are + only partially supported), + #. Mac: on recent Mac OSX (10.6.8 and up), + #. Windows: on Windows 7 and up (32- or 64-bit) using a 32-bit Python. + +.. _install_prerequisites: + +Prerequisites +^^^^^^^^^^^^^ + +ScanCode needs a Python 3.6 or a Python 2.7 interpreter. + +.. Note:: + + ScanCode currently doesn't support Python 3.7.x, though support will be added soon. + +- On Linux: Use your package manager to install ``python2.7`` or ``python3.6``. If they are not + available from your package manager, you must compile it from sources. For instance, visit + https://github.com/dejacode/about-code-tool/wiki/BuildingPython27OnCentos6 for instructions + to compile Python 2.7 from sources on Centos. + +- On Ubuntu 12.04, 14.04 and 16.04, you will need to install these packages first: + ``python-dev bzip2 xz-utils zlib1g libxml2-dev libxslt1-dev`` + +- On Debian and Debian-based distros you will need to install these packages first: + ``python-dev libbz2-1.0 xz-utils zlib1g libxml2-dev libxslt1-dev`` + +- On RPM-based distros, you will need to install these packages first: + ``python-devel zlib bzip2-libs xz-libs libxml2-devel libxslt-devel`` + +- **On Windows**: + + Use the Python 2.7 32-bit (e.g. The Windows x86 MSI installer) for X86 regardless of whether + you run Windows on 32-bit or 64-bit. DO NOT USE Python X86_64 installer even if you run 64 bit + Windows. Download Python from this url: + https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi + + Install Python on the c: drive and use all default installer options (scancode will try to find + python just in c:\python27\python.exe). See the Windows installation section for more + installation details. + +.. Note:: + + 64-bit Python interpreters (x86) are currently not supported by Scancode for Python 2.7 in + Windows. Use 32-bit Python isntead, even with 64-bit Windows. + +- On Mac: Download and install Python from this url: + https://www.python.org/ftp/python/2.7.13/python-2.7.13-macosx10.6.pkg + +.. WARNING:: + + Do not use Unicode, non-ASCII in your installation Path if you are using a Python 2.7 interpreter. + +--- + +.. _pip_install: + +Installation by ``pip`` +----------------------- + +Scancode Toolkit can be easily installed using ``pip``. The steps are: + +#. Create a Python 2.7 or Python 3.6 Virtual Environment:: + + virtualenv -p /usr/bin/python3.6 venv-scancode + +#. Activate the Virtual Environment you just created:: + + source venv-scancode/bin/activate + +#. Run ``pip install scancode-toolkit`` to Install Scancode. + +.. NOTE:: + + If you use Python 2.7, scancode-toolkit Version 3.0.2 is installed by default. For Python 3 + the latest version of Scancode Toolkit is installed by default. + +.. WARNING:: + + Requesting a specific version through ``pip install`` for Python 3 will give Errors if the + Version isn't 3.1.x or later. + +To uninstall, run ``pip uninstall scancode-toolkit``. + +--- + +.. _latest_release_download_install: + +Download and Configure latest Release +------------------------------------- + +Installation on Linux and Mac +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the Scancode Toolkit tarball or zip archive of a specific Version by going to the +`GitHub Release Page `_ + +For example, Version 3.1.1 tarball or .zip archive can be obtained from +`Toolkit Release 3.1.1 `_ +under assets options. Download and extract the Archive from command line: + +For ``.zip`` archive:: + + unzip scancode-toolkit-3.1.1.zip + +For ``.tar.bz2`` archive:: + + tar -xvf scancode-toolkit-3.1.1.tar.bz2 + +Or Right Click and select "Extract Here". + +Check whether the :ref:`install_prerequisites` are installed. Open a terminal in the extracted +directory and run:: + + ./scancode --help + +This will configure ScanCode and display the command line :ref:`cli_help_text`. + +Installation on Windows +^^^^^^^^^^^^^^^^^^^^^^^ + +- Download the latest ScanCode release zip file from + https://github.com/nexB/scancode-toolkit/releases/ + +- In Windows Explorer (called File Explorer on Windows 10), select the downloaded ScanCode zip + and right-click. + +- In the pop-up menu select 'Extract All...' + +- In the pop-up window 'Extract zip folders' ('Extract Compressed (Zipped) Folders' on Windows 10) + use the default options to extract. + +- Once the extraction is complete, a new Windows Explorer/File Explorer window will pop up. + +- In this Explorer window, select the new folder that was created and right-click. + +.. note:: + + On Windows 10, double-click the new folder, select one of the files inside the folder + (e.g., 'setup.py'), and right-click. + +- In the pop-up menu select 'Properties'. + +- In the pop-up window 'Properties', select the Location value. Copy this to the clipboard and + close the 'Properties' window. + +- Press the start menu button (On Windows 10, click the search box or search icon in the taskbar.) + +- In the search box type:: + + cmd + +- Select 'cmd.exe' listed in the search results. + (On Windows 10, you may see 'Command Prompt' instead -- select that.) + +- A new 'cmd.exe' window ('Command Prompt' on Windows 10) pops up. + +- In this window (aka a 'command prompt'), type the following (i.e., 'cd' followed by a space):: + + cd + +- Right-click in this window and select Paste. + This will paste the path where you extracted ScanCode. + +- Press Enter. + +- This will change the current location of your command prompt to the root directory where + ScanCode is installed. + +- Then type:: + + scancode -h + +- Press enter. This will configure your ScanCode installation. + +- Several messages are displayed followed by the scancode command help. + +- The installation is complete. + +Un-installation +^^^^^^^^^^^^^^^ + +- Delete the directory in which you extracted ScanCode. +- Delete any temporary files created in your system temp directory under a ScanCode directory. + +--- + +.. _source_configure_install: + +Build From Source +----------------- + +You can also download the Scancode Toolkit Source Code and build from it yourself. This is how you +would want to do it if: + +- You are Adding new patches to Scancode and want to test it. +- You want to test a specific Version/Checkpoint/Branch from the VCS + + +Download the ScanCode-Toolkit Source Code +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you don't have the ScanCode Toolkit Source Code downloaded, get it from it's official Repository +(Downloaded as a .zip file) or run the following:: + + git clone https://github.com/nexB/scancode-toolkit.git + cd scancode-toolkit + +Now, by default the files are checked out to the develop branch, but you can jump to any checkpoint +using the following command:: + + git checkout master + +Here, ``master`` branch has the latest release of Scancode-Toolkit. You can also check out to any +of the following: + +- Branches (Locally created or already present) +- Tags (essentially Version Numbers) [Example - ``v3.1.1``, ``v3.1.0`` etc] +- Commits (use the shortened commit hash) [Example - ``4502055``, ``f276398`` etc] + +Configure the build +^^^^^^^^^^^^^^^^^^^ + +ScanCode use the Configure scripts to install a virtualenv, install required packaged dependencies +as pip requirements and more configure tasks such that ScanCode can be installed in a +self-contained way with no network connectivity required. + +Open a terminal, clone the scancode-toolkit repository, cd to the clone directory and run:: + + ./configure + +On Windows open a command prompt, cd to the clone directory and run instead:: + + configure + +Now you are ready to use the freshly configured scancode-toolkit. diff --git a/docs/source/getting-started/newcomer.rst b/docs/source/getting-started/newcomer.rst new file mode 100644 index 00000000000..ec537ec4b7f --- /dev/null +++ b/docs/source/getting-started/newcomer.rst @@ -0,0 +1,311 @@ +Are you new to Scancode-Toolkit? +================================ + +This is the perfect place to start, if you are new to ScanCode-Toolkit. Have a quick look at the +table of contents below, as these are the main sections you might need help on. These sections +have extensive links to other important documentation pages, and make sure you go through them +all. + +Table of Contents +----------------- + +#. :ref:`newcomer_try_scancode` + + - :ref:`newcomer_before` + - :ref:`newcomer_scan_codebase` + - :ref:`newcomer_use_scancode_better` + - :ref:`newcomer_all_tutorials` + - :ref:`newcomer_whats_new` + +#. :ref:`newcomer_learn_scancode` + + - :ref:`newcomer_cli_ref` + - :ref:`newcomer_explanations` + - :ref:`newcomer_plugins` + +#. :ref:`newcomer_contribute` + + - :ref:`newcomer_contribute_general_info` + - :ref:`newcomer_code` + - :ref:`newcomer_good_first_issue` + - :ref:`newcomer_add_functionalirty` + - :ref:`newcomer_update_docs` + - :ref:`newcomer_gsoc_gsod` + +---- + +.. _newcomer_try_scancode: + +Try ScanCode Toolkit +-------------------- + +This section is about using the Scancode-Toolkit, i.e. Performing a scan on a codebase/files to +determine their license, copyrights and other information, according to your requirements. + +#. The :ref:` newcomer_scan_codebase` section helps you with configuring your virtual environment, + installing Scancode and performing a basic scan, and subsequently visualize the results. + +#. The :ref:`newcomer_use_scancode_better` section helps you customize the scan according to your + requirements, and better understand the advanced features you can use. + +#. The :ref:`newcomer_all_tutorials` is essentially an exhaustive list of all Tutorials and How To's + with a brief description on what they help you to achieve. + +.. _newcomer_before: + +Before you start using Scancode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. You need to make sure :ref:`install_prerequisites` are installed, and a `virtualenv `_ + is created. + +#. Now you can either run ``pip install scancode-toolkit`` like that in the + :ref:`pip_install` documentation, or follow the instructions for the + :ref:`latest_release_download_install` method. Alternatively, you can also + :ref:`source_configure_install`. + +#. Run ``scancode -h`` to make sure Scancode was installed properly. + If this shows any Error, refer the `Common Installation Errors Issue `_ + for common errors. The documentation also has tips on :ref:`ide_config`. + +.. note:: + + Refer :ref:`synopsis_quickstart` to make sure you are using the scan command correctly. + +.. _newcomer_scan_codebase: + +Scan a Codebase +^^^^^^^^^^^^^^^ + +Once you are all set up with Scancode Toolkit, i.e. Running ``scancode -h`` shows the +:ref:`cli_help_text`, you can start scanning files or a codebase. + +#. Refer :ref:`synopsis_quickstart` for commonly used scan commands, and commonly used + :ref:`synopsis_output`. (The recommended output format is ``JSON``) + +#. Refer `this section `_ for Extractcode Options. + +#. :ref:`how_to_run_a_scan` is a sample tutorial for absolute beginners, to walk them through the + process of running a scan. Follow this tutorial and perform a scan on the ``sample`` folder + distributed with ScanCode, or any file/folder of your choice. Avoid advanced options, and just + follow the basic instructions. + +#. ScanCode generates output files with scan results. You can visualize ``JSON`` result files using + `Scancode Workbench `_. Follow this tutorial :ref:`how_to_visualize_scan_results` + to visualize the scan results. + +.. _newcomer_use_scancode_better: + +Use ScanCode Better +^^^^^^^^^^^^^^^^^^^ + +#. Go through all the options in the page :ref:`cli_list_options`, to know about Scancode Command + Line options. You can then modify the Scan according to your requirements. + +.. _newcomer_all_tutorials: + +All Tutorials/How-Tos +^^^^^^^^^^^^^^^^^^^^^ + +The Tutorials are: + +#. :ref:`how_to_run_a_scan` +#. :ref:`how_to_visualize_scan_results` +#. :ref:`how_to_set_what_scan_detects` +#. :ref:`how_to_extract_archives` +#. :ref:`how_to_specify_output_format` +#. :ref:`how_to_add_post_scan_plugin` + +The How-To's are: + +#. :ref:`add_new_license_for_det` +#. :ref:`add_new_license_det_rule` + +.. _newcomer_whats_new: + +ScanCode Versions +^^^^^^^^^^^^^^^^^ + +#. You can see all Scancode Toolkit versions on the `GitHub release page `_. +#. Refer :ref:`whats_new_this_release` to know more about the latest release. +#. You can also refer the `CHANGELOG `_ for more information on specific releases. +#. If you want to use/test a specific version of Scancode Toolkit, you can follow the instructions + in :ref:`source_configure_install` docs. + +---- + +.. _newcomer_learn_scancode: + +Learn more about ScanCode Toolkit +--------------------------------- + +Here we give an introduction on the Scancode Toolkit Documentation Sections that can help you to +learn more about Scancode Toolkit. + +.. _newcomer_cli_ref: + +CLI Reference +^^^^^^^^^^^^^ + +This section contains a complete guide to ScanCode Toolkit Command Line options, i.e. What the +command-line options are, how different options affect the scan and outputs, how to use these +options and examples of their use cases. + +Now this section has three types of pages: + +#. The :ref:`cli_synopsis` page and the :ref:`how_to_run_a_scan` page as summaries. +#. An exhaustive list of all Command Line Options at :ref:`cli_list_options` +#. All the other pages detailing the :ref:`scancode_cli_options` + +Note that the page for one type of options also has a short list of all the options detailed on +that page in the beginning. The :ref:`cli_list_options` page just has all of them together, and +also the extractcode options. + +.. _newcomer_explanations: + +How Scancode Works +^^^^^^^^^^^^^^^^^^ + +This section has documentation on :ref:`explain_how_scancode_works`. + +.. _newcomer_plugins: + +Plugins +^^^^^^^ + +Plugins are an integral part of ScanCode Toolkit in the sense they are used to easily extend +Scancode capabilities, and developers can code their own plugins according to their requirements. + +This section has documentation on: + +#. The :ref:`plugin_arch` +#. The :ref:`license_policy_plugin` +#. All :ref:`plugin_tutorials` + +---- + +.. _newcomer_contribute: + +Contribute +---------- + +If you are looking to Contribute to Scancode Toolkit, this is where you start. + +.. _newcomer_contribute_general_info: + +General Information +^^^^^^^^^^^^^^^^^^^ + +#. Also refer the `Contribution `_ page here. +#. For more Project Ideas, refer :ref:`contributor_project_ideas`. +#. Before committing your work, make sure you have read this post on :ref:`good_commit_messages`. + +.. _newcomer_code: + +Contribute Code +^^^^^^^^^^^^^^^ + +If you haven't contributed to Scancode Toolkit refer :ref:`newcomer_good_first_issue`. + +To determine where to contribute, you can refer: + +#. ScanCode Toolkit tracks issues via the `GitHub Issue tracker `_ +#. Broad `milestones `_ for upcoming versions are also maintained. + +And documentation related to contributing code can be referred at :ref:`contrib_code_dev`. The main +sections are: + +#. :ref:`contrib_code_conven` +#. :ref:`scancode_toolkit_developement_running_tests` +#. :ref:`contrib_dev_pip_and_configure` + +.. _newcomer_good_first_issue: + +Good First Issues +^^^^^^^^^^^^^^^^^ + +A `good first issue `_ +means it's recommended for people who haven't contributed to Scancode Toolkit before. + +#. Refer the detailed documentation for :ref:`good_first_issue`. +#. :ref:`good_1st_issue_links` for Good First issues are also compiled. +#. :ref:`good_1st_issue_understand_b4_solving` +#. :ref:`good_1st_issue_workflow` + +A `first timers only `_ +issue means we've worked to make it more legible to folks who either **haven't contributed to our +codebase before, or even folks who haven't contributed to open source before**. + +Refer the detailed documentation for :ref:`first_timers_only`. + +.. _newcomer_add_functionalirty: + +Add new Functionality/Enhancement to ScanCode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +There are two main paths you can follow to add a new functionality to Scancode. +They are: + +#. Add the functionality to Scancode itself. +#. Add plugins if the functionality is very much application dependent. + +Refer `enhancement issues `_ for the first type of +enhancements. If you want to add a plugin to implement the functionality, refer all the +:ref:`plugin_tutorials`. + +.. _newcomer_update_docs: + +Update our Documentation +^^^^^^^^^^^^^^^^^^^^^^^^ + +Maintaining a comprehensive, accurate, updated and effective documentation is very important +as that directly affects the acceptability of Scancode Toolkit. + +To contribute to Scancode Toolkit Documentation, first refer the :ref:`contrib_doc_dev` section. + +The sections in this page cover the following: + +#. :ref:`contrib_doc_setup_local` +#. :ref:`contrib_doc_share_improvements` +#. :ref:`doc_ci` system for the Documentation +#. :ref:`doc_style_docs8` +#. :ref:`doc_interspinx` +#. :ref:`doc_style_conv` + +You can contribute to the following Open Issues on documentation. + +#. `Issues with label Documentation `_ +#. `Documentation Inconsistencies Tracker `_ +#. `ScanCode Toolkit Documentation Roadmap `_ +#. `First Timers Only Issues List `_ + +.. note:: + + Refer :ref:`improve_docs` to report Documentation Errors or to request Improvements. + +Also, consider contributing to other Aboutcode Project Documentations, as they need more support. + +.. _newcomer_gsoc_gsod: + +Participate in GSoC/GSoD +^^^^^^^^^^^^^^^^^^^^^^^^ + +If you want to participate in any of the two programs: + +- `Google Summer of Code `_ +- `Google Season of Docs `_ + +Then: + +#. Keep an eye out for Application Timelines. +#. Solve multiple of these :ref:`good_first_issue` to demonstrate your skills, and improve your + chances of selection. +#. Refer the Projects Ideas list for details on tentative projects. + + - :ref:`GSoC2019` + - :ref:`GSoD2019` + +#. Remain active in Gitter and talk with the organization mentors well ahead of the deadlines. +#. Select projects according to your skills and finalize project proposals. +#. Discuss your proposals extensively with corresponding mentors. +#. Apply for the Programs well before the Deadline. diff --git a/docs/source/getting-started/whats-new.rst b/docs/source/getting-started/whats-new.rst new file mode 100644 index 00000000000..e847af3c824 --- /dev/null +++ b/docs/source/getting-started/whats-new.rst @@ -0,0 +1,71 @@ +.. _whats_new_this_release: + +What's New in This Release? +=========================== + +A new release of Scancode-Toolkit is here! + +Quick Summary +------------- + +- Version - 3.1.1 +- Tag - "v.3.1.1" +- Date - 5th September 2019 +- Type - Pre-Release +- Comments - Release v3.1.1 which the release candidate 2 of 3.1.x + +Main New Features +----------------- + +This is the first 3.1 release with the best, fastest and most efficient ScanCode ever released. + +This release contains many improvements, fixes and new features including breaking API changes (when compared to 2.2.x). See the `CHANGELOG `_ for details. + +This release also comes with a Full Documentation hosted at +`aboutcode.readthedocs.io `_. + +To install, download scancode-toolkit-3.1.1.zip or scancode-toolkit-3.1.1.tar.bz2 from the Downloads section below and follow installation instructions in the `README `_. + +This is also available as a Python library from Pypi with ``pip install scancode-toolkit``. + +You can also download the corresponding source code for bundled pre-built third-party binaries from +these locations: + +- https://github.com/nexB/scancode-thirdparty-src/archive/v1.0.0.tar.gz +- https://github.com/nexB/scancode-thirdparty-src/archive/v1.0.0.zip + +Brief Summary Of Changes +------------------------ + +Documentation Support +^^^^^^^^^^^^^^^^^^^^^ + +From Scancode 3.1.1 Scancode comes with improved and comprehensive Documentation Support. + +The documentation is available both offline (distributed with Scancode) and online, +at ``scancode-toolkit.readthedocs.io/en/latest/``. The documentation in GitHub wiki's will be +deprecated hereafter. The new documentation has improved support in terms of: + +#. Consistent with the Latest Version +#. Command Line Interface Reference +#. Getting Started Support for Newcomers +#. Restructured to fit into the recommended `4 Category Doc Format `_ +#. Updated Tutorials/How To's +#. Updated Plugin Support + +This results in a much better documentation experience in Users and even contributors. + +``pip install`` Support +^^^^^^^^^^^^^^^^^^^^^^^ + +Now, ``pip install`` is the recommended install method, across all platforms. This greatly +simplifies the install process, and is much faster and easier than the Download and Configure +method, for non-developer users. + +Python 3 Support +^^^^^^^^^^^^^^^^ + +Python 3 is now officially supported by Scancode-Toolkit. + +This also means improved Unicode support, so it's easy to translate strings from Unicode to +other languages. And as Scancode has users in more than 100 languages, this is a major improvement. diff --git a/docs/source/help.rst b/docs/source/help.rst deleted file mode 100644 index aea6d6379c7..00000000000 --- a/docs/source/help.rst +++ /dev/null @@ -1,26 +0,0 @@ -Help -==== - -ScanCode Toolkit is part of the AboutCode family of open source projects. - -AboutCode Projects -****************** - -- **[ScanCode Toolkit](https://github.com/nexB/scancode-toolkit)**: This is a set of code scanning tools to detect the origin and license of code and dependencies. ScanCode Toolkit uses a plug-in architecture to run a series of scan-related tools in one process flow. This is the most popular project and is used by hundreds of software teams. https://github.com/nexB/scancode-toolkit . The lead maintainer is @pombredanne - -- **[Scancode Workbench](https://github.com/nexB/scancode-workbench)** (formerly AboutCode Manager) This is a desktop application (based on Electron) to review the results of a scan and document your conclusions about the origin and license of software components and packages. https://github.com/nexB/aboutcode-manager . The lead maintainer is @majurg - -- **[AboutCode Toolkit](https://github.com/nexB/aboutcode-toolkit)**: This is a set of command line tools to document the provenance of your code and generate attribution notices. AboutCode Toolkit uses small yaml files to document code provenance inside a codebase. https://github.com/nexB/aboutcode-toolkit . The lead maintainer is @chinyeungli - -- **[TraceCode Toolkit](https://github.com/nexB/tracecode-toolkit)**: This is a set of tools to trace files from your deployment or distribution packages back to their origin in a development codebase or repository. The primary tool uses strace https://github.com/strace/strace/ to trace system calls on Linux and construct a build graph from syscalls to show which files are used to build a binary. We are contributors to strace. Maintained by @pombredanne - -- **[Conan](https://github.com/nexB/conan)**: "conan" stands for "CONtainer ANalysis" and is a tool to analyze the structure and provenance of software components in Docker images using static analysis. https://github.com/nexB/conan Maintained by @pombredanne - -- **[license-expression](https://github.com/nexB/license-expression/)**: This is a library to parse, analyze, compare and normalize SPDX-like license expressions using a boolean logic expression engine. See https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60 to understand what a license expression is. See https://github.com/nexB/license-expression for the code. The underlying boolean engine is at https://github.com/bastikr/boolean.py . Both are co-maintained by @pombredanne - -- **ABCD aka AboutCode Data** is a simple set of conventions to define data structures that all the AboutCode tools can understand and use to exchange data. The specification lives in this repository. .ABOUT files and ScanCode tooklit data are examples of this approach. Other projects such as https://libraries.io and [OSS Review Toolkit](https://github.com/heremaps/oss-review-toolkit) also use these conventions. - -- **[DeltaCode](https://github.com/nexB/deltacode)** is a command line tool to compare scans and determine if and where there are material differences that affect licensing. The lead maintainer is @majurg - -- **[VulnerableCode](https://github.com/nexB/vulnerablecode)**: an emerging server-side application to collect and track known package vulnerabilities. - diff --git a/docs/source/how-to-guides/add_new_license.rst b/docs/source/how-to-guides/add_new_license.rst new file mode 100644 index 00000000000..b509f995b99 --- /dev/null +++ b/docs/source/how-to-guides/add_new_license.rst @@ -0,0 +1,32 @@ +.. _add_new_license_for_det: + +How To Add a New License for Detection +====================================== + +How to add a new license for detection? +--------------------------------------- + +To add new license, you first need to select a new and unique license key (mit and gpl-2.0 are +some of the existing license keys). All licenses are stored as plain text files in the +src/licensedcode/data/licenses directory using their key as part of the file names. + +You need to create a pair of files: + +- a file with the text of the license saved in a plain text file named key.LICENSE + +- a small text data file (in YAML format) named key.yml that contains license information such as:: + + key: my-license + name: My License + +The key name can contain only these symbols: + +- lowercase letters from a to z, +- numbers from 0 to 9,and +- dash - and . period signs. No spaces. + +Save these two files in the ``src/licensedcode/data/licenses/`` directory. + +Done! + +See the ``src/licensedcode/data/licenses/`` directory for examples. diff --git a/docs/source/how-to-guides/add_new_license_detection_rule.rst b/docs/source/how-to-guides/add_new_license_detection_rule.rst new file mode 100644 index 00000000000..2a8f09c6eaf --- /dev/null +++ b/docs/source/how-to-guides/add_new_license_detection_rule.rst @@ -0,0 +1,73 @@ +.. _add_new_license_det_rule: + +How to Add New License Rules for Enhanced Detection +=================================================== + +ScanCode relies on license rules to detect licenses. A rule is a simple text file containing a +license text or notice or mention. And a small YAML text file that tells ScanCode which licenses +to report when the text is detected. + +See the :ref:`faq` for a high level description of :ref:`add_new_license_det_rule`. + +How to add a new license detection rule? +---------------------------------------- + +A license detection rule is a pair of files: + +- a plain text rule file that is typically a variant of a license text, notice or license mention. +- a small text data file (in YAML format) documenting which license(s) should be detected for the + rule text. + +To add a new rule, you need to pick a unique base file name. As a convention, we like to include the +license key(s) that should be detected in that name to make it more descriptive. For example: +mit_and_gpl-2.0 is a good base name. Add a suffix to make it unique if there is already a rule +with this base name. Do not use spaces or special characters in that name. + +Then create the rule file in the src/licensedcode/data/rules/ directory using this name, replacing +selected_base_name with the base name you selected:: + + selected_base_name.RULE + +Save your rule text in this file. + +Then create the YAML data file in the src/licensedcode/data/rules/ directory using this name:: + + selected_base_name.yml + +For a simple mit and gpl-2.0 detection license keys detection, the content of this file can be +this YAML snippet:: + + licenses: + - mit + - gpl-2.0 + +Save these two files in the ``src/licensedcode/data/licenses/`` directory and you are done! + +See the ``src/licensedcode/data/rules/`` directory for examples. + +More (advanced) rules options: + +- you can use a notes: text field to document this rule. + +- if no license should be detected for your .RULE text, do not add a list of license keys, + just add a note. + +- .RULE text can contain special text regions that can be ignored when scanning for licenses. + You can mark a template region in your rule text using {{double curly braces}} and up to five + words can vary and still match this rule. You must add this field in your .yml data file to mark + this rule as a template + +:: + + template: yes + +- By using a number after the opening braces, more than five words can be skipped. + With {{10 double curly braces }} ten words would be skipped. + +- To mark a rule as detecting a choice of licenses, add this field in your .yml file:: + + license_choice: yes + +See the `#257 issue `_ and the related +`#258 pull request `_ for an example: +this adds a new rule to detect a combination of MIT or GPL. diff --git a/docs/source/how-to-guides/index.rst b/docs/source/how-to-guides/index.rst new file mode 100644 index 00000000000..957445a3219 --- /dev/null +++ b/docs/source/how-to-guides/index.rst @@ -0,0 +1,10 @@ +.. _how_to_guides: + +**How-To Guides** +================= + +.. toctree:: + :maxdepth: 2 + + add_new_license + add_new_license_detection_rule diff --git a/docs/source/index.rst b/docs/source/index.rst index ec727c83f9f..6990118a1fb 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -2,40 +2,81 @@ ScanCode Toolkit Documentation ============================== Guide -***** +----- .. toctree:: :maxdepth: 2 + getting-started/index + cli-reference/index + plugins/index + tutorials/index + how-to-guides/index + explanations/index + contribute/index + misc/index license - help - doc_maintenance +---- + +Getting Started +--------------- + +.. toctree:: + :maxdepth: 2 + + getting-started/newcomer + +---- Tutorial Documents -================== +------------------ Tutorial documents provide specific instructions to help you get started. +.. toctree:: + :maxdepth: 2 + + tutorials/index + +---- How-To Documents -================ +---------------- How-To documents explain how to accomplish specific tasks. +.. toctree:: + :maxdepth: 2 + + how-to-guides/index + +---- Reference Documents -=================== +------------------- + +Reference documents describe the Command Line options, and application concepts in depth. + +.. toctree:: + :maxdepth: 2 -Reference documents describe application concepts in depth. + cli-reference/index +---- Discussion Documents -==================== +-------------------- -Discussion documents provide insights into integration of the application into your own software -development life cycle. +Discussion documents provide insights into how scancode works, and integration of the application +into your own software development life cycle. +.. toctree:: + :maxdepth: 2 + + explanations/index + +---- Indices and Tables ================== @@ -43,3 +84,7 @@ Indices and Tables * :ref:`genindex` * :ref:`modindex` * :ref:`search` + +.. _improve_docs: + +.. include:: /rst_snippets/improve_docs.rst diff --git a/docs/source/misc/data/scancode-non-spdx-licenses-2017-08-01.csv b/docs/source/misc/data/scancode-non-spdx-licenses-2017-08-01.csv new file mode 100644 index 00000000000..8797ed0996d --- /dev/null +++ b/docs/source/misc/data/scancode-non-spdx-licenses-2017-08-01.csv @@ -0,0 +1,854 @@ +"ScanCode License key","ScanCode License short name","URL to data","URL to text", +"3com-microcode","3Com Microcode","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/3com-microcode.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/3com-microcode.LICENSE", +"4suite-1.1","4Suite 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/4suite-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/4suite-1.1.LICENSE", +"ac3filter","AC3Filter License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ac3filter.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ac3filter.LICENSE", +"acdl-1.0","ACDL 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/acdl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/acdl-1.0.LICENSE", +"activestate-community","ActiveState Community License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/activestate-community.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/activestate-community.LICENSE", +"activestate-komodo-edit","ActiveState Komodo Edit EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/activestate-komodo-edit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/activestate-komodo-edit.LICENSE", +"actuate-birt-ihub-ftype-sla","BIRT iHub F-Type Software License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/actuate-birt-ihub-ftype-sla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/actuate-birt-ihub-ftype-sla.LICENSE", +"adaptec-downloadable","Adaptec Downloadable Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adaptec-downloadable.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adaptec-downloadable.LICENSE", +"adaptec-eula","Adaptec EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adaptec-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adaptec-eula.LICENSE", +"addthis-mobile-sdk-1.0","AddThis Mobile Application SDK License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/addthis-mobile-sdk-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/addthis-mobile-sdk-1.0.LICENSE", +"adi-bsd","ADI BSD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adi-bsd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adi-bsd.LICENSE", +"adobe-acrobat-reader-eula","Adobe Acrobat Reader EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-acrobat-reader-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-acrobat-reader-eula.LICENSE", +"adobe-air-sdk","Adobe AIR SDK EULA - 2008","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-air-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-air-sdk.LICENSE", +"adobe-air-sdk-2014","Adobe Air SDK EULA - 2014","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-air-sdk-2014.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-air-sdk-2014.LICENSE", +"adobe-eula","Adobe EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-eula.LICENSE", +"adobe-flash-player-eula-21.0","Adobe Flash Player EULA 21.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-flash-player-eula-21.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-flash-player-eula-21.0.LICENSE", +"adobe-flex-4-sdk","Adobe Flex 4 SDK SLA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-flex-4-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-flex-4-sdk.LICENSE", +"adobe-flex-sdk","Adobe Flex SDK SLA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-flex-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-flex-sdk.LICENSE", +"adobe-general-tou","Adobe General TOU","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-general-tou.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-general-tou.LICENSE", +"adobe-indesign-sdk","Adobe InDesign SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-indesign-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-indesign-sdk.LICENSE", +"adobe-postscript","Adobe PostScript License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-postscript.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/adobe-postscript.LICENSE", +"afpl-9.0","Aladdin FPL v9","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/afpl-9.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/afpl-9.0.LICENSE", +"agere-bsd","Agere BSD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/agere-bsd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/agere-bsd.LICENSE", +"agere-sla","Agere WindModem EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/agere-sla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/agere-sla.LICENSE", +"agpl-2.0","AGPL 2.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/agpl-2.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/agpl-2.0.LICENSE", +"alexisisaac-freeware","Alexisisaac Freeware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/alexisisaac-freeware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/alexisisaac-freeware.LICENSE", +"altova-eula","Altova EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/altova-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/altova-eula.LICENSE", +"amazon-redshift-jdbc","Amazon Redshift JDBC Driver License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/amazon-redshift-jdbc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/amazon-redshift-jdbc.LICENSE", +"amazon-sl","Amazon Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/amazon-sl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/amazon-sl.LICENSE", +"android-sdk-2012","Android SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/android-sdk-2012.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/android-sdk-2012.LICENSE", +"android-sdk-license","Android SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/android-sdk-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/android-sdk-license.LICENSE", +"android-sdk-preview-2015","Android SDK Preview License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/android-sdk-preview-2015.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/android-sdk-preview-2015.LICENSE", +"anu-license","ANU License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/anu-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/anu-license.LICENSE", +"apache-2.0-linking-exception","Apache 2.0 with Linking Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apache-2.0-linking-exception.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apache-2.0-linking-exception.LICENSE", +"apache-2.0-runtime-library-exception","Apache 2.0 with Runtime Library Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apache-2.0-runtime-library-exception.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apache-2.0-runtime-library-exception.LICENSE", +"apache-due-credit","Apache Due Credit Variant","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apache-due-credit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apache-due-credit.LICENSE", +"apple-attribution","Apple Attribution License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-attribution.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-attribution.LICENSE", +"apple-attribution-1997","Apple Attribution 1997","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-attribution-1997.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-attribution-1997.LICENSE", +"apple-excl","Apple Example Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-excl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-excl.LICENSE", +"apple-mpeg-4","Apple MPEG-4 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-mpeg-4.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-mpeg-4.LICENSE", +"apple-sscl","Apple Sample Source Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-sscl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/apple-sscl.LICENSE", +"aptana-1.0","Aptana 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aptana-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aptana-1.0.LICENSE", +"aravindan-premkumar","Aravindan Premkumar Licenase","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aravindan-premkumar.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aravindan-premkumar.LICENSE", +"argouml","ArgoUML License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/argouml.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/argouml.LICENSE", +"arm-cortex-mx","ARM Cortex-Mx Proprietary","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/arm-cortex-mx.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/arm-cortex-mx.LICENSE", +"arm-llvm-sga","ARM LLVM Grant","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/arm-llvm-sga.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/arm-llvm-sga.LICENSE", +"arphic-public","Arphic Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/arphic-public.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/arphic-public.LICENSE", +"aslp","Artop ASLP","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aslp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aslp.LICENSE", +"aslr","Artop ASLR","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aslr.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/aslr.LICENSE", +"asmus","ASMUS License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/asmus.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/asmus.LICENSE", +"asn1","ASN.1 Object Dumping Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/asn1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/asn1.LICENSE", +"ati-eula","ATI Software EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ati-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ati-eula.LICENSE", +"atmel-firmware","Atmel Firmware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/atmel-firmware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/atmel-firmware.LICENSE", +"autoit-eula","Autoit EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/autoit-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/autoit-eula.LICENSE", +"baekmuk-fonts","Baekmuk Fonts License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/baekmuk-fonts.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/baekmuk-fonts.LICENSE", +"bea-2.1","BEA 2.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bea-2.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bea-2.1.LICENSE", +"beal-screamer","Beal Screamer License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/beal-screamer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/beal-screamer.LICENSE", +"bigdigits","BigDigits License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bigdigits.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bigdigits.LICENSE", +"bigelow-holmes","Bigelow & Holmes Lucida Fonts License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bigelow-holmes.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bigelow-holmes.LICENSE", +"biopython","Biopython License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/biopython.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/biopython.LICENSE", +"bitstream","Bitstream Vera Font License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bitstream.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bitstream.LICENSE", +"bittorrent-1.2","BitTorrent 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bittorrent-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bittorrent-1.2.LICENSE", +"bittorrent-eula","BitTorrent EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bittorrent-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bittorrent-eula.LICENSE", +"bitzi-pd","Bitzi-PD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bitzi-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bitzi-pd.LICENSE", +"bloomberg-blpapi","Bloomberg BLPAPI License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bloomberg-blpapi.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bloomberg-blpapi.LICENSE", +"boost-original","Boost Original","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/boost-original.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/boost-original.LICENSE", +"bpel4ws-spec","BPEL4WS Specification license","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bpel4ws-spec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bpel4ws-spec.LICENSE", +"bpmn-io","bpmn.io License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bpmn-io.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bpmn-io.LICENSE", +"brad-martinez-vb-32","Brad Martinez VB-32 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brad-martinez-vb-32.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brad-martinez-vb-32.LICENSE", +"brent-corkum","Brent Corkum License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brent-corkum.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brent-corkum.LICENSE", +"brian-clapper","Brian Clapper License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-clapper.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-clapper.LICENSE", +"brian-gladman","Brian Gladman License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-gladman.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-gladman.LICENSE", +"brian-gladman-3-clause","Brian Gladman 3-Clause License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-gladman-3-clause.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-gladman-3-clause.LICENSE", +"brian-gladman-dual","Brian Gladman Dual BSD-GPL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-gladman-dual.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brian-gladman-dual.LICENSE", +"broadcom-cfe","Broadcom CFE License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-cfe.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-cfe.LICENSE", +"broadcom-commercial","Broadcom Commercial Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-commercial.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-commercial.LICENSE", +"broadcom-confidential","Broadcom Confidential","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-confidential.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-confidential.LICENSE", +"broadcom-linux-timer","Broadcom Warranty Disclaimer","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-linux-timer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-linux-timer.LICENSE", +"broadcom-proprietary","Broadcom Proprietary","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-proprietary.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-proprietary.LICENSE", +"broadcom-standard-terms","Broadcom Standard Terms","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-standard-terms.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-standard-terms.LICENSE", +"broadcom-unpublished-source","Broadcom Unpublished Source License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-unpublished-source.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-unpublished-source.LICENSE", +"broadcom-wiced","Broadcom WICED SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-wiced.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/broadcom-wiced.LICENSE", +"brocade-firmware","Brocade Firmware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brocade-firmware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/brocade-firmware.LICENSE", +"bruno-podetti","Bruno Podetti License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bruno-podetti.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bruno-podetti.LICENSE", +"bsd-1988","BSD 1988","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-1988.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-1988.LICENSE", +"bsd-2-clause-plus-advertizing","BSD-2-Clause-plus-advertizing","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-2-clause-plus-advertizing.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-2-clause-plus-advertizing.LICENSE", +"bsd-ack-carrot2","BSD Acknowledgment (Carrot2) License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-ack-carrot2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-ack-carrot2.LICENSE", +"bsd-axis","BSD-Axis","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-axis.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-axis.LICENSE", +"bsd-credit","BSD-Credit","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-credit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-credit.LICENSE", +"bsd-dpt","BSD DPT","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-dpt.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-dpt.LICENSE", +"bsd-export","BSD-Export","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-export.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-export.LICENSE", +"bsd-innosys","BSD-InnoSys","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-innosys.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-innosys.LICENSE", +"bsd-intel","BSD Intel License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-intel.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-intel.LICENSE", +"bsd-new-derivative","BSD-Derivative","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-new-derivative.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-new-derivative.LICENSE", +"bsd-new-far-manager","BSD-Modified with Far Manager exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-new-far-manager.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-new-far-manager.LICENSE", +"bsd-no-mod","Madwifi License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-no-mod.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-no-mod.LICENSE", +"bsd-original-uc-1986","BSD-Original-UC-1986","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-original-uc-1986.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-original-uc-1986.LICENSE", +"bsd-original-uc-1990","BSD-Original-UC-1990","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-original-uc-1990.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-original-uc-1990.LICENSE", +"bsd-plus-mod-notice","BSD plus modification notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-plus-mod-notice.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-plus-mod-notice.LICENSE", +"bsd-plus-patent","BSD plus Patent","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-plus-patent.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-plus-patent.LICENSE", +"bsd-simplified-darwin","BSD Simplified Darwin","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-simplified-darwin.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-simplified-darwin.LICENSE", +"bsd-simplified-source","BSD-Simplified source","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-simplified-source.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-simplified-source.LICENSE", +"bsd-top","BSD-Top","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-top.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-top.LICENSE", +"bsd-unchanged","BSD Unchanged","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-unchanged.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsd-unchanged.LICENSE", +"bsdi-license","BSDI License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsdi-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsdi-license.LICENSE", +"bsl-1.0","Business Source License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsl-1.0.LICENSE", +"bsla","BSLA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bsla.LICENSE", +"bugsense-sdk","BugSense SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bugsense-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bugsense-sdk.LICENSE", +"bytemark","BYTEmark License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bytemark.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/bytemark.LICENSE", +"careware","Careware","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/careware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/careware.LICENSE", +"carnegie-mellon","Carnegie Mellon License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/carnegie-mellon.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/carnegie-mellon.LICENSE", +"carnegie-mellon-contributors","Carnegie Mellon Contributors","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/carnegie-mellon-contributors.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/carnegie-mellon-contributors.LICENSE", +"cavium-malloc","Cavium malloc License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cavium-malloc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cavium-malloc.LICENSE", +"cavium-targeted-hardware","Cavium Targeted Hardware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cavium-targeted-hardware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cavium-targeted-hardware.LICENSE", +"cc-by-2.0-uk","CC-BY-2.0-UK","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cc-by-2.0-uk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cc-by-2.0-uk.LICENSE", +"cc-by-nc-nd-2.0-au","CC-BY-NC-ND-2.0-AU","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cc-by-nc-nd-2.0-au.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cc-by-nc-nd-2.0-au.LICENSE", +"cc-pd","CC-PD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cc-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cc-pd.LICENSE", +"cgic","CGIC License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cgic.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cgic.LICENSE", +"chartdirector-6.0","ChartDirector 6.0 License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/chartdirector-6.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/chartdirector-6.0.LICENSE", +"chris-maunder","Chris Maunder License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/chris-maunder.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/chris-maunder.LICENSE", +"chris-stoy","Chris Stoy Attribution License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/chris-stoy.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/chris-stoy.LICENSE", +"christopher-velazquez","Christopher Velazquez License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/christopher-velazquez.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/christopher-velazquez.LICENSE", +"classic-vb","Classic VB License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/classic-vb.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/classic-vb.LICENSE", +"cloudera-express","Cloudera Express License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cloudera-express.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cloudera-express.LICENSE", +"cmigemo","C/Migemo License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmigemo.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmigemo.LICENSE", +"cmr-no","CMR License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmr-no.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmr-no.LICENSE", +"cmu-computing-services","CMU Computing Services License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-computing-services.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-computing-services.LICENSE", +"cmu-mit","CMU MIT-style","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-mit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-mit.LICENSE", +"cmu-simple","CMU Simple License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-simple.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-simple.LICENSE", +"cmu-template","CMU License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-template.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cmu-template.LICENSE", +"codeguru-permissions","CodeGuru Permissions","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/codeguru-permissions.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/codeguru-permissions.LICENSE", +"codexia","Codexia License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/codexia.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/codexia.LICENSE", +"cognitive-web-osl-1.1","CognitiveWeb Open Source License 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cognitive-web-osl-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cognitive-web-osl-1.1.LICENSE", +"colt","Colt License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/colt.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/colt.LICENSE", +"com-oreilly-servlet","com.oreilly.servlet License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/com-oreilly-servlet.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/com-oreilly-servlet.LICENSE","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/warranty-disclaimer.LICENSE" +"commercial-license","Commercial License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/commercial-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/commercial-license.LICENSE", +"commercial-option","Commercial Option","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/commercial-option.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/commercial-option.LICENSE", +"commonj-timer","CommonJ Timer License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/commonj-timer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/commonj-timer.LICENSE", +"compass","Compass License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/compass.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/compass.LICENSE", +"copyleft-next-0.3.0","copyleft-next 0.3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/copyleft-next-0.3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/copyleft-next-0.3.0.LICENSE", +"copyleft-next-0.3.1","copyleft-next 0.3.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/copyleft-next-0.3.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/copyleft-next-0.3.1.LICENSE", +"cosl","Cougaar Open Source License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cosl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cosl.LICENSE", +"couchbase-community","Couchbase Community Edition License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/couchbase-community.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/couchbase-community.LICENSE", +"couchbase-enterprise","Couchbase Enterprise Edition License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/couchbase-enterprise.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/couchbase-enterprise.LICENSE", +"cpl-0.5","CPL 0.5","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cpl-0.5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cpl-0.5.LICENSE", +"crapl-0.1","CRAPL v0 BETA 1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/crapl-0.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/crapl-0.1.LICENSE", +"crypto-keys-redistribution","Cryptograpic keys redistribution","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/crypto-keys-redistribution.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/crypto-keys-redistribution.LICENSE", +"cryptopp","Crypto++ License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cryptopp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cryptopp.LICENSE", +"csla","CSLA License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/csla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/csla.LICENSE", +"cups","CUPS License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cups.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cups.LICENSE", +"cximage","CxImage License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cximage.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/cximage.LICENSE", +"d-fsl-1.0-en","German Free Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/d-fsl-1.0-en.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/d-fsl-1.0-en.LICENSE", +"d-zlib","D Zlib","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/d-zlib.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/d-zlib.LICENSE", +"damail","DAMAIL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/damail.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/damail.LICENSE", +"dante-treglia","Dante Treglia License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dante-treglia.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dante-treglia.LICENSE", +"day-spec","Day Specification License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/day-spec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/day-spec.LICENSE", +"dco-1.1","DCO 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dco-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dco-1.1.LICENSE", +"dejavu-font","DejaVu Font License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dejavu-font.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dejavu-font.LICENSE", +"dennis-ferguson","Dennis Ferguson License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dennis-ferguson.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dennis-ferguson.LICENSE", +"dhtmlab-public","dhtmlab Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dhtmlab-public.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dhtmlab-public.LICENSE", +"digia-qt-commercial","Digia Qt Commercial","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/digia-qt-commercial.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/digia-qt-commercial.LICENSE", +"digia-qt-preview","Digia Qt Preview Agreement 2.4","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/digia-qt-preview.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/digia-qt-preview.LICENSE", +"divx-open-1.0","DivX Open License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/divx-open-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/divx-open-1.0.LICENSE", +"divx-open-2.1","DivX Open License 2.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/divx-open-2.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/divx-open-2.1.LICENSE", +"dmalloc","dmalloc License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dmalloc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dmalloc.LICENSE", +"docbook","Docbook License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/docbook.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/docbook.LICENSE", +"dom4j","Dom4j License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dom4j.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dom4j.LICENSE", +"doug-lea","Doug Lea License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/doug-lea.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/doug-lea.LICENSE", +"douglas-young","Douglas Young License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/douglas-young.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/douglas-young.LICENSE", +"dpl-1.1","DPL-1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dpl-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dpl-1.1.LICENSE", +"dr-john-maddock","Dr John Maddock License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dr-john-maddock.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dr-john-maddock.LICENSE", +"dtree","Dtree License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dtree.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dtree.LICENSE", +"dual-bsd-gpl","Dual BSD-GPL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dual-bsd-gpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dual-bsd-gpl.LICENSE", +"dynamic-drive-tou","Dynamic Drive TOU","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dynamic-drive-tou.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dynamic-drive-tou.LICENSE", +"dynarch-developer","Dynarch Developer Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dynarch-developer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dynarch-developer.LICENSE", +"dynarch-linkware","Dynarch Linkware Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dynarch-linkware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/dynarch-linkware.LICENSE", +"ecosrh-1.0","Cygnus eCos Public License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ecosrh-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ecosrh-1.0.LICENSE", +"ej-technologies-eula","ej-technologies EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ej-technologies-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ej-technologies-eula.LICENSE", +"ekioh","Ekioh License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ekioh.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ekioh.LICENSE", +"elib-gpl","GPL-Elib","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/elib-gpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/elib-gpl.LICENSE", +"ellis-lab","EllisLab License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ellis-lab.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ellis-lab.LICENSE", +"emx-library","EMX Library License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/emx-library.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/emx-library.LICENSE", +"energyplus-bsd","EnergyPlus BSD-Style License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/energyplus-bsd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/energyplus-bsd.LICENSE", +"enhydra-1.1","Enhydra 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/enhydra-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/enhydra-1.1.LICENSE", +"epics","EPICS Open License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/epics.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/epics.LICENSE", +"epo-osl-2005.1","EPO-OSL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/epo-osl-2005.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/epo-osl-2005.1.LICENSE", +"esri","Esri License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/esri.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/esri.LICENSE", +"esri-devkit","Esri Developer Kit License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/esri-devkit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/esri-devkit.LICENSE", +"eupl-1.2","EUPL 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/eupl-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/eupl-1.2.LICENSE", +"examdiff","ExamDiff License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/examdiff.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/examdiff.LICENSE", +"excelsior-jet-runtime","Excelsior JET Runtime License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/excelsior-jet-runtime.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/excelsior-jet-runtime.LICENSE", +"fabien-tassin","Fabien Tassin License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fabien-tassin.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fabien-tassin.LICENSE", +"facebook-nuclide","Facebook Nuclide Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/facebook-nuclide.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/facebook-nuclide.LICENSE", +"facebook-patent-rights-2","Facebook Patent Rights 2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/facebook-patent-rights-2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/facebook-patent-rights-2.LICENSE", +"facebook-software-license","Facebook Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/facebook-software-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/facebook-software-license.LICENSE", +"fancyzoom","FancyZoom License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fancyzoom.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fancyzoom.LICENSE", +"filament-group-mit","Filament Group MIT License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/filament-group-mit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/filament-group-mit.LICENSE", +"first-works-appreciative-1.2","First Works Appreciative License 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/first-works-appreciative-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/first-works-appreciative-1.2.LICENSE", +"flex-2.5","Flex 2.5","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/flex-2.5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/flex-2.5.LICENSE", +"flex2sdk","Adobe Flex 2.0.1 SDK EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/flex2sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/flex2sdk.LICENSE", +"flowplayer-gpl-3.0","Flowplayer GPL 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/flowplayer-gpl-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/flowplayer-gpl-3.0.LICENSE", +"foobar2000","foobar2000 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/foobar2000.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/foobar2000.LICENSE", +"fpl","Freeware Public License (FPL)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fpl.LICENSE", +"fplot","FPLOT LIcense","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fplot.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fplot.LICENSE", +"fraunhofer-fdk-aac-codec","Fraunhofer FDK AAC Codec Library for Android","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fraunhofer-fdk-aac-codec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fraunhofer-fdk-aac-codec.LICENSE", +"fraunhofer-iso-14496-10","Fraunhofer ISO 14496-10 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fraunhofer-iso-14496-10.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fraunhofer-iso-14496-10.LICENSE", +"free-art-1.3","FAL 1.3","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/free-art-1.3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/free-art-1.3.LICENSE", +"free-fork","Free-Fork License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/free-fork.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/free-fork.LICENSE", +"free-unknown","Free unknown","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/free-unknown.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/free-unknown.LICENSE", +"freebsd-boot","FreeBSD Boot","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/freebsd-boot.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/freebsd-boot.LICENSE", +"freemarker","FreeMarker License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/freemarker.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/freemarker.LICENSE", +"freetts","FreeTTS License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/freetts.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/freetts.LICENSE", +"frontier-1.0","Frontier Artistic License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/frontier-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/frontier-1.0.LICENSE", +"fsf-mit","FSF-MIT","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fsf-mit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/fsf-mit.LICENSE", +"ftdi","FTDI License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ftdi.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ftdi.LICENSE", +"ftpbean","FtpBean License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ftpbean.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ftpbean.LICENSE", +"gareth-mccaughan","Gareth McCaughan License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gareth-mccaughan.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gareth-mccaughan.LICENSE", +"gary-s-brown","Gary S. Brown License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gary-s-brown.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gary-s-brown.LICENSE", +"gdcl","GDCL License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gdcl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gdcl.LICENSE", +"generic-cla","Generic CLA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/generic-cla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/generic-cla.LICENSE", +"genivia-gsoap","Genivia Proprietary","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/genivia-gsoap.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/genivia-gsoap.LICENSE", +"ghostscript-1988","Ghostscript General Public License 1988","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ghostscript-1988.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ghostscript-1988.LICENSE", +"glut","GLUT License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/glut.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/glut.LICENSE", +"google-analytics-tos","Google Analytics Terms of Service","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-analytics-tos.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-analytics-tos.LICENSE", +"google-analytics-tos-2015","Google Analytics Terms of Service 2015","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-analytics-tos-2015.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-analytics-tos-2015.LICENSE", +"google-patent-license","Google Patent License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-patent-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-patent-license.LICENSE", +"google-patent-license-fuschia","Google Patent License for Fuschia","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-patent-license-fuschia.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-patent-license-fuschia.LICENSE", +"google-patent-license-webm","Google Patent License for WebM","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-patent-license-webm.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-patent-license-webm.LICENSE", +"google-tos-2013","Google TOS 2013","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-tos-2013.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/google-tos-2013.LICENSE", +"gpl-2.0-adaptec","GPL 2.0 plus Adaptec conditions","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-adaptec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-adaptec.LICENSE", +"gpl-2.0-autoopts","GPL 2.0 with AutoOpts exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-autoopts.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-autoopts.LICENSE", +"gpl-2.0-bison-2.2","GPL 2.0 with Bison 2.2 exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-bison-2.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-bison-2.2.LICENSE", +"gpl-2.0-broadcom-linking","GPL 2.0 with Broadcom Linking Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-broadcom-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-broadcom-linking.LICENSE", +"gpl-2.0-cygwin","GPL 2.0 with cygwin exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-cygwin.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-cygwin.LICENSE", +"gpl-2.0-freertos","GPL 2.0 with FreeRTOS exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-freertos.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-freertos.LICENSE", +"gpl-2.0-gcc-compiler-exception","GPL 2.0 with GCC compiler exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-gcc-compiler-exception.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-gcc-compiler-exception.LICENSE", +"gpl-2.0-glibc","GPL 2.0 with GLIBC exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-glibc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-glibc.LICENSE", +"gpl-2.0-guile","GPL 2.0 with GUILE exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-guile.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-guile.LICENSE", +"gpl-2.0-ice","GPL 2.0 with Ice exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-ice.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-ice.LICENSE", +"gpl-2.0-independent-module-linking","GPL 2.0 with Independent Module Linking exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-independent-module-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-independent-module-linking.LICENSE", +"gpl-2.0-iolib","GPL 2.0 with GNU IO Library exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-iolib.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-iolib.LICENSE", +"gpl-2.0-iso-cpp","GPL 2.0 with ISO C++ Library exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-iso-cpp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-iso-cpp.LICENSE", +"gpl-2.0-javascript","GPL 2.0 with Javascript exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-javascript.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-javascript.LICENSE", +"gpl-2.0-kernel","GPL 2.0 with Kernel exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-kernel.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-kernel.LICENSE", +"gpl-2.0-koterov","GPL 2.0 with Dmitry Koterov additions","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-koterov.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-koterov.LICENSE", +"gpl-2.0-library","GPL 2.0 with Library exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-library.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-library.LICENSE", +"gpl-2.0-libtool","GPL 2.0 with GNU Libtool exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-libtool.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-libtool.LICENSE", +"gpl-2.0-lmbench","GPL 2.0 with LMBench exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-lmbench.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-lmbench.LICENSE", +"gpl-2.0-mysql-connector-odbc","GPL 2.0 with MySQL Connector ODBC exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-mysql-connector-odbc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-mysql-connector-odbc.LICENSE", +"gpl-2.0-mysql-floss","GPL 2.0 with MySQL FLOSS exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-mysql-floss.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-mysql-floss.LICENSE", +"gpl-2.0-openjdk","GPL 2.0 with OpenJDK classpath exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-openjdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-openjdk.LICENSE", +"gpl-2.0-openssl","GPL 2.0 with OpenSSL exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-openssl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-openssl.LICENSE", +"gpl-2.0-oracle-mysql-foss","GPL 2.0 with Oracle MySQL FOSS exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-oracle-mysql-foss.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-oracle-mysql-foss.LICENSE", +"gpl-2.0-oracle-openjdk","GPL 2.0 with Oracle OpenJDK classpath exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-oracle-openjdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-oracle-openjdk.LICENSE", +"gpl-2.0-plus-ada","GPL 2.0 or later with Ada exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-ada.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-ada.LICENSE", +"gpl-2.0-plus-ekiga","GPL 2.0 or later with Ekiga exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-ekiga.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-ekiga.LICENSE", +"gpl-2.0-plus-gcc","GPL 2.0 or later with GCC exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-gcc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-gcc.LICENSE", +"gpl-2.0-plus-geoserver","GPL 2.0 or later with GeoServer exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-geoserver.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-geoserver.LICENSE", +"gpl-2.0-plus-linking","GPL 2.0 or later with Linking exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-linking.LICENSE", +"gpl-2.0-plus-nant","GPL 2.0 or later with NAnt exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-nant.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-nant.LICENSE", +"gpl-2.0-plus-openmotif","GPL 2.0 or later with Open Motif exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-openmotif.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-openmotif.LICENSE", +"gpl-2.0-plus-subcommander","GPL 2.0 or later with Subcommander exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-subcommander.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-subcommander.LICENSE", +"gpl-2.0-plus-syntext","GPL 2.0 or later with Syntext exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-syntext.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-syntext.LICENSE", +"gpl-2.0-plus-upx","GPL 2.0 or later with UPX exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-upx.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-plus-upx.LICENSE", +"gpl-2.0-proguard","GPL 2.0 with ProGuard exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-proguard.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-proguard.LICENSE", +"gpl-2.0-qt-qca","GPL 2.0 with Qt-QCA exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-qt-qca.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-qt-qca.LICENSE", +"gpl-2.0-redhat","GPL 2.0 with Fedora Red Hat exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-redhat.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-redhat.LICENSE", +"gpl-2.0-rrdtool-floss","GPL 2.0 with RRDtool FLOSS Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-rrdtool-floss.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-rrdtool-floss.LICENSE", +"gpl-2.0-uboot","GPL 2.0 with U-Boot exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-uboot.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-2.0-uboot.LICENSE", +"gpl-3.0-aptana","GPL 3.0 with Aptana exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-aptana.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-aptana.LICENSE", +"gpl-3.0-bison","GPL 3.0 or later with Bison exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-bison.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-bison.LICENSE", +"gpl-3.0-cygwin","GPL 3.0 or later with cygwin exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-cygwin.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-cygwin.LICENSE", +"gpl-3.0-font","GPL 3.0 or later with Font exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-font.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-font.LICENSE", +"gpl-3.0-plus-openssl","GPL 3.0 or later with OpenSSL exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-plus-openssl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gpl-3.0-plus-openssl.LICENSE", +"graphics-gems","Graphics Gems License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/graphics-gems.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/graphics-gems.LICENSE", +"greg-roelofs","Greg Roelofs License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/greg-roelofs.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/greg-roelofs.LICENSE", +"gregory-pietsch","Gregory Pietsch Liberal License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gregory-pietsch.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gregory-pietsch.LICENSE", +"gsoap-1.3a","gSOAP Public License v1.3a","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gsoap-1.3a.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gsoap-1.3a.LICENSE", +"gust-font-1.0","GUST Font License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gust-font-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gust-font-1.0.LICENSE", +"gust-font-2006-09-30","GUST Font License 2006-09-30","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gust-font-2006-09-30.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/gust-font-2006-09-30.LICENSE", +"hacos-1.2","HACOS 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hacos-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hacos-1.2.LICENSE", +"hauppauge-firmware-eula","Hauppauge Firmware EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hauppauge-firmware-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hauppauge-firmware-eula.LICENSE", +"hauppauge-firmware-oem","Hauppauge Firmware OEM License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hauppauge-firmware-oem.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hauppauge-firmware-oem.LICENSE", +"hdparm","HDPARM License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hdparm.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hdparm.LICENSE", +"helios-eula","Helios","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/helios-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/helios-eula.LICENSE", +"helix","Helix DNA License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/helix.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/helix.LICENSE", +"hidapi","HIDAPI License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hidapi.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hidapi.LICENSE", +"hp","HP Non-Commercial License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp.LICENSE", +"hp-enterprise-eula","HP Enterprise EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-enterprise-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-enterprise-eula.LICENSE", +"hp-netperf","HP Netperf License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-netperf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-netperf.LICENSE", +"hp-proliant-essentials","hp-proliant-essentials","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-proliant-essentials.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-proliant-essentials.LICENSE", +"hp-software-eula","HP Software EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-software-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-software-eula.LICENSE", +"hp-ux-java","HP-UX 11i Java Technology Software","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-ux-java.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-ux-java.LICENSE", +"hp-ux-jre","HP JRE License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-ux-jre.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hp-ux-jre.LICENSE", +"hs-regexp-orig","Henry Spencer Original Regexp License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hs-regexp-orig.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hs-regexp-orig.LICENSE", +"hxd","HxD License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hxd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/hxd.LICENSE", +"ian-kaplan","Ian Kaplan License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ian-kaplan.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ian-kaplan.LICENSE", +"ian-piumarta","Ian Piumarta License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ian-piumarta.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ian-piumarta.LICENSE", +"ibm-as-is","IBM AS-IS License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-as-is.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-as-is.LICENSE", +"ibm-developerworks-community-download","IBM developerWorks Community Download Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-developerworks-community-download.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-developerworks-community-download.LICENSE", +"ibm-dhcp","IBM DHCP License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-dhcp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-dhcp.LICENSE", +"ibm-jre","IBM JRE License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-jre.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-jre.LICENSE", +"ibm-nwsc","IBM Non-Warranted Sample Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-nwsc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-nwsc.LICENSE", +"ibm-sample","IBM Sample License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-sample.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibm-sample.LICENSE", +"ibpp","IBPP License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibpp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ibpp.LICENSE", +"idt-notice","IDT License Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/idt-notice.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/idt-notice.LICENSE", +"ietf","IETF License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ietf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ietf.LICENSE", +"ietf-trust","IETF Trust License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ietf-trust.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ietf-trust.LICENSE", +"ilmid","ilmid License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ilmid.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ilmid.LICENSE", +"imagen","IMAGEN License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/imagen.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/imagen.LICENSE", +"indiana-extreme","Indiana Extreme License 1.1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/indiana-extreme.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/indiana-extreme.LICENSE", +"infineon-free","Infineon Free Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/infineon-free.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/infineon-free.LICENSE", +"info-zip-1997-10","Info-Zip License 1997-10","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-1997-10.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-1997-10.LICENSE", +"info-zip-2001-01","Info-Zip License 2001-01","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2001-01.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2001-01.LICENSE", +"info-zip-2002-02","Info-Zip License 2002-02","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2002-02.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2002-02.LICENSE", +"info-zip-2003-05","Info-Zip License 2003-05","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2003-05.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2003-05.LICENSE", +"info-zip-2004-05","Info-Zip License 2004-05","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2004-05.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2004-05.LICENSE", +"info-zip-2005-02","Info-Zip License 2005-02","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2005-02.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2005-02.LICENSE", +"info-zip-2007-03","Info-Zip License 2007-03","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2007-03.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2007-03.LICENSE", +"info-zip-2009-01","Info-Zip License 2009-01","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2009-01.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/info-zip-2009-01.LICENSE", +"infonode-1.1","InfoNode Software License 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/infonode-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/infonode-1.1.LICENSE", +"initial-developer-public","Initial Developer Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/initial-developer-public.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/initial-developer-public.LICENSE", +"inner-net-2.0","Inner Net 2.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/inner-net-2.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/inner-net-2.0.LICENSE", +"inno-setup","Inno Setup License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/inno-setup.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/inno-setup.LICENSE", +"installsite","InstallSite License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/installsite.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/installsite.LICENSE", +"intel-bcl","Intel BCL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-bcl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-bcl.LICENSE", +"intel-bsd","Intel BSD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-bsd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-bsd.LICENSE", +"intel-code-samples","Intel Code Samples License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-code-samples.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-code-samples.LICENSE", +"intel-confidential","Intel Confidential","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-confidential.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-confidential.LICENSE", +"intel-firmware","Intel Firmware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-firmware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-firmware.LICENSE", +"intel-master-eula-sw-dev-2016","Intel Master EULA for SW Dev 2016","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-master-eula-sw-dev-2016.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-master-eula-sw-dev-2016.LICENSE", +"intel-material","Intel Material License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-material.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-material.LICENSE", +"intel-osl-1989","Intel OSL 1989","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-osl-1989.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-osl-1989.LICENSE", +"intel-royalty-free","Intel Royalty Free License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-royalty-free.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-royalty-free.LICENSE", +"intel-scl","Intel Source Code License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-scl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/intel-scl.LICENSE", +"iozone","IOzone License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iozone.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iozone.LICENSE", +"irfanview-eula","IrfanView EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/irfanview-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/irfanview-eula.LICENSE", +"iso-14496-10","ISO 14496-10","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iso-14496-10.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iso-14496-10.LICENSE", +"iso-8879","ISO 8879","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iso-8879.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iso-8879.LICENSE", +"iso-recorder","ISO Recorder License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iso-recorder.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/iso-recorder.LICENSE", +"isotope-cla","Isotope Commercial License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/isotope-cla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/isotope-cla.LICENSE", +"itc-eula","ITC EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itc-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itc-eula.LICENSE", +"itu","ITU License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itu.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itu.LICENSE", +"itu-t","ITU-T License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itu-t.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itu-t.LICENSE", +"itunes","Apple iTunes License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itunes.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/itunes.LICENSE", +"ja-sig","JA-SiG License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ja-sig.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ja-sig.LICENSE", +"jahia-1.3.1","JCSL 1.3.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jahia-1.3.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jahia-1.3.1.LICENSE", +"jam","Jam License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jam.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jam.LICENSE", +"jamon","JAMon License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jamon.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jamon.LICENSE", +"jason-mayes","Jason Mayes License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jason-mayes.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jason-mayes.LICENSE", +"jasper-1.0","Jasper 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jasper-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jasper-1.0.LICENSE", +"java-app-stub","Java App Stub License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/java-app-stub.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/java-app-stub.LICENSE", +"java-research-1.5","Java Research License 1.5","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/java-research-1.5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/java-research-1.5.LICENSE", +"jboss-eula","JBoss EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jboss-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jboss-eula.LICENSE", +"jdom","JDOM License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jdom.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jdom.LICENSE", +"jetbrains-purchase-terms","JetBrains Purchase Terms","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jetbrains-purchase-terms.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jetbrains-purchase-terms.LICENSE", +"jetbrains-toolbox-open-source-3","JetBrains Toolbox Open Source License v3","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jetbrains-toolbox-open-source-3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jetbrains-toolbox-open-source-3.LICENSE", +"jetty","Jetty License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jetty.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jetty.LICENSE", +"jgraph","JGraph License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jgraph.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jgraph.LICENSE", +"jgraph-general","JGraph General License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jgraph-general.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jgraph-general.LICENSE", +"jide-sla","JIDE SLA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jide-sla.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jide-sla.LICENSE", +"jj2000","JJ2000 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jj2000.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jj2000.LICENSE", +"jmagnetic","JMagnetic License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jmagnetic.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jmagnetic.LICENSE", +"josl-1.0","Jabber 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/josl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/josl-1.0.LICENSE", +"jpython-1.1","JPython 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jpython-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jpython-1.1.LICENSE", +"jquery-pd","jQuery-Tools-PD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jquery-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jquery-pd.LICENSE", +"jrunner","JRunner License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jrunner.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jrunner.LICENSE", +"jsfromhell","JSFromHell License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jsfromhell.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jsfromhell.LICENSE", +"json-js-pd","JSON-js-PD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/json-js-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/json-js-pd.LICENSE", +"json-pd","JSON-PD","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/json-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/json-pd.LICENSE", +"jsr-107-jcache-spec","JSR-107 JCache Specification License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jsr-107-jcache-spec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jsr-107-jcache-spec.LICENSE", +"jython","Jython License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jython.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/jython.LICENSE", +"kalle-kaukonen","Kalle Kaukonen License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/kalle-kaukonen.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/kalle-kaukonen.LICENSE", +"karl-peterson","Karl Peterson License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/karl-peterson.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/karl-peterson.LICENSE", +"keith-rule","Keith Rule License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/keith-rule.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/keith-rule.LICENSE", +"kerberos","Kerberos License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/kerberos.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/kerberos.LICENSE", +"kevlin-henney","Kevlin Henney License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/kevlin-henney.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/kevlin-henney.LICENSE", +"khronos","Khronos License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/khronos.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/khronos.LICENSE", +"larabie","Larabie Fonts EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/larabie.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/larabie.LICENSE", +"lavantech","LavanTech License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lavantech.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lavantech.LICENSE", +"lcs-telegraphics","LCS-Telegraphics License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lcs-telegraphics.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lcs-telegraphics.LICENSE", +"ldap-sdk-free-use","UnboundID LDAP SDK Free Use License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ldap-sdk-free-use.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ldap-sdk-free-use.LICENSE", +"lgpl-2.0-fltk","LGPL 2.0 with FLTK exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.0-fltk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.0-fltk.LICENSE", +"lgpl-2.0-plus-gcc","LGPL 2.0 or later with GCC exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.0-plus-gcc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.0-plus-gcc.LICENSE", +"lgpl-2.1-digia-qt","LGPL 2.1 with Digia Qt Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-digia-qt.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-digia-qt.LICENSE", +"lgpl-2.1-nokia-qt","LGPL 2.1 with Nokia Qt Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-nokia-qt.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-nokia-qt.LICENSE", +"lgpl-2.1-nokia-qt-1.0","Nokia Qt LGPL Exception 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-nokia-qt-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-nokia-qt-1.0.LICENSE", +"lgpl-2.1-nokia-qt-1.1","Nokia Qt LGPL Exception 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-nokia-qt-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-nokia-qt-1.1.LICENSE", +"lgpl-2.1-plus-linking","LGPL 2.1 or later with linking exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-plus-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-plus-linking.LICENSE", +"lgpl-2.1-plus-unlimited-linking","LGPL 2.1 or later with unlimited linking exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-plus-unlimited-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-plus-unlimited-linking.LICENSE", +"lgpl-2.1-qt-company","LGPL 2.1 with Qt Company Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-qt-company.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-qt-company.LICENSE", +"lgpl-2.1-rxtx","LGPL 2.1 with RXTX exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-rxtx.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-2.1-rxtx.LICENSE", +"lgpl-3-plus-linking","LGPL 3.0 or later with linking exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3-plus-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3-plus-linking.LICENSE", +"lgpl-3.0-cygwin","LGPL 3.0 or later with cygwin exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3.0-cygwin.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3.0-cygwin.LICENSE", +"lgpl-3.0-plus-openssl","LGPL 3.0 or later with OpenSSL exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3.0-plus-openssl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3.0-plus-openssl.LICENSE", +"lgpl-3.0-zeromq","LGPL 3.0 with zeromq exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3.0-zeromq.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lgpl-3.0-zeromq.LICENSE", +"libmib","LibMib License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libmib.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libmib.LICENSE", +"libpbm","PBM Library License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libpbm.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libpbm.LICENSE", +"libselinux-pd","libselinux License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libselinux-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libselinux-pd.LICENSE", +"libzip","libzip License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libzip.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/libzip.LICENSE", +"lilo","LILO License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lilo.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lilo.LICENSE", +"linotype-eula","Linotype EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linotype-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linotype-eula.LICENSE", +"linum","Linum Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linum.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linum.LICENSE", +"linux-device-drivers","Linux Device Drivers","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linux-device-drivers.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linux-device-drivers.LICENSE", +"linuxbios","LinuxBIOS License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linuxbios.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linuxbios.LICENSE", +"linuxhowtos","linuxhowtos License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linuxhowtos.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/linuxhowtos.LICENSE", +"llgpl","LLGPL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/llgpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/llgpl.LICENSE", +"llnl","LLNL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/llnl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/llnl.LICENSE", +"logica-1.0","Logica OSL 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/logica-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/logica-1.0.LICENSE", +"lsi-proprietary-eula","LSI Proprietary EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lsi-proprietary-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lsi-proprietary-eula.LICENSE", +"lumisoft-mail-server","LumiSoft Mail Server License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lumisoft-mail-server.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lumisoft-mail-server.LICENSE", +"luxi","Bigelow & Holmes Luxi fonts license","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/luxi.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/luxi.LICENSE", +"lyubinskiy-dropdown","Lyubinskiy dropdown License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lyubinskiy-dropdown.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lyubinskiy-dropdown.LICENSE", +"lyubinskiy-popup-window","Lyubinskiy popup-window License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lyubinskiy-popup-window.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lyubinskiy-popup-window.LICENSE", +"lzma-sdk-2006-exception","LZMA SDK 2006 Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-2006-exception.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-2006-exception.LICENSE", +"lzma-sdk-2008","LZMA SDK 2008","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-2008.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-2008.LICENSE", +"lzma-sdk-original","LZMA SDK Original","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-original.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-original.LICENSE", +"lzma-sdk-pd","LZMA SDK Public Domain","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/lzma-sdk-pd.LICENSE", +"mame","MAME license","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mame.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mame.LICENSE", +"martin-birgmeier","Martin Bergmeier License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/martin-birgmeier.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/martin-birgmeier.LICENSE", +"marvell-firmware","Marvell Firmware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/marvell-firmware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/marvell-firmware.LICENSE", +"matt-gallagher-attribution","Matt Gallagher Attribution License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/matt-gallagher-attribution.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/matt-gallagher-attribution.LICENSE", +"matthew-kwan","Matthew Kwan License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/matthew-kwan.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/matthew-kwan.LICENSE", +"mattkruse","Matt Kruse License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mattkruse.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mattkruse.LICENSE", +"mcafee-tou","McAfee Free License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mcafee-tou.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mcafee-tou.LICENSE", +"mediainfo-lib","MediaInfo(Lib) License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mediainfo-lib.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mediainfo-lib.LICENSE", +"melange","Melange Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/melange.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/melange.LICENSE", +"mentalis","Mentalis License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mentalis.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mentalis.LICENSE", +"metrolink-1.0","Metrolink 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/metrolink-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/metrolink-1.0.LICENSE", +"mgopen-font-license","MgOpen Font License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mgopen-font-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mgopen-font-license.LICENSE", +"michael-barr","Michael Barr License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/michael-barr.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/michael-barr.LICENSE", +"michigan-disclaimer","University of Michigan OSL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/michigan-disclaimer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/michigan-disclaimer.LICENSE", +"microsoft-enterprise-library-eula","MS Enterprise Library EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/microsoft-enterprise-library-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/microsoft-enterprise-library-eula.LICENSE", +"microsoft-windows-rally-devkit","MS Windows Rally Development Kit License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/microsoft-windows-rally-devkit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/microsoft-windows-rally-devkit.LICENSE", +"mike95","Mike95 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mike95.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mike95.LICENSE", +"mini-xml","LGPL 2.0 with Mini-XML exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mini-xml.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mini-xml.LICENSE", +"minpack","Minpack Copyright Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/minpack.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/minpack.LICENSE", +"mit-addition","MIT Addition License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-addition.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-addition.LICENSE", +"mit-license-1998","MIT License 1998","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-license-1998.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-license-1998.LICENSE", +"mit-modern","MIT Modern Variant","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-modern.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-modern.LICENSE", +"mit-no-advert-export-control","MIT no advertising with Export Control","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-no-advert-export-control.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-no-advert-export-control.LICENSE", +"mit-old-style","MIT Old Style","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-old-style.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-old-style.LICENSE", +"mit-old-style-no-advert","MIT Old Style no advertising","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-old-style-no-advert.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-old-style-no-advert.LICENSE", +"mit-open-group","MIT Open Group","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-open-group.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-open-group.LICENSE", +"mit-readme","MIT README License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-readme.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-readme.LICENSE", +"mit-specification-disclaimer","MIT with Specification Disclaimer","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-specification-disclaimer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-specification-disclaimer.LICENSE", +"mit-synopsys","MIT Synopsys License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-synopsys.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-synopsys.LICENSE", +"mit-taylor-variant","MIT Taylor Variant","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-taylor-variant.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-taylor-variant.LICENSE", +"mit-with-modification-obligations","MIT With Modification Obligations","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-with-modification-obligations.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-with-modification-obligations.LICENSE", +"mit-xfig","MIT Xfig Variant","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-xfig.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mit-xfig.LICENSE", +"mod-dav-1.0","mod_dav License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mod-dav-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mod-dav-1.0.LICENSE", +"monetdb-1.1","MonetDB 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/monetdb-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/monetdb-1.1.LICENSE", +"motorola","Motorola Microprocessor License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/motorola.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/motorola.LICENSE", +"mozilla-gc","Mozilla GC License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mozilla-gc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mozilla-gc.LICENSE", +"mozilla-ospl-1.0","Mozilla Open Software Patent License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mozilla-ospl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mozilla-ospl-1.0.LICENSE", +"mpeg-7","MPEG-7 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mpeg-7.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mpeg-7.LICENSE", +"mpeg-iso","MPEG-2 NBC MPEG-4 Audio ISO","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mpeg-iso.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mpeg-iso.LICENSE", +"mpeg-ssg","MPEG SSG License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mpeg-ssg.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mpeg-ssg.LICENSE", +"ms-asp-net-ajax-supplemental-terms","MS Supplemental License - ASP.NET 2.0 AJAX EXT","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-ajax-supplemental-terms.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-ajax-supplemental-terms.LICENSE", +"ms-asp-net-mvc3","MS ASP.NET MVC3","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-mvc3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-mvc3.LICENSE", +"ms-asp-net-mvc4","MS ASP.NET MVC4","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-mvc4.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-mvc4.LICENSE", +"ms-asp-net-mvc4-extensions","MS ASP.NET MVC 4 Extensions","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-mvc4-extensions.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-mvc4-extensions.LICENSE", +"ms-asp-net-software","MS ASP.NET Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-software.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-software.LICENSE", +"ms-asp-net-tools-pre-release","MS ASP.NET Tools Pre-Release License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-tools-pre-release.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-tools-pre-release.LICENSE", +"ms-asp-net-web-optimization-framework","MS ASP.NET Web Optimization Framework","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-web-optimization-framework.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-web-optimization-framework.LICENSE", +"ms-asp-net-web-pages-2","MS ASP.NET Web Pages 2 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-web-pages-2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-asp-net-web-pages-2.LICENSE", +"ms-capicom","Microsoft CAPICOM License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-capicom.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-capicom.LICENSE", +"ms-cl","MS-CL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-cl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-cl.LICENSE", +"ms-control-spy-2.0","MS Control Spy 2.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-control-spy-2.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-control-spy-2.0.LICENSE", +"ms-developer-services-agreement","MS Developer Services Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-developer-services-agreement.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-developer-services-agreement.LICENSE", +"ms-device-emulator-3.0","MS Device Emulator 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-device-emulator-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-device-emulator-3.0.LICENSE", +"ms-directx-sdk-eula","MS DirectX SDK EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-directx-sdk-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-directx-sdk-eula.LICENSE", +"ms-entity-framework-4.1","MS Entity Framework 4.1 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-entity-framework-4.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-entity-framework-4.1.LICENSE", +"ms-entity-framework-5","MS Entity Framework 5 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-entity-framework-5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-entity-framework-5.LICENSE", +"ms-eula-win-script-host","MS EULA for Windows Script Host","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-eula-win-script-host.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-eula-win-script-host.LICENSE", +"ms-exchange-server-2010-sp2-sdk","MS Exchange Server 2010 SP2 Web Services SDK","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-exchange-server-2010-sp2-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-exchange-server-2010-sp2-sdk.LICENSE", +"ms-ilmerge","MS ILMerge License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-ilmerge.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-ilmerge.LICENSE", +"ms-invisible-eula-1.0","MS Invisible Computing EULA 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-invisible-eula-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-invisible-eula-1.0.LICENSE", +"ms-jdbc-driver-40-sql-server","MS JDBC Driver 4.0 for SQL Server","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-jdbc-driver-40-sql-server.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-jdbc-driver-40-sql-server.LICENSE", +"ms-jdbc-driver-41-sql-server","MS JDBC Driver 4.1 for SQL Server","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-jdbc-driver-41-sql-server.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-jdbc-driver-41-sql-server.LICENSE", +"ms-jdbc-driver-60-sql-server","MS JDBC Driver 6.0 for SQL Server","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-jdbc-driver-60-sql-server.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-jdbc-driver-60-sql-server.LICENSE", +"ms-limited-community","MS Limited Community License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-limited-community.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-limited-community.LICENSE", +"ms-limited-public","MS Limited Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-limited-public.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-limited-public.LICENSE", +"ms-lpl","MS-LPL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-lpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-lpl.LICENSE", +"ms-msn-webgrease","MS MSN WebGrease License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-msn-webgrease.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-msn-webgrease.LICENSE", +"ms-net-framework-4-supplemental-terms","MS Supplemental License - .NET Framework 4","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-net-framework-4-supplemental-terms.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-net-framework-4-supplemental-terms.LICENSE", +"ms-net-framework-deployment","MS .NET Framework Redistributable EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-net-framework-deployment.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-net-framework-deployment.LICENSE", +"ms-net-library","MS .NET Library License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-net-library.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-net-library.LICENSE", +"ms-nt-resource-kit","MS NT Resource Kit License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-nt-resource-kit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-nt-resource-kit.LICENSE", +"ms-nuget","MS Nuget","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-nuget.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-nuget.LICENSE", +"ms-nuget-package-manager","MS NuGet-Based Package Manager License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-nuget-package-manager.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-nuget-package-manager.LICENSE", +"ms-office-system-programs-eula","MS Office System Programs Software EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-office-system-programs-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-office-system-programs-eula.LICENSE", +"ms-patent-promise","MS Patent Promise for .NET","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-patent-promise.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-patent-promise.LICENSE", +"ms-platform-sdk","MS Platform SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-platform-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-platform-sdk.LICENSE", +"ms-reactive-extensions-eula","MS Reactive Extensions EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-reactive-extensions-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-reactive-extensions-eula.LICENSE", +"ms-remote-ndis-usb-kit","MS Remote NDIS USB Kit EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-remote-ndis-usb-kit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-remote-ndis-usb-kit.LICENSE", +"ms-research-shared-source","MS Research Shared Source License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-research-shared-source.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-research-shared-source.LICENSE", +"ms-rsl","MS Reference Source License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-rsl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-rsl.LICENSE", +"ms-silverlight-3","MS Silverlight 3 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-silverlight-3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-silverlight-3.LICENSE", +"ms-sql-server-compact-4.0","MS SQL Server Compact 4.0 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-sql-server-compact-4.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-sql-server-compact-4.0.LICENSE", +"ms-sql-server-data-tools","MS SQL Server Data Tools License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-sql-server-data-tools.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-sql-server-data-tools.LICENSE", +"ms-ttf-eula","MS TrueType Fonts EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-ttf-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-ttf-eula.LICENSE", +"ms-visual-2008-runtime","MS Visual C++ 2008 Runtime Libraries License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-visual-2008-runtime.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-visual-2008-runtime.LICENSE", +"ms-visual-2010-runtime","MS Visual C++ 2010 Runtime Libraries License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-visual-2010-runtime.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-visual-2010-runtime.LICENSE", +"ms-visual-studio-code","MS Visual Studio Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-visual-studio-code.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-visual-studio-code.LICENSE", +"ms-web-developer-tools-1.0","MS Web Developer Tools 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-web-developer-tools-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-web-developer-tools-1.0.LICENSE", +"ms-windows-driver-kit","MS Windows Driver Kit License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-driver-kit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-driver-kit.LICENSE", +"ms-windows-identity-foundation","MS Windows Identity Foundation License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-identity-foundation.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-identity-foundation.LICENSE", +"ms-windows-sdk-server-2008-net-3.5","MS Windows SDK Server 2008 .NET Framework 3.5","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-sdk-server-2008-net-3.5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-sdk-server-2008-net-3.5.LICENSE", +"ms-windows-sdk-win7-net-4","MS Windows SDK Windows7 .NET Framework 4","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-sdk-win7-net-4.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-sdk-win7-net-4.LICENSE", +"ms-windows-server-2003-ddk","MS Windows Server 2003 DDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-server-2003-ddk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-server-2003-ddk.LICENSE", +"ms-windows-server-2003-sdk","MS Windows Server 2003 SP1 Platform SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-server-2003-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-windows-server-2003-sdk.LICENSE", +"ms-ws-routing-spec","MS WS Routing Specifications License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-ws-routing-spec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-ws-routing-spec.LICENSE", +"ms-xml-core-4.0","MSXML 4.0 EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-xml-core-4.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ms-xml-core-4.0.LICENSE", +"msj-sample-code","MS Systems Journal Sample Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/msj-sample-code.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/msj-sample-code.LICENSE", +"msntp","MSNTP License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/msntp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/msntp.LICENSE", +"msppl","MSPPL","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/msppl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/msppl.LICENSE", +"mulle-kybernetik","Mulle Kybernetik License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mulle-kybernetik.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mulle-kybernetik.LICENSE", +"mx4j","MX4J License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mx4j.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/mx4j.LICENSE", +"naughter","Naughter Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/naughter.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/naughter.LICENSE", +"netcat","Netcat License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/netcat.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/netcat.LICENSE", +"netcomponents","NetComponents License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/netcomponents.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/netcomponents.LICENSE", +"netron","Netron Project License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/netron.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/netron.LICENSE", +"network-time-protocol","Network Time Protocol License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/network-time-protocol.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/network-time-protocol.LICENSE", +"new-relic","New Relic License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/new-relic.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/new-relic.LICENSE", +"newran","Newran License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/newran.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/newran.LICENSE", +"nicta-psl","NICTA Public Software Licence 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nicta-psl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nicta-psl.LICENSE", +"niels-ferguson","Niels Ferguson License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/niels-ferguson.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/niels-ferguson.LICENSE", +"nist-pd","NIST Public Domain Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nist-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nist-pd.LICENSE", +"nonexclusive","Nonexclusive License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nonexclusive.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nonexclusive.LICENSE", +"nortel-dasa","Nortel DASA License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nortel-dasa.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nortel-dasa.LICENSE", +"notre-dame","Notre Dame License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/notre-dame.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/notre-dame.LICENSE", +"nrl-permission","NRL permission","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nrl-permission.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nrl-permission.LICENSE", +"ntlm","NTLM License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ntlm.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ntlm.LICENSE", +"nvidia","NVIDIA License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nvidia.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nvidia.LICENSE", +"nvidia-gov","NVIDIA License with Government Qualifications","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nvidia-gov.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nvidia-gov.LICENSE", +"o-young-jong","O Young Jong License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/o-young-jong.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/o-young-jong.LICENSE", +"oasis-ws-security-spec","Oasis WS Security Specification License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oasis-ws-security-spec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oasis-ws-security-spec.LICENSE", +"oclc-1.0","OCLC Research Public License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oclc-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oclc-1.0.LICENSE", +"odl","Open Directory License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/odl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/odl.LICENSE", +"ogc","OGC Software Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ogc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ogc.LICENSE", +"okl","OKL license","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/okl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/okl.LICENSE", +"open-diameter","Open Diameter License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/open-diameter.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/open-diameter.LICENSE", +"open-group","Open Group Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/open-group.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/open-group.LICENSE", +"openmarket-fastcgi","FastCGI License for Spec Implementation","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openmarket-fastcgi.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openmarket-fastcgi.LICENSE", +"opennetcf-shared-source","OpenNETCF Shared Source License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/opennetcf-shared-source.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/opennetcf-shared-source.LICENSE", +"openorb-1.0","OpenORB Community License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openorb-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openorb-1.0.LICENSE", +"openpbs-2.3","OpenPBS 2.3","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openpbs-2.3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openpbs-2.3.LICENSE", +"openpub","Open Publication License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openpub.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openpub.LICENSE", +"opensaml-1.0","OpenSAML License v1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/opensaml-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/opensaml-1.0.LICENSE", +"openssl","OpenSSL License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openssl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openssl.LICENSE", +"openvpn-as-eula","OpenVPN-AS EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openvpn-as-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/openvpn-as-eula.LICENSE", +"opera-widget-1.0","Opera Widget License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/opera-widget-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/opera-widget-1.0.LICENSE", +"oracle-bcl-javaee","Oracle BCL for Java EE Technologies","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javaee.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javaee.LICENSE", +"oracle-bcl-javase-javafx-2012","Oracle BCL for JavaSE and JavaFX 2012","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javase-javafx-2012.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javase-javafx-2012.LICENSE", +"oracle-bcl-javase-javafx-2013","Oracle BCL for Java SE and JavaFX 2013","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javase-javafx-2013.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javase-javafx-2013.LICENSE", +"oracle-bcl-javase-platform-javafx-2013","Oracle BCL for Java SE and JavaFX 2013 Restricted","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javase-platform-javafx-2013.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-javase-platform-javafx-2013.LICENSE", +"oracle-bcl-jsse-1.0.3","Oracle BCL for JSSE 1.0.3 for CDC 1.0.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-jsse-1.0.3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-bcl-jsse-1.0.3.LICENSE", +"oracle-code-samples-bsd","Oracle Code Samples BSD-Style License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-code-samples-bsd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-code-samples-bsd.LICENSE", +"oracle-commercial-database-11g2","Oracle Commercial Database License 11g2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-commercial-database-11g2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-commercial-database-11g2.LICENSE", +"oracle-devtools-vsnet-dev","Oracle DevTools for Visual Studio .NET Development","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-devtools-vsnet-dev.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-devtools-vsnet-dev.LICENSE", +"oracle-entitlement-05-15","Oracle Entitlement 5 plus 15","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-entitlement-05-15.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-entitlement-05-15.LICENSE", +"oracle-java-ee-sdk-2010","OTN Developer License for JAVA EE SDK","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-java-ee-sdk-2010.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-java-ee-sdk-2010.LICENSE", +"oracle-master-agreement","Oracle Master Agreement (OMA)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-master-agreement.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-master-agreement.LICENSE", +"oracle-sql-developer","Oracle SQL Developer License Terms","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-sql-developer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-sql-developer.LICENSE", +"oracle-web-sites-tou","Oracle Web Sites TOU","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-web-sites-tou.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oracle-web-sites-tou.LICENSE", +"oreilly-notice","O'Reilly Code Sample Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oreilly-notice.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oreilly-notice.LICENSE", +"osetpl-2.1","OSET 2.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/osetpl-2.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/osetpl-2.1.LICENSE", +"osf-1990","OSF 1990 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/osf-1990.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/osf-1990.LICENSE", +"osgi-spec-2.0","OSGi Specification License 2.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/osgi-spec-2.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/osgi-spec-2.0.LICENSE", +"ossn-3.0","OSSN-3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ossn-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ossn-3.0.LICENSE", +"oswego-concurrent","Oswego Concurrent License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oswego-concurrent.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/oswego-concurrent.LICENSE", +"other-copyleft","Other Copyleft Licenses","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/other-copyleft.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/other-copyleft.LICENSE", +"other-permissive","Other Permissive Licenses","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/other-permissive.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/other-permissive.LICENSE", +"otn-dev-dist","OTN License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-dev-dist.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-dev-dist.LICENSE", +"otn-dev-dist-2014","OTN License 2014","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-dev-dist-2014.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-dev-dist-2014.LICENSE", +"otn-dev-dist-2016","OTN License 2016","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-dev-dist-2016.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-dev-dist-2016.LICENSE", +"otn-early-adopter-development","OTN Early Adopter Development License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-early-adopter-development.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/otn-early-adopter-development.LICENSE", +"owal-1.0","Opera Web Applications License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/owal-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/owal-1.0.LICENSE", +"owfa-1.0","OWFa 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/owfa-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/owfa-1.0.LICENSE", +"owtchart","OWTChart License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/owtchart.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/owtchart.LICENSE", +"ozplb-1.0","OZPLB 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ozplb-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ozplb-1.0.LICENSE", +"ozplb-1.1","OZPLB 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ozplb-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ozplb-1.1.LICENSE", +"paint-net","Paint.NET License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paint-net.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paint-net.LICENSE", +"paolo-messina-2000","Paolo Messina 2000","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paolo-messina-2000.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paolo-messina-2000.LICENSE", +"paraview-1.2","ParaView License 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paraview-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paraview-1.2.LICENSE", +"patent-disclaimer","Generic patent disclaimer","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/patent-disclaimer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/patent-disclaimer.LICENSE", +"paul-hsieh-exposition","Paul Hsieh Exposition License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paul-hsieh-exposition.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paul-hsieh-exposition.LICENSE", +"paul-mackerras","Paul Mackerras License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paul-mackerras.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paul-mackerras.LICENSE", +"paulo-soares","Paulo Soares License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paulo-soares.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/paulo-soares.LICENSE", +"pcre","PCRE License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pcre.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pcre.LICENSE", +"pd-mit","Modified MIT License for Public Domain software","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pd-mit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pd-mit.LICENSE", +"pd-programming","PD'Programming License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pd-programming.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pd-programming.LICENSE", +"pdf-creator-pilot","PDF Creator Pilot License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pdf-creator-pilot.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pdf-creator-pilot.LICENSE", +"pdl-1.0","PDL-1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pdl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pdl-1.0.LICENSE", +"perl-1.0","Perl 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/perl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/perl-1.0.LICENSE", +"peter-deutsch-document","Peter Deutsch Document License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/peter-deutsch-document.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/peter-deutsch-document.LICENSE", +"pftijah-1.1","PfTijah Public License 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pftijah-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pftijah-1.1.LICENSE", +"phil-bunce","Phil Bunce License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/phil-bunce.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/phil-bunce.LICENSE", +"philippe-de-muyter","Philippe De Muyter License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/philippe-de-muyter.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/philippe-de-muyter.LICENSE", +"phorum-2.0","Phorum License 2.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/phorum-2.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/phorum-2.0.LICENSE", +"php-2.0.2","PHP License 2.0.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/php-2.0.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/php-2.0.2.LICENSE", +"pine","Pine License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pine.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pine.LICENSE", +"pivotal-tou","Pivotal Software Terms of Use","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pivotal-tou.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pivotal-tou.LICENSE", +"planet-source-code","Planet Source Code License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/planet-source-code.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/planet-source-code.LICENSE", +"pngsuite","PngSuite License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pngsuite.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pngsuite.LICENSE", +"politepix-pl-1.0","Politepix Public License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/politepix-pl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/politepix-pl-1.0.LICENSE", +"ppp","ppp License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ppp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ppp.LICENSE", +"proprietary","Proprietary","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/proprietary.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/proprietary.LICENSE", +"protobuf","Protobuf License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/protobuf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/protobuf.LICENSE", +"psytec-freesoft","Psytec Free Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/psytec-freesoft.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/psytec-freesoft.LICENSE", +"public-domain","Public Domain","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/public-domain.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/public-domain.LICENSE", +"public-domain-disclaimer","Public Domain Disclaimer","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/public-domain-disclaimer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/public-domain-disclaimer.LICENSE", +"purdue-bsd","Purdue BSD-Style License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/purdue-bsd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/purdue-bsd.LICENSE", +"pycrypto","PyCrypto License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pycrypto.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pycrypto.LICENSE", +"pygres-2.2","PyGres License 2.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pygres-2.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/pygres-2.2.LICENSE", +"python-cwi","Python CWI License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/python-cwi.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/python-cwi.LICENSE", +"qaplug","QAPlug License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qaplug.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qaplug.LICENSE", +"qca-technology","QCA Technology License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qca-technology.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qca-technology.LICENSE", +"qlogic-firmware","QLogic Firmware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qlogic-firmware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qlogic-firmware.LICENSE", +"qlogic-microcode","QLogic Microcode","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qlogic-microcode.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qlogic-microcode.LICENSE", +"qpopper","Qpopper License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qpopper.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qpopper.LICENSE", +"qt-commercial-1.1","Qt Commercial License v1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qt-commercial-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qt-commercial-1.1.LICENSE", +"qualcomm-iso","Qualcomm ISO/IEC MPEG-B DASH License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qualcomm-iso.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qualcomm-iso.LICENSE", +"qualcomm-turing","Qualcomm Turing License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qualcomm-turing.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qualcomm-turing.LICENSE", +"quicktime","Apple Quicktime License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/quicktime.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/quicktime.LICENSE", +"quin-street","QuinStreet License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/quin-street.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/quin-street.LICENSE", +"quirksmode","Quirksmode Copyright Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/quirksmode.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/quirksmode.LICENSE", +"qwt-1.0","Qwt License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qwt-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/qwt-1.0.LICENSE", +"rackspace","Rackspace License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rackspace.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rackspace.LICENSE", +"radvd","radvd License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/radvd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/radvd.LICENSE", +"ralf-corsepius","Ralf Corsepius License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ralf-corsepius.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ralf-corsepius.LICENSE", +"ralink-firmware","Ralink Firmware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ralink-firmware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ralink-firmware.LICENSE", +"rar-winrar-eula","RAR and WinRAR EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rar-winrar-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rar-winrar-eula.LICENSE", +"rcsl-2.0","RCSL R&D 2.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rcsl-2.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rcsl-2.0.LICENSE", +"rcsl-3.0","RCSL R&D 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rcsl-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rcsl-3.0.LICENSE", +"red-hat-attribution","Red Hat Attribution License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-attribution.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-attribution.LICENSE", +"red-hat-bsd-simplified","Red Hat BSD-Simplified","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-bsd-simplified.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-bsd-simplified.LICENSE", +"red-hat-logos","Red Hat Logos License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-logos.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-logos.LICENSE", +"red-hat-trademarks","Red Hat Trademarks License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-trademarks.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/red-hat-trademarks.LICENSE", +"reportbug","Debian reportbug License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/reportbug.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/reportbug.LICENSE", +"repoze","Repoze License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/repoze.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/repoze.LICENSE", +"rh-eula","Red Hat EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rh-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rh-eula.LICENSE", +"rh-eula-lgpl","Red Hat EULA JBoss Enterprise Middleware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rh-eula-lgpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rh-eula-lgpl.LICENSE", +"riverbank-sip","Riverbank SIP License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/riverbank-sip.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/riverbank-sip.LICENSE", +"robert-hubley","Robert Hubley License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/robert-hubley.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/robert-hubley.LICENSE", +"rogue-wave","Rogue Wave Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rogue-wave.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rogue-wave.LICENSE", +"rsa-1990","RSA 1990","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-1990.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-1990.LICENSE", +"rsa-cryptoki","RSA Cryptoki License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-cryptoki.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-cryptoki.LICENSE", +"rsa-demo","RSA Demo License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-demo.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-demo.LICENSE", +"rsa-md2","RSA-MD2 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-md2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-md2.LICENSE", +"rsa-md4","RSA-MD4 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-md4.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-md4.LICENSE", +"rsa-proprietary","RSA Proprietary","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-proprietary.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rsa-proprietary.LICENSE", +"rtools-util","RTools.Util License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rtools-util.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rtools-util.LICENSE", +"rute","Rute Users Tutorial and Exposition License 0.8.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rute.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/rute.LICENSE", +"ryszard-szopa","Ryszard Szopa License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ryszard-szopa.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ryszard-szopa.LICENSE", +"saas-mit","SaaS MIT License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/saas-mit.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/saas-mit.LICENSE", +"saf","Service Availability Forum License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/saf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/saf.LICENSE", +"safecopy-eula","SafeCopy EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/safecopy-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/safecopy-eula.LICENSE", +"sandeep","Sandeep License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sandeep.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sandeep.LICENSE", +"sash","Sash Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sash.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sash.LICENSE", +"sbia-b","SBIA Part B","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sbia-b.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sbia-b.LICENSE", +"scancode-acknowledgment","ScanCode acknowledgment","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scancode-acknowledgment.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scancode-acknowledgment.LICENSE", +"scanlogd-license","scanlogd License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scanlogd-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scanlogd-license.LICENSE", +"scansoft-1.2","ScanSoft Public License 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scansoft-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scansoft-1.2.LICENSE", +"scribbles","Scribbles Demos Recognizer Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scribbles.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scribbles.LICENSE", +"script-asylum","Script Asylum License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/script-asylum.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/script-asylum.LICENSE", +"script-nikhilk","Script# License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/script-nikhilk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/script-nikhilk.LICENSE", +"scrub","SCRUB License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scrub.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scrub.LICENSE", +"scsl-3.0","Sun Community Source License 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scsl-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/scsl-3.0.LICENSE", +"see-license","See License mention","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/see-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/see-license.LICENSE", +"sencha-app-floss-exception","Sencha GPL 3.0 Exception for Applications","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sencha-app-floss-exception.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sencha-app-floss-exception.LICENSE", +"sencha-commercial","Sencha Commercial License 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sencha-commercial.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sencha-commercial.LICENSE", +"sencha-dev-floss-exception","Sencha GPL 3.0 Exception for Development","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sencha-dev-floss-exception.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sencha-dev-floss-exception.LICENSE", +"sgi-cid-1.0","SGI CID Font Code Public License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sgi-cid-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sgi-cid-1.0.LICENSE", +"sgi-glx-1.0","SGI GLX Public License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sgi-glx-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sgi-glx-1.0.LICENSE", +"sglib","Sglib License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sglib.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sglib.LICENSE", +"shavlik-eula","Shavlik Technologies EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/shavlik-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/shavlik-eula.LICENSE", +"shital-shah","Shital Shah License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/shital-shah.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/shital-shah.LICENSE", +"simpl-1.1","SimPL 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/simpl-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/simpl-1.1.LICENSE", +"slysoft-eula","SlySoft EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/slysoft-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/slysoft-eula.LICENSE", +"smartlabs-freeware","SmartLabs Freeware License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/smartlabs-freeware.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/smartlabs-freeware.LICENSE", +"snprintf","snprintf License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/snprintf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/snprintf.LICENSE", +"softerra-ldap-browser-eula","Softerra LDAP Browser EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/softerra-ldap-browser-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/softerra-ldap-browser-eula.LICENSE", +"softfloat","SoftFloat","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/softfloat.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/softfloat.LICENSE", +"softsurfer","softSurfer License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/softsurfer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/softsurfer.LICENSE", +"spark-jive","Spark Jive License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/spark-jive.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/spark-jive.LICENSE", +"sparky","Sparky License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sparky.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sparky.LICENSE", +"speechworks-1.1","SpeechWorks Public License 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/speechworks-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/speechworks-1.1.LICENSE", +"squeak","Apple Squeak License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/squeak.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/squeak.LICENSE", +"srgb","sRGB Profile Licensing Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/srgb.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/srgb.LICENSE", +"ssleay","Original SSLeay License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ssleay.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ssleay.LICENSE", +"ssleay-windows","Original SSLeay License with Windows exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ssleay-windows.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ssleay-windows.LICENSE", +"stanford-mrouted","Stanford mrouted License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stanford-mrouted.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stanford-mrouted.LICENSE", +"stanford-pvrg","Stanford PVRG License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stanford-pvrg.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stanford-pvrg.LICENSE", +"statewizard","StateWizard License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/statewizard.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/statewizard.LICENSE", +"stax","Stax License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stax.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stax.LICENSE", +"stlport-4.5","STLport License 4.5","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stlport-4.5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stlport-4.5.LICENSE", +"stu-nicholls","Stu Nicholls License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stu-nicholls.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/stu-nicholls.LICENSE", +"sun-bcl-11-06","Sun BCL 11 plus 6","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-11-06.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-11-06.LICENSE", +"sun-bcl-11-07","Sun BCL 11 plus 7","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-11-07.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-11-07.LICENSE", +"sun-bcl-11-08","Sun BCL 11 plus 8","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-11-08.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-11-08.LICENSE", +"sun-bcl-j2re-1.2.x","Sun BCL J2RE 1.2.X","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-1.2.x.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-1.2.x.LICENSE", +"sun-bcl-j2re-1.4.2","Sun BCL J2RE 1.4.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-1.4.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-1.4.2.LICENSE", +"sun-bcl-j2re-1.4.x","Sun BCL J2RE 1.4.X","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-1.4.x.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-1.4.x.LICENSE", +"sun-bcl-j2re-5.0","Sun BCL J2RE 5.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-5.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-j2re-5.0.LICENSE", +"sun-bcl-java-servlet-imp-2.1.1","Sun BCL Java Servlet Implementation 2.1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-java-servlet-imp-2.1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-java-servlet-imp-2.1.1.LICENSE", +"sun-bcl-javahelp","Sun BCL JavaHelp","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-javahelp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-javahelp.LICENSE", +"sun-bcl-jimi-sdk","Sun BCL JIMI SDK","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-jimi-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-jimi-sdk.LICENSE", +"sun-bcl-jre6","Sun BCL JRE 6","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-jre6.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-jre6.LICENSE", +"sun-bcl-jsmq","Sun BCL JSMQ","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-jsmq.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-jsmq.LICENSE", +"sun-bcl-opendmk","Sun BCL OpenDMK","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-opendmk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-opendmk.LICENSE", +"sun-bcl-sdk-1.3","Sun BCL SDK 1.3","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-1.3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-1.3.LICENSE", +"sun-bcl-sdk-1.4.2","Sun BCL SDK 1.4.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-1.4.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-1.4.2.LICENSE", +"sun-bcl-sdk-5.0","Sun BCL SDK 5.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-5.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-5.0.LICENSE", +"sun-bcl-sdk-6.0","Sun BCL SDK 6.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-6.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-sdk-6.0.LICENSE", +"sun-bcl-web-start","Sun BCL Web Start","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-web-start.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bcl-web-start.LICENSE", +"sun-bsd-extra","Sun BSD-Style with Additional Restrictions","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bsd-extra.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-bsd-extra.LICENSE", +"sun-communications-api","Sun Communications API","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-communications-api.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-communications-api.LICENSE", +"sun-ejb-spec-2.1","Sun EJB Specification 2.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-ejb-spec-2.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-ejb-spec-2.1.LICENSE", +"sun-ejb-spec-3.0","Sun EJB Specification 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-ejb-spec-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-ejb-spec-3.0.LICENSE", +"sun-entitlement-03-15","Sun Entitlement 3 plus 15","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-entitlement-03-15.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-entitlement-03-15.LICENSE", +"sun-entitlement-jaf","Sun Entitlement JAF","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-entitlement-jaf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-entitlement-jaf.LICENSE", +"sun-glassfish","Sun GlassFish License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-glassfish.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-glassfish.LICENSE", +"sun-iiop","Sun IIOP License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-iiop.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-iiop.LICENSE", +"sun-java-web-services-dev-pack-1.6","Sun Java Web Services Developer Pack 1.6","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-java-web-services-dev-pack-1.6.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-java-web-services-dev-pack-1.6.LICENSE", +"sun-javamail","Sun JavaMail","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-javamail.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-javamail.LICENSE", +"sun-jsr-spec-04-2006","Sun JSR Specification 04-2006","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-jsr-spec-04-2006.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-jsr-spec-04-2006.LICENSE", +"sun-jta-spec-1.0.1","Sun JTA Specification License 1.0.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-jta-spec-1.0.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-jta-spec-1.0.1.LICENSE", +"sun-jta-spec-1.0.1B","Sun JTA Specification License 1.0.1B","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-jta-spec-1.0.1B.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-jta-spec-1.0.1B.LICENSE", +"sun-project-x","Sun Project X","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-project-x.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-project-x.LICENSE", +"sun-prop-non-commercial","Sun Proprietary Non-Commercial License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-prop-non-commercial.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-prop-non-commercial.LICENSE", +"sun-rpc","Sun RPC License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-rpc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-rpc.LICENSE", +"sun-sdk-spec-1.1","Sun SDK Specification 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-sdk-spec-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-sdk-spec-1.1.LICENSE", +"sun-sissl-1.0","Sun Industry Standards Source License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-sissl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-sissl-1.0.LICENSE", +"sun-ssscfr-1.1","Sun Solaris Source Code License 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-ssscfr-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sun-ssscfr-1.1.LICENSE", +"sunpro","SunPro Attribution License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sunpro.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/sunpro.LICENSE", +"svndiff","svndiff License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/svndiff.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/svndiff.LICENSE", +"swig","SWIG Library License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/swig.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/swig.LICENSE", +"synopsys-attribution","Synopsys Attribution License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/synopsys-attribution.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/synopsys-attribution.LICENSE", +"takao-abe","Takao Abe License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/takao-abe.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/takao-abe.LICENSE", +"takuya-ooura","Takuya OOURA License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/takuya-ooura.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/takuya-ooura.LICENSE", +"tanuki-community-sla-1.0","Tanuki Community SLA 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.0.LICENSE", +"tanuki-community-sla-1.1","Tanuki Community SLA 1.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.1.LICENSE", +"tanuki-community-sla-1.2","Tanuki Community SLA 1.2","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.2.LICENSE", +"tanuki-community-sla-1.3","Tanuki Community SLA 1.3","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.3.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tanuki-community-sla-1.3.LICENSE", +"tatu-ylonen","Tatu Ylonen License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tatu-ylonen.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tatu-ylonen.LICENSE", +"teamdev-services","TeamDev Services License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/teamdev-services.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/teamdev-services.LICENSE", +"telerik-eula","Telerik EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/telerik-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/telerik-eula.LICENSE", +"tenable-nessus","Tenable Nessus License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tenable-nessus.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tenable-nessus.LICENSE", +"term-readkey","Term Readkey License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/term-readkey.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/term-readkey.LICENSE", +"tested-software","Tested Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tested-software.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tested-software.LICENSE", +"tex-live","TeX Live License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tex-live.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tex-live.LICENSE", +"tgppl-1.0","TGGPL 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tgppl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tgppl-1.0.LICENSE", +"thomas-bandt","Thomas Bandt License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/thomas-bandt.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/thomas-bandt.LICENSE", +"ti-broadband-apps","TI Broadband Applications License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ti-broadband-apps.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ti-broadband-apps.LICENSE", +"ti-restricted","TI Restricted Use License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ti-restricted.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ti-restricted.LICENSE", +"tidy","Tidy License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tidy.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tidy.LICENSE", +"tiger-crypto","Tiger Cryptography License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tiger-crypto.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tiger-crypto.LICENSE", +"tigra-calendar-3.2","Tigra Calendar 3.2 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tigra-calendar-3.2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tigra-calendar-3.2.LICENSE", +"tigra-calendar-4.0","Tigra Calendar 4.0 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tigra-calendar-4.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tigra-calendar-4.0.LICENSE", +"timestamp-picker","Timestamp Picker License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/timestamp-picker.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/timestamp-picker.LICENSE", +"tizen-sdk","Tizen SDK License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tizen-sdk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tizen-sdk.LICENSE", +"tpl-1.0","TPL 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tpl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tpl-1.0.LICENSE", +"treeview-developer","TreeView Developer License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/treeview-developer.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/treeview-developer.LICENSE", +"treeview-distributor","TreeView Distributor License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/treeview-distributor.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/treeview-distributor.LICENSE", +"triptracker","TripTracker License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/triptracker.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/triptracker.LICENSE", +"truecrypt-3.1","TrueCrypt License 3.1","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/truecrypt-3.1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/truecrypt-3.1.LICENSE", +"ttf2pt1","TTF2PT1 Project License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ttf2pt1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ttf2pt1.LICENSE", +"tu-berlin","TU Berlin License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tu-berlin.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/tu-berlin.LICENSE", +"twisted-snmp","TwistedSNMP License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/twisted-snmp.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/twisted-snmp.LICENSE", +"txl-10.5","TXL 10.5 License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/txl-10.5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/txl-10.5.LICENSE", +"ubc","University of British Columbia License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ubc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ubc.LICENSE", +"ucl-1.0","UCL-1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ucl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ucl-1.0.LICENSE", +"unbuntu-font-1.0","Ubuntu Font 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unbuntu-font-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unbuntu-font-1.0.LICENSE", +"unicode","Unicode Inc License Agreement","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unicode.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unicode.LICENSE", +"unicode-data-software","Unicode - Data Files and Software","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unicode-data-software.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unicode-data-software.LICENSE", +"unicode-mappings","Unicode Mappings License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unicode-mappings.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unicode-mappings.LICENSE", +"unknown","unknown","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unknown.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unknown.LICENSE", +"unlimited-binary-linking","Unlimited Binary Linking Exception","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unlimited-binary-linking.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unlimited-binary-linking.LICENSE", +"unpbook","UNIX Network Programming Book License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unpbook.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unpbook.LICENSE", +"unrar","UnRar License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unrar.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/unrar.LICENSE", +"uofu-rfpl","UURF Public License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/uofu-rfpl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/uofu-rfpl.LICENSE", +"vbaccelerator","vbAccelerator Distribution Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vbaccelerator.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vbaccelerator.LICENSE", +"vcalendar","VCalendar License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vcalendar.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vcalendar.LICENSE", +"verisign","VeriSign License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/verisign.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/verisign.LICENSE", +"vic-metcalfe-pd","Vic Metcalfe Public Domain","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vic-metcalfe-pd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vic-metcalfe-pd.LICENSE", +"vicomsoft-software","Vicomsoft Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vicomsoft-software.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vicomsoft-software.LICENSE", +"visual-numerics","Visual Numerics License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/visual-numerics.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/visual-numerics.LICENSE", +"vitesse-prop","Vitesse Proprietary Notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vitesse-prop.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vitesse-prop.LICENSE", +"vixie-cron","Vixie Cron License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vixie-cron.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vixie-cron.LICENSE", +"vnc-viewer-ios","VNCViewer iOS EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vnc-viewer-ios.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vnc-viewer-ios.LICENSE", +"vs10x-code-map","VS10x Code Map","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vs10x-code-map.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vs10x-code-map.LICENSE", +"vuforia-2013-07-29","Vuforia 2013-07-29","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vuforia-2013-07-29.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/vuforia-2013-07-29.LICENSE", +"w3c-docs-19990405","W3C-DOCS-19990405","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-docs-19990405.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-docs-19990405.LICENSE", +"w3c-docs-20021231","W3C-DOCS-20021231","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-docs-20021231.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-docs-20021231.LICENSE", +"w3c-documentation","W3C Documentation License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-documentation.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-documentation.LICENSE", +"w3c-software-20021231","W3C-SOFWTARE-20021231","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-software-20021231.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/w3c-software-20021231.LICENSE", +"warranty-disclaimer","Generic"," Bare Warranty Disclaimer","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/warranty-disclaimer.yml", +"waterfall-feed-parser","Waterfall Feed Parser License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/waterfall-feed-parser.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/waterfall-feed-parser.LICENSE", +"westhawk","Westhawk License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/westhawk.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/westhawk.LICENSE", +"whistle","Whistle Communications License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/whistle.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/whistle.LICENSE", +"wide-license","WIDE License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wide-license.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wide-license.LICENSE", +"wifi-alliance","Wi-Fi Alliance","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wifi-alliance.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wifi-alliance.LICENSE", +"william-alexander","William Alexander License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/william-alexander.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/william-alexander.LICENSE", +"wince-50-shared-source","MS Windows CE 5.0 Shared Source License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wince-50-shared-source.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wince-50-shared-source.LICENSE", +"windriver-commercial","Wind River License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/windriver-commercial.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/windriver-commercial.LICENSE", +"wingo","wingo License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wingo.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wingo.LICENSE", +"wink","Wink License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wink.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wink.LICENSE", +"winzip-eula","WinZip EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/winzip-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/winzip-eula.LICENSE", +"winzip-self-extractor","WinZip Self-Extractor License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/winzip-self-extractor.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/winzip-self-extractor.LICENSE", +"wrox","Wrox Press License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wrox.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wrox.LICENSE", +"wrox-download","Wrox Download Terms and Conditions","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wrox-download.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wrox-download.LICENSE", +"ws-addressing-spec","WS Addressing Specification License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ws-addressing-spec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/ws-addressing-spec.LICENSE", +"wtfnmfpl-1.0","WTFNMFPL-1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wtfnmfpl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wtfnmfpl-1.0.LICENSE", +"wtfpl-1.0","WTFPL 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wtfpl-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wtfpl-1.0.LICENSE", +"wxwidgets","wxWidgets Licence","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wxwidgets.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wxwidgets.LICENSE", +"wxwindows-r-3.0","wxWindows Restricted Licence 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wxwindows-r-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wxwindows-r-3.0.LICENSE", +"wxwindows-u-3.0","wxWindows Unrestricted Licence 3.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wxwindows-u-3.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/wxwindows-u-3.0.LICENSE", +"x11-adobe","X11-Style (Adobe)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-adobe.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-adobe.LICENSE", +"x11-adobe-dec","X11-Style (Adobe-DEC)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-adobe-dec.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-adobe-dec.LICENSE", +"x11-bitstream","X11-Style (Bitstream Charter)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-bitstream.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-bitstream.LICENSE", +"x11-dec1","X11-Style (DEC 1)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-dec1.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-dec1.LICENSE", +"x11-dec2","X11-Style (DEC 2)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-dec2.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-dec2.LICENSE", +"x11-doc","X11 Documentation License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-doc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-doc.LICENSE", +"x11-dsc","X11-Style (DSC Technologies)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-dsc.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-dsc.LICENSE", +"x11-fsf","X11-Style (FSF)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-fsf.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-fsf.LICENSE", +"x11-hanson","X11-Style (David R. Hanson)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-hanson.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-hanson.LICENSE", +"x11-ibm","IBM Derivative Works License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-ibm.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-ibm.LICENSE", +"x11-keith-packard","X11-Style (Keith Packard)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-keith-packard.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-keith-packard.LICENSE", +"x11-lucent","X11-Style (Lucent)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-lucent.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-lucent.LICENSE", +"x11-oar","X11-Style (OAR)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-oar.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-oar.LICENSE", +"x11-opengl","X11-Style (OpenGL)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-opengl.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-opengl.LICENSE", +"x11-opengroup","X11-Style (Open Group)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-opengroup.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-opengroup.LICENSE", +"x11-quarterdeck","X11-Style (Quarterdeck)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-quarterdeck.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-quarterdeck.LICENSE", +"x11-realmode","X11-Style (Realmode)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-realmode.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-realmode.LICENSE", +"x11-sg","X11-Style (Silicon Graphics)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-sg.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-sg.LICENSE", +"x11-tektronix","X11-Style (Tektronix)","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-tektronix.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-tektronix.LICENSE", +"x11-x11r5","X11-R5","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-x11r5.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11-x11r5.LICENSE", +"x11r5-authors","X11-R5 Authors","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11r5-authors.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/x11r5-authors.LICENSE", +"xfree86-1.0","XFree86 License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xfree86-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xfree86-1.0.LICENSE", +"xming","Xming License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xming.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xming.LICENSE", +"xmldb-1.0","XML:DB Initiative Software License 1.0","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xmldb-1.0.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xmldb-1.0.LICENSE", +"xxd","xxd License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xxd.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/xxd.LICENSE", +"yahoo-browserplus-eula","Yahoo BrowserPlus EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/yahoo-browserplus-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/yahoo-browserplus-eula.LICENSE", +"yahoo-messenger-eula","Yahoo Messenger EULA","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/yahoo-messenger-eula.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/yahoo-messenger-eula.LICENSE", +"yensdesign","Yensdesign License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/yensdesign.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/yensdesign.LICENSE", +"zapatec-calendar","Zapatec Calendar License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zapatec-calendar.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zapatec-calendar.LICENSE", +"zeusbench","ZeusBench notice","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zeusbench.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zeusbench.LICENSE", +"zhorn-stickies","Zhorn Stickies License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zhorn-stickies.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zhorn-stickies.LICENSE", +"zipeg","Zipeg License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zipeg.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zipeg.LICENSE", +"zuora-software","Zuora Software License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zuora-software.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zuora-software.LICENSE", +"zveno-research","Zveno Research License","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zveno-research.yml","https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/zveno-research.LICENSE", diff --git a/docs/source/misc/faq.rst b/docs/source/misc/faq.rst new file mode 100644 index 00000000000..f827e795092 --- /dev/null +++ b/docs/source/misc/faq.rst @@ -0,0 +1,76 @@ +.. _faq: + +FAQ +=== + +Why ScanCode? +------------- + +We could not find an existing tool (open source or commercial) meeting our needs: + +- usable from the command line or as library +- running on Linux, Mac and Windows +- written in a higher level language such as Python +- easy to extend and evolve + +Can licenses be synchronized with the DejaCode license library? +--------------------------------------------------------------- + +The license keys are the same that are used in DejaCode. They are kept in sync by hand in the +short term. There is also a ticket to automate that sync with DejaCode and possibly other sources. +See https://github.com/nexB/scancode-toolkit/issues/41 + +How is ScanCode different from licensecheck? +-------------------------------------------- + +At a high level, ScanCode detects more licenses and copyrights than licensecheck does, reporting +more details about the matches. It is likely slower. + +In more details: ScanCode is a Python app using a data-driven approach (as opposed to carefully +crafted regex): + +- for license scan, the detection is based on a (large) number of license full texts (~900) and + license notices/rules (~1800) and is data driven as opposed to regex-driven. It detects exactly + where in a file a license text is found. Just throw in more license texts to improve the + detection. +- for copyright scan, the approach is natural language parsing (using NLTK) with POS tagging and + a grammar; it has a few thousand tests. +- licenses and copyrights are detected in texts and binaries + +Licensecheck (available here for reference: /https://metacpan.org/release/App-Licensecheck ) +is a Perl script using hand-crafted regex patterns to find typical copyright statements and +about 50 common licenses. There are about 50 license detection tests. + +A quick test (in July 2015, before a major refactoring, but for this notice still valid) shows +several things that are not detected by licensecheck that are detected by ScanCode. + +How can I integrate ScanCode in my application? +----------------------------------------------- + +More specifically, does this tool provide an API which can be used by us for the integration +with my system to trigger the license check and to use the result? + +In terms of API, there are two stable entry points: + +#. The JSON output when you use it as a command line tool from any language or when you call +the scancode.cli.scancode function from a Python script. +#. Otherwise the scancode.cli.api module provides a simple function if you are only interested +in calling a certain service on a given file (such as license detection or copyright detection) + +Can I install ScanCode in a Unicode path? +----------------------------------------- + +Not for now. See https://github.com/nexB/scancode-toolkit/issues/867 There is a bug in virtualenv +on Python2 https://github.com/pypa/virtualenv/issues/457 At this stage and until we completed the +migration to Python 3 there is no way out but to use a path that contains only ASCII characters. + +.. + [ToDo] Update from Python 2.x to Python 3.x + +The line numbers for a copyright found in a binary are weird. What do they mean? +-------------------------------------------------------------------------------- + +When scanning binaries, the line numbers are just a relative indication of where a detection was +found: there is no such thing as lines in a binary. The numbers reported are based on the strings +extracted from the binaries, typically broken as new lines with each NULL character. They can be +safely ignored. diff --git a/docs/source/misc/index.rst b/docs/source/misc/index.rst new file mode 100644 index 00000000000..884e0416346 --- /dev/null +++ b/docs/source/misc/index.rst @@ -0,0 +1,9 @@ +**Miscellaneous** +================= + +.. toctree:: + :maxdepth: 2 + + faq + support + perf_report diff --git a/docs/source/misc/perf_report.rst b/docs/source/misc/perf_report.rst new file mode 100644 index 00000000000..f03808db48a --- /dev/null +++ b/docs/source/misc/perf_report.rst @@ -0,0 +1,14 @@ +Runtime Performance Reports +=========================== + +These are reports of runtimes for real life scans: + +**2015-09-03 by @rrjohnston** + +- On Ubuntu 12.04 x86_64 Python 2.7.3 and ScanCode Version 1.3.1 +- Specs: 40 threads (2 processors, 10 cores each, with hyperthreading) 3.1 GHz 128GB RAM 8TB + controller RAID5 +- scanned 195676 files in about 16.7 hours or about 3.25 file per second + (using defaults licenses and copyrights) +- notes: this version of ScanCode runs on a single thread so it does not make good use of + extra processing power. diff --git a/docs/source/misc/support.rst b/docs/source/misc/support.rst new file mode 100644 index 00000000000..13e3b0c7eab --- /dev/null +++ b/docs/source/misc/support.rst @@ -0,0 +1,31 @@ +.. _support: + +Support +======= + +Documentation +------------- + +The ScanCode toolkit documentation lives at aboutcode.readthedocs.io/en/latest/scancode-toolkit/. + +Issue Tracker +------------- + +Post questions and bugs as GitHub tickets at: https://github.com/nexB/scancode-toolkit/issues + +StackOverflow +------------- + +Ask question on StackOverflow using the [scancode] tag. + +Talk to the Developers +---------------------- + +Join our `Gitter Channel `_ to talk with the developers of +ScanCode Toolkit. + +Documentation +------------- + +For more information on Documentation or to leave feedback mail at aboutCode@groups.io, or leave a +message at our `Docs Channel `_. diff --git a/docs/source/plugins/index.rst b/docs/source/plugins/index.rst new file mode 100644 index 00000000000..01d4ac3c7bb --- /dev/null +++ b/docs/source/plugins/index.rst @@ -0,0 +1,9 @@ +**Plugins** +=========== + +.. toctree:: + :maxdepth: 2 + + plugin_arch + licence_policy_plugin + plugin_tutorials diff --git a/docs/source/plugins/licence_policy_plugin.rst b/docs/source/plugins/licence_policy_plugin.rst new file mode 100644 index 00000000000..4f278e0e1c1 --- /dev/null +++ b/docs/source/plugins/licence_policy_plugin.rst @@ -0,0 +1,69 @@ +.. _license_policy_plugin: + +License Policy Plugin +===================== + +This plugin allows the user to apply policy details to a scancode scan, depending on which +licenses are detected in a particular file. If a license specified in the Policy file is +detected by scancode, this plugin will apply that policy information to the Resource as a new +attribute: ``license_policy``. + +Policy File Specification +------------------------- +The Policy file is a YAML (``.yml``) document with the following structure:: + + license_policies: + - license_key: mit + label: Approved License + color_code: '#00800' + icon: icon-ok-circle + - license_key: agpl-3.0 + label: Approved License + color_code: '#008000' + icon: icon-ok-circle + - license_key: broadcom-commercial + label: Restricted License + color_code: '#FFcc33' + icon: icon-warning-sign + +The only required key is ``license_key``, which represents the ScanCode license key to match +against the detected licenses in the scan results. + +In the above example, a descriptive label is added along with a color code and CSS ``id`` name +for potential visual display. + +Using the Plugin +---------------- + +To apply License Policies during a ScanCode scan, specify the ``--license-policy`` option. + +For example, use the following command to run a File Info and License scan on +``/path/to/codebase/``, using a License Policy file found at ``~/path/to/policy-file.yml``:: + + $ scancode -clipeu /path/to/codebase/ --license-policy ~/path/to/policy-file.yml --json-pp + ~/path/to/scan-output.json + +Example Output +-------------- + +Here is an example of the ScanCode output after running ``--license-policy``:: + + { + "path": "samples/zlib/deflate.c", + "type": "file", + "licenses": [ + { + "key": "zlib", + ... + ... + ... + } + ], + "license_policy": { + "license_key": "zlib", + "label": "Approved License", + "color_code": "#00800", + "icon": "icon-ok-circle" + }, + "scan_errors": [] + } diff --git a/docs/source/plugins/plugin_arch.rst b/docs/source/plugins/plugin_arch.rst new file mode 100644 index 00000000000..7c998426ce3 --- /dev/null +++ b/docs/source/plugins/plugin_arch.rst @@ -0,0 +1,213 @@ +.. _plugin_arch: + +Plugin Architecture +=================== + +Notes: this is the initial design for ScanCode plugins. The actual architecture evolved and is +different. + +Abstract: +--------- + +This project’s purpose is to create a decoupled plugin architecture for scancode such that it can +handle plugins at different stages of a scan and can be coupled at runtime. These stages would be + +* Pre - scan: Before starting the scan + +E.g Plugins to handle extraction of different archive types or instructions on how to handle +certain types of files. + +* Scan proper: During the scan + +E.g Plugins to add more options for the scan, maybe to ignore certain files or add some +command line arguments, create new scans (alternative or as a dependency for further scanning) etc. + +* Post - scan: After the scan + +E.g Plugins for output deduction, formatting or converting output to other formats +(such as json, spdx, csv, xml, etc.) + +Upside of building a pluggable system would be to allow easier additions and rare modifications +to code, without having to really fiddle around with core codebase. This will also provide a level +of abstraction between the plugins and scancode so that any erroneous plugin would not affect the +functioning of scancode as a whole. + +Description: +------------ + +This project aims at making scancode a “pluggable” system, where new functionalities can be added +to scancode at runtime as “plugins”. These plugins can be hooked into scancode using some +predefined hooks. I would consider pluggy as the way to go for a plugin management system. + +Why pluggy? +^^^^^^^^^^^ + +Pluggy is well documented and maintained regularly, and has proved its worth in projects such as +py.test. Pluggy relies on hook specifications and hook implementations (callbacks) instead of the +conventional subclassing approach which may encourage tight-coupling in the overlying framework. +Basically a hook specification contains method signatures (no code), these are defined by the +application. A hook implementation contains definitions for methods declared in the corresponding +hook specification implemented by a plugin. + +As mentioned in the abstract, the plugin architecture will have 3 hook specifications (can be +increased if required) + +1. Pre - scan hook +^^^^^^^^^^^^^^^^^^ + +- **Structure** - + +:: + + prescan_hookspec = HookspecMarker('prescan') + + @prescan_hookspec + def extract_archive(args): + +Here the path of the archive to be extracted will be passed as an argument to the extract_archive +function which will be called before scan, at the time of extraction. This will process the archive +type and extract the contents accordingly. This functionality can be further extended by calling +this function if any archive is found inside the scanning tree. + +2. Scan proper hook +^^^^^^^^^^^^^^^^^^^ + + +- **Structure** + +:: + + scanproper_hookspec = HookspecMarker('scanproper') + + @scanproper_hookspec + def add_cmdline_option(args): + +This function will be called before starting the scan, without any arguments, it will return a dict +containing the click extension details and possibly some help text. If this option is called by the +user then the call will be rerouted to the callback defined by the click extension. For instance +say a plugin implements functionality to add regex as a valid ignore pattern, then this function +will return a dict as:: + + { + 'name': '--ignore-regex', + 'options' : { + 'default': None, + 'multiple': True, + 'metavar': + }, + 'help': 'Ignore files matching regex ' + 'call_after': 'is_ignored' + } + +According to the above dict, if the option --ignore-regex is supplied, this function will be called +after the is_ignored function and the data returned by the is_ignored function will be supplied to +this function as its argument(s). So if the program flow was:: + + scancode() ⇔ scan() ⇔ resource_paths() ⇔ is_ignored() + + +It will now be edited to + +:: + + scancode() ⇔ scan() ⇔ resource_paths() ⇔ is_ignored() ⇔ add_cmdline_option() + + +Options such as **call_after, call_before, call_first, call_last** can be defined to determine +when the function is to be executed. + +:: + + @scanproper_hookspec + def dependency_scan(args): + +This function will be called before starting the scan without any arguments, it will return a +list of file types or attributes which if encountered in the scanned tree, will call this function +with the path to the file as an argument. This function can do some extra processing on those files +and return the data to be processed as a dependency for the normal scanning process. +E.g. It can return a list such as:: + + [ 'debian/copyright' ] + +Whenever a file matches this pattern, this function will be called and the data returned will be +supplied to the main scancode function. + +3. Post - scan hook +^^^^^^^^^^^^^^^^^^^ + + +- **Structure** - + +:: + + postscan_hookspec = HookspecMarker('postscan') + + @postscan_hookspec + def format_output(args): + +This function will be called after a scan is finished. It will be supplied with path to the ABC +data generated from the scan, path to the root of the scanned code and a path where the output is +expected to be stored. The function will store the processed data in the output path supplied. +This can be used to convert output to other formats such as CSV, SPDX, JSON, etc. + +:: + + @postscan_hookspec + def summarize_output(args): + +This function will be called after a scan is finished. It will be supplied the data to be reported +to the user as well as a path to the root of the scanned node. The data returned can then be +reported to the user. This can be used to summarize output, maybe encapsulate the data to be +reported or omit similar file metadata or even classify files such as tests, code proper, licenses, +readme, configs, build scripts etc. + + +- **Identifying or configuring plugins** + +For python plugins, pluggy supports loading modules from setuptools entrypoints, +E.g. + +:: + + entry_points = { + 'scancode_plugins': [ + 'name_of_plugin = ignore_regex', + ] + } + +This plugin can be loaded using the PluginManager class’s +load_setuptools_entrypoints('scancode_plugins') method which will return a list of loaded plugins. + +For non python plugins, all such plugins will be stored in a common directory and each of these +plugins will have a manifest configuration in YAML format. This directory will be scanned at +startup for plugins. After parsing the config file of a plugin, the data will be supplied to the +plugin manager as if it were supplied using setuptools entrypoints. + +In case of non python plugins, the plugin executables will be spawned in their own processes and +according to their config data, they will be passed arguments and would return data as necessary. +In addition to this, the desired hook function can be called from a non python plugin using certain +arguments, which again can be mapped in the config file. + +Sample config file for a ignore_regex plugin calling scanproper hook would be:: + + name: ignore_regex + hook: scanproper + hookfunctions: + add_cmdline_option: '-aco' + dependency_scan: '-dc' + data: + add_cmdline_option': + - name: '--ignore-regex' + - options: + - default: None + - multiple: True + - metavar: + - help: 'Ignore files matching regex ' + - call_after: 'is_ignored' + +Existing solutions: +------------------- + +An alternate solution to a “pluggable” system would be the more conventional approach of adding +functionalities directly to the core codebase, which removes the abstraction layer provided by +a plugin management and hook calling system. diff --git a/docs/source/plugins/plugin_tutorials.rst b/docs/source/plugins/plugin_tutorials.rst new file mode 100644 index 00000000000..59bad566f25 --- /dev/null +++ b/docs/source/plugins/plugin_tutorials.rst @@ -0,0 +1,6 @@ +.. _plugin_tutorials: + +Plugin Tutorials +================ + +- :ref:`how_to_add_post_scan_plugin` diff --git a/docs/source/rst_snippets/basic_options.rst b/docs/source/rst_snippets/basic_options.rst new file mode 100644 index 00000000000..1b7b8ae885c --- /dev/null +++ b/docs/source/rst_snippets/basic_options.rst @@ -0,0 +1,104 @@ +All "Basic" Scan Options +------------------------ + +Option lists are two-column lists of command-line options and descriptions, +documenting a program's options. For example: + +-c, --copyright Scan ```` for copyrights. + + Sub-Options: + + - ``--consolidate`` + +-l, --license Scan ```` for licenses. + + Sub-Options: + + - ``--consolidate`` + - ``--license-score INT`` + - ``--license-text`` + - ``--license-url-template TEXT`` + - ``--license-text-diagnostics`` + - ``--is-license-text`` + +-p, --package Scan ```` for packages. + + Sub-Options: + + - ``--consolidate`` + +-e, --email Scan ```` for emails. + + Sub-Options: + + - ``--max-email INT`` + +-u, --url Scan ```` for urls. + + Sub-Options: + + - ``--max-url INT`` + +-i, --info Include information such as: + + - Size, + - Type, + - Date, + - Programming language, + - sha1 and md5 hashes, + - binary/text/archive/media/source/script flags + - Additional options through more CLI options + + Sub-Options: + + - ``--mark-source`` + +.. include:: /rst_snippets/note_snippets/basic_clpieu.rst + +--generated Classify automatically generated code files with a flag. + +--max-email INT Report only up to INT emails found in a + file. Use 0 for no limit. [Default: 50] + + Sub-Option of - ``--email`` + +--max-url INT Report only up to INT urls found in a + file. Use 0 for no limit. [Default: 50] + + Sub-Option of - ``--url`` + +--license-score INTEGER + + Do not return license matches with scores lower than this score. + A number between 0 and 100. [Default: 0] + Here, a bigger number means a better match, i.e. Setting a higher license score + translates to a higher threshold (with equal or less number of matches). + + Sub-Option of - ``--license`` + +--license-text + + Include the matched text for the detected licenses in the output report. + + Sub-Option of - ``--license`` + + Sub-Options: + + - ``--license-text-diagnostics`` + - ``--is-license-text`` + +--license-url-template TEXT + + Set the template URL used for the license reference URLs. + + In a template URL, curly braces ({}) are replaced by the license key. + [Default: https://enterprise.dejacode.com/urn/urn:dje:license:{}] + + Sub-Option of - ``--license`` + +--license-text-diagnostics + + In the matched license text, include diagnostic highlights surrounding with + square brackets [] words that are not matched. + + Sub-Option of - ``--license`` and ``--license-text`` diff --git a/docs/source/rst_snippets/core_options.rst b/docs/source/rst_snippets/core_options.rst new file mode 100644 index 00000000000..4350be37240 --- /dev/null +++ b/docs/source/rst_snippets/core_options.rst @@ -0,0 +1,27 @@ +All "Core" Scan Options +----------------------- + +-n, --processes INTEGER Scan ```` using n parallel processes. + [Default: 1] + +--verbose Print verbose file-by-file progress messages. + +--quiet Do not print summary or progress messages. + +--timeout FLOAT Stop scanning a file if scanning takes longer + than a timeout in seconds. [Default: 120] + +--reindex-licenses Force a check and possible reindexing of the + cached license index. + +--from-json Load codebase from an existing JSON scan + +--max-in-memory INTEGER Maximum number of files and directories scan + details kept in memory during a scan. + Additional files and directories scan details + above this number are cached on-disk rather + than in memory. Use 0 to use unlimited memory + and disable on-disk caching. Use -1 to use + only on-disk caching. [Default: 10000] + +.. include:: /rst_snippets/note_snippets/core_indep.rst diff --git a/docs/source/rst_snippets/custom_output_format.rst b/docs/source/rst_snippets/custom_output_format.rst new file mode 100644 index 00000000000..c5ba21f8077 --- /dev/null +++ b/docs/source/rst_snippets/custom_output_format.rst @@ -0,0 +1,59 @@ +Custom Output Format +-------------------- + +While the three built-in output formats are convenient for a verity of use-cases, one may wish to +create their own output template, using the following arguments:: + + ``--custom-output FILE --custom-template TEMP_FILE`` + +ScanCode makes this very easy, as it uses the popular Jinja2 template engine. Simply pass the path +to the custom template to the ``--custom-template`` argument, or drop it in a folder to +``src/scancode/templates`` directory. + +For example, if I wanted a simple CLI output I would create a ``template2.html`` with the +particular data I wish to see. In this case, I am only interested in the license and copyright +data for this particular scan. + +:: + + ## template.html: + [ + {% if files.license_copyright %} + {% for location, data in files.license_copyright.items() %} + {% for row in data %} + location:"{{ location }}", + {% if row.what == 'copyright' %}copyright:"{{ row.value|escape }}",{% endif %} + {% endfor %} + {% endfor %} + {% endif %} + ] + + .. note:: + + File name and extension does not matter for the template file. + +Now I can run ScanCode using my newly created template: + +:: + + $ scancode -clpeui --custom-output output.json --custom-template template.html samples + Scanning files... + [####################################] 46 + Scanning done. + +Now are results are saved in ``output.json`` and we can easily view them with ``head output.json``: + +:: + + [ + location:"samples/JGroups/LICENSE", + copyright:"Copyright (c) 1991, 1999 Free Software Foundation, Inc.", + + location:"samples/JGroups/LICENSE", + copyright:"copyrighted by the Free Software Foundation", + ] + +For a more elaborate template, refer this `default template `_ +given with Scancode, to generate HTML output with the ``--html`` output format option. + +Documentation on `Jinja templates `_. diff --git a/docs/source/rst_snippets/data/extractcode.png b/docs/source/rst_snippets/data/extractcode.png new file mode 100644 index 00000000000..d8d8f97d1c3 Binary files /dev/null and b/docs/source/rst_snippets/data/extractcode.png differ diff --git a/docs/source/rst_snippets/doc_help.rst b/docs/source/rst_snippets/doc_help.rst new file mode 100644 index 00000000000..3d9ccbcd498 --- /dev/null +++ b/docs/source/rst_snippets/doc_help.rst @@ -0,0 +1,17 @@ +All Documentation/Help Options +------------------------------ + +-h, --help Show the :ref:`cli_help_text` and exit. + +--examples Show the :ref:`cli_examples_text` and exit. + +--about Show information about ScanCode and licensing + and exit. + +--version Show the version and exit. + +--list-packages Show the list of supported package types and exit. + +--plugins Show the list of available ScanCode plugins and exit. + +--print-options Show the list of selected options and exit. diff --git a/docs/source/rst_snippets/extract.rst b/docs/source/rst_snippets/extract.rst new file mode 100644 index 00000000000..59d3b337ab8 --- /dev/null +++ b/docs/source/rst_snippets/extract.rst @@ -0,0 +1,31 @@ +All Extractcode Options +----------------------- + +This is intended to be used as an input preparation step, before running the scan. Archives found +in an extracted archive are extracted **recursively** by default. Extraction is done in-place +in a directory named '-extract' side-by-side with an archive. + +To extract the packages in the ``samples`` directory + +:: + + extractcode samples + +This extracts the zlib.tar.gz package: + +.. image:: /rst_snippets/data/extractcode.png + +.. _cli_extract: + +--shallow Do not extract recursively nested archives (e.g. Not + archives in archives). + +--verbose Print verbose file-by-file progress messages. + +--quiet Do not print any summary or progress message. + +-h, --help Show the extractcode help message and exit. + +--about Show information about ScanCode and licensing and exit. + +--version Show the version and exit. diff --git a/docs/source/rst_snippets/improve_docs.rst b/docs/source/rst_snippets/improve_docs.rst new file mode 100644 index 00000000000..04a3a2d6d39 --- /dev/null +++ b/docs/source/rst_snippets/improve_docs.rst @@ -0,0 +1,7 @@ +Something Missing? +------------------ + +If something is missing in the documentation or if you found some part confusing, please file +an `issue `_ with your suggestions for +improvement. Use the "Documentation Improvement" template. +Your help makes ScanCode docs better, we love hearing from you! diff --git a/docs/source/rst_snippets/note_snippets/basic_clpieu.rst b/docs/source/rst_snippets/note_snippets/basic_clpieu.rst new file mode 100644 index 00000000000..2ad8b8e7630 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/basic_clpieu.rst @@ -0,0 +1,11 @@ +.. note:: + + Unlike previous 2.x versions, -c, -l, and -p are not default. If any of combination of these + options are used, ScanCode only performs that specific task, and not the others. + ``scancode -e`` only scans for emails, and doesn't scan for copyright/license/packages/general + information. + +.. note:: + + These options, i.e. -c, -l, -p, -e, -u, and -i can be used together. As in, instead of + ``scancode -c -i -p``, you can write ``scancode -cip`` and it will be the same. diff --git a/docs/source/rst_snippets/note_snippets/control_strip_full_root.rst b/docs/source/rst_snippets/note_snippets/control_strip_full_root.rst new file mode 100644 index 00000000000..03aa85688d4 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/control_strip_full_root.rst @@ -0,0 +1,9 @@ +.. note:: + + The options ``--strip-root`` and ``--full-root`` can't be used together, i.e. Any one option + may be used in a single scan. + +.. note:: + + The default is to always include the last directory segment of the scanned path such that all + paths have a common root directory. diff --git a/docs/source/rst_snippets/note_snippets/core_indep.rst b/docs/source/rst_snippets/note_snippets/core_indep.rst new file mode 100644 index 00000000000..d38d2f9e698 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/core_indep.rst @@ -0,0 +1,3 @@ +.. note:: + + All the Core Options are independent options, i.e. They don't depend on other options. diff --git a/docs/source/rst_snippets/note_snippets/output_htmlapp_search.rst b/docs/source/rst_snippets/note_snippets/output_htmlapp_search.rst new file mode 100644 index 00000000000..0dd984d2488 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/output_htmlapp_search.rst @@ -0,0 +1,3 @@ +.. note:: + + The HTML app also contains a Search option to easily find what you are looking for. diff --git a/docs/source/rst_snippets/note_snippets/output_json_notdef.rst b/docs/source/rst_snippets/note_snippets/output_json_notdef.rst new file mode 100644 index 00000000000..6de990df537 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/output_json_notdef.rst @@ -0,0 +1,4 @@ +.. note:: + + There isn't any default output option in Scancode Versions 3.x, unlike 2.x versions (which had + ``json`` as default). diff --git a/docs/source/rst_snippets/note_snippets/output_json_ugly.rst b/docs/source/rst_snippets/note_snippets/output_json_ugly.rst new file mode 100644 index 00000000000..a688107d6d5 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/output_json_ugly.rst @@ -0,0 +1,4 @@ +.. note:: + + The default ``json`` format prints the whole report without line breaks/spaces/indentations, + which can be ugly to look at. diff --git a/docs/source/rst_snippets/note_snippets/output_jsonlines.rst b/docs/source/rst_snippets/note_snippets/output_jsonlines.rst new file mode 100644 index 00000000000..17d66819ac9 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/output_jsonlines.rst @@ -0,0 +1,4 @@ +.. note:: + + This ``jsonlines`` format also omits other file information like type, name, date, + extension, sha1 and md5 hashes, programming language etc. diff --git a/docs/source/rst_snippets/note_snippets/output_samples.rst b/docs/source/rst_snippets/note_snippets/output_samples.rst new file mode 100644 index 00000000000..dbea3b44506 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/output_samples.rst @@ -0,0 +1,9 @@ +.. note:: + + You can Output Scan Results in two different file formats simultaniously in one Scan. An + example - ``scancode -clpieu --json-pp output.json --html output.html samples``. + +.. note:: + + All the examples and snippets that follows heas been generated by scanning the ``samples`` + folder distributed with scancode-toolkit. diff --git a/docs/source/rst_snippets/note_snippets/post_lic_pol_key.rst b/docs/source/rst_snippets/note_snippets/post_lic_pol_key.rst new file mode 100644 index 00000000000..b64e0b38500 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/post_lic_pol_key.rst @@ -0,0 +1,3 @@ +.. note:: + + In the policy file only the "license_key" is a required field. diff --git a/docs/source/rst_snippets/note_snippets/post_lic_pol_notsub.rst b/docs/source/rst_snippets/note_snippets/post_lic_pol_notsub.rst new file mode 100644 index 00000000000..351964403d8 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/post_lic_pol_notsub.rst @@ -0,0 +1,4 @@ +.. note:: + + ``--license-policy FILE`` is a not a sub-option of ``--license``. It works normally without + ``-l``. diff --git a/docs/source/rst_snippets/note_snippets/post_scan_plugins.rst b/docs/source/rst_snippets/note_snippets/post_scan_plugins.rst new file mode 100644 index 00000000000..0ea9d030cbf --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/post_scan_plugins.rst @@ -0,0 +1,9 @@ +.. note:: + + Plugins that are shown by using ``--plugins`` inlcude the following: + + #. Post-Scan Plugins (and, the following) + #. Pre-Scan Plugins + #. Output Options + #. Output Control + #. Basic Scan Options diff --git a/docs/source/rst_snippets/note_snippets/post_summary_details.rst b/docs/source/rst_snippets/note_snippets/post_summary_details.rst new file mode 100644 index 00000000000..5d3f9ec5131 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/post_summary_details.rst @@ -0,0 +1,3 @@ +.. note:: + + ``--summary`` is redundant in a scan when ``--summary-with-details`` is already selected. diff --git a/docs/source/rst_snippets/note_snippets/post_summary_facet.rst b/docs/source/rst_snippets/note_snippets/post_summary_facet.rst new file mode 100644 index 00000000000..a3888cde530 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/post_summary_facet.rst @@ -0,0 +1,4 @@ +.. note:: + + Summaries for all the facets are generated by default, regardless of facets not having any + files under them. diff --git a/docs/source/rst_snippets/note_snippets/pre_facet_core.rst b/docs/source/rst_snippets/note_snippets/pre_facet_core.rst new file mode 100644 index 00000000000..5e454a8b010 --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/pre_facet_core.rst @@ -0,0 +1,3 @@ +.. note:: + + All other files which are not ``dev`` are marked to be included in the facet ``core``. diff --git a/docs/source/rst_snippets/note_snippets/synopsis_install_quickstart.rst b/docs/source/rst_snippets/note_snippets/synopsis_install_quickstart.rst new file mode 100644 index 00000000000..dd6f0cabd3a --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/synopsis_install_quickstart.rst @@ -0,0 +1,4 @@ +.. note:: + + For more information on the Scan Command for Various Installation Methods/Operating Systems, + refer :ref:`syn_install`. diff --git a/docs/source/rst_snippets/note_snippets/synopsis_output_format.rst b/docs/source/rst_snippets/note_snippets/synopsis_output_format.rst new file mode 100644 index 00000000000..eff5252769a --- /dev/null +++ b/docs/source/rst_snippets/note_snippets/synopsis_output_format.rst @@ -0,0 +1,10 @@ +.. Note:: + + The includes both the output option and output file name. + For example in the command ``scancode -clpieu --json-pp output.json samples``, + ``--json-pp output.json`` is . + +.. WARNING:: + + There isn't a "Default" output option in Versions 3.x onwards, you have to + specify explicitly. diff --git a/docs/source/rst_snippets/other_imp_doc.rst b/docs/source/rst_snippets/other_imp_doc.rst new file mode 100644 index 00000000000..abb712cecb7 --- /dev/null +++ b/docs/source/rst_snippets/other_imp_doc.rst @@ -0,0 +1,13 @@ +Other Important Documentation +----------------------------- + +#. :ref:`scancode_cli_options` +#. :ref:`how_to_run_a_scan` +#. :ref:`tutorials` +#. :ref:`how_to_guides` +#. :ref:`how_it_works` +#. :ref:`contrib_code_dev` +#. :ref:`contrib_doc_dev` +#. :ref:`plugin_arch` +#. :ref:`faq` +#. :ref:`support` diff --git a/docs/source/rst_snippets/output_control_options.rst b/docs/source/rst_snippets/output_control_options.rst new file mode 100644 index 00000000000..0fd3b833f09 --- /dev/null +++ b/docs/source/rst_snippets/output_control_options.rst @@ -0,0 +1,25 @@ +All "Output Control" Scan Options +--------------------------------- + +--strip-root Strip the root directory segment of all paths. + +--full-root Report full, absolute paths. + +.. include:: /rst_snippets/note_snippets/control_strip_full_root.rst + +--ignore-author Ignore a file (and all its findings) + if an author contains a match to the + ```` regular expression. + +--ignore-copyright-holder + Ignore a file (and all its findings) + if a copyright holder contains a match + to the ```` regular expression. + +.. include:: /rst_snippets/warning_snippets/control_ignore_author_copyright.rst + +--only-findings Only return files or directories with + findings for the requested scans. + Files and directories without findings + are omitted (file information is not + treated as findings). diff --git a/docs/source/rst_snippets/output_format_options.rst b/docs/source/rst_snippets/output_format_options.rst new file mode 100644 index 00000000000..d225ec634e9 --- /dev/null +++ b/docs/source/rst_snippets/output_format_options.rst @@ -0,0 +1,34 @@ +All Scan Output Options +----------------------- + +--json FILE Write scan output as compact JSON to FILE. + +--json-pp FILE Write scan output as pretty-printed JSON to + FILE. + +--json-lines FILE Write scan output as JSON Lines to FILE. + +--csv FILE Write scan output as CSV to FILE. + +--html FILE Write scan output as HTML to FILE. + +--custom-output Write scan output to FILE formatted with the + custom Jinja template file. + + Mandatory Sub-option: + + - ``--custom-template FILE`` + +--custom-template FILE Use this Jinja template FILE as a custom + template. + + Sub-Option of: ``--custom-output`` + +--spdx-rdf FILE Write scan output as SPDX RDF to FILE. + +--spdx-tv FILE Write scan output as SPDX Tag/Value to FILE. + +--html-app FILE Write scan output as a mini HTML + application to FILE. + +.. include:: /rst_snippets/warning_snippets/output_htmlapp_dep.rst diff --git a/docs/source/rst_snippets/post_scan_options.rst b/docs/source/rst_snippets/post_scan_options.rst new file mode 100644 index 00000000000..8512237e3e7 --- /dev/null +++ b/docs/source/rst_snippets/post_scan_options.rst @@ -0,0 +1,64 @@ +All "Post-Scan" Options +----------------------- + +--mark-source Set the "is_source" flag to true for directories that + contain over 90% of source files as direct children + and descendants. Count the number of source files in a + directory as a new "source_file_counts" attribute + + Sub-Option of - ``--url`` + +--consolidate Group resources by Packages or license and + copyright holder and return those groupings + as a list of consolidated packages and a list + of consolidated components. + + Sub-Option of - ``--copyright``, ``--license`` and + ``--packages``. + +--filter-clues Filter redundant duplicated clues already + contained in detected licenses, copyright + texts and notices. + +--is-license-text Set the "is_license_text" flag to true for + files that contain mostly license texts and + notices (e.g. over 90% of the content). + + Sub-Option of - ``--info`` and ``--license-text``. + +.. include:: /rst_snippets/warning_snippets/post_is_license_text.rst + +--license-clarity-score Compute a summary license clarity score at + the codebase level. + + Sub-Option of - ``--classify``. + +--license-policy FILE Load a License Policy file and apply it to + the scan at the Resource level. + +--summary Summarize license, copyright and other scans + at the codebase level. + + Sub-Options: + + - ``--summary-by-facet`` + - ``--summary-key-files`` + - ``--summary-with-details`` + +--summary-by-facet Summarize license, copyright and other scans + and group the results by facet. + + Sub-Option of - ``--summary`` and ``--facet``. + +--summary-key-files Summarize license, copyright and other scans + for key, top-level files. Key files are top- + level codebase files such as COPYING, README + and package manifests as reported by the + ``--classify`` option "is_legal", "is_readme", + "is_manifest" and "is_top_level" flags. + + Sub-Option of - ``--classify`` and ``--summary``. + +--summary-with-details Summarize license, copyright and other scans + at the codebase level, keeping intermediate + details at the file and directory level. diff --git a/docs/source/rst_snippets/pre_scan_options.rst b/docs/source/rst_snippets/pre_scan_options.rst new file mode 100644 index 00000000000..e21e7123032 --- /dev/null +++ b/docs/source/rst_snippets/pre_scan_options.rst @@ -0,0 +1,23 @@ +All "Pre-Scan" Options +---------------------- + +--ignore Ignore files matching ````. + +--include Include files matching ````. + +--classify Classify files with flags telling if the + file is a legal, or readme or test file, + etc. + + Sub-Options: + + - ``--license-clarity-score`` + - ``--summary-key-files`` + +--facet Here ```` represents + ``=``. Add the ```` + to files with a path matching ````. + + Sub-Options: + + - ``--summary-by-facet`` diff --git a/docs/source/rst_snippets/stdout.rst b/docs/source/rst_snippets/stdout.rst new file mode 100644 index 00000000000..2919ce2858f --- /dev/null +++ b/docs/source/rst_snippets/stdout.rst @@ -0,0 +1,9 @@ +Print to ``stdout`` (Terminal) +------------------------------ + +If you want to format the output in JSON and print it at stdout, you can replace the JSON filename +with a "-", like ``--json-pp -`` instead of ``--json-pp output.json``. + +The following command will output the scan results in JSON format to ``stdout`` (In the Terminal):: + + ./scancode -clpieu --json-pp - samples/ diff --git a/docs/source/rst_snippets/tip_snippets/stdout.rst b/docs/source/rst_snippets/tip_snippets/stdout.rst new file mode 100644 index 00000000000..a600e5ebe45 --- /dev/null +++ b/docs/source/rst_snippets/tip_snippets/stdout.rst @@ -0,0 +1,4 @@ +.. Tip:: + + You can also output to ``stdout`` instead of a file. For more information refer + :ref:`output_to_stdout`. diff --git a/docs/source/rst_snippets/tip_snippets/synopsis_quickstart.rst b/docs/source/rst_snippets/tip_snippets/synopsis_quickstart.rst new file mode 100644 index 00000000000..3656acc7065 --- /dev/null +++ b/docs/source/rst_snippets/tip_snippets/synopsis_quickstart.rst @@ -0,0 +1,4 @@ +.. Tip:: + + On Windows use ``scancode`` instead of ``path/to/scancode``, irrespective of + the installation method. diff --git a/docs/source/rst_snippets/warning_snippets/control_ignore_author_copyright.rst b/docs/source/rst_snippets/warning_snippets/control_ignore_author_copyright.rst new file mode 100644 index 00000000000..74dbc2744f5 --- /dev/null +++ b/docs/source/rst_snippets/warning_snippets/control_ignore_author_copyright.rst @@ -0,0 +1,4 @@ +.. note:: + + Note that this both the options ``--ignore-author`` and ``--ignore-copyright-holder`` will + ignore a file even if it has other scanned data such as a license or errors. diff --git a/docs/source/rst_snippets/warning_snippets/output_htmlapp_dep.rst b/docs/source/rst_snippets/warning_snippets/output_htmlapp_dep.rst new file mode 100644 index 00000000000..afec603f48f --- /dev/null +++ b/docs/source/rst_snippets/warning_snippets/output_htmlapp_dep.rst @@ -0,0 +1,5 @@ +.. WARNING:: + + The html-app feature has been deprecated and you should use Scancode Workbench instead + to visualize scan results. The official Repository `link `_. + Also refer :ref:`how_to_visualize_scan_results`. diff --git a/docs/source/rst_snippets/warning_snippets/post_is_license_text.rst b/docs/source/rst_snippets/warning_snippets/post_is_license_text.rst new file mode 100644 index 00000000000..78aa69f5d90 --- /dev/null +++ b/docs/source/rst_snippets/warning_snippets/post_is_license_text.rst @@ -0,0 +1,3 @@ +.. WARNING:: + + ``--is-license-text`` is an experimental Option. diff --git a/docs/source/tutorials/data/components_sample.gif b/docs/source/tutorials/data/components_sample.gif new file mode 100644 index 00000000000..eca016f2ebb Binary files /dev/null and b/docs/source/tutorials/data/components_sample.gif differ diff --git a/docs/source/tutorials/data/files_sample.png b/docs/source/tutorials/data/files_sample.png new file mode 100644 index 00000000000..faff8645ad0 Binary files /dev/null and b/docs/source/tutorials/data/files_sample.png differ diff --git a/docs/source/tutorials/data/filter_sample.gif b/docs/source/tutorials/data/filter_sample.gif new file mode 100644 index 00000000000..25e656262f9 Binary files /dev/null and b/docs/source/tutorials/data/filter_sample.gif differ diff --git a/docs/source/tutorials/data/scancode-toolkit-dynamic-html.png b/docs/source/tutorials/data/scancode-toolkit-dynamic-html.png new file mode 100644 index 00000000000..c97b0f7962d Binary files /dev/null and b/docs/source/tutorials/data/scancode-toolkit-dynamic-html.png differ diff --git a/docs/source/tutorials/data/scancode-toolkit-extract.png b/docs/source/tutorials/data/scancode-toolkit-extract.png new file mode 100644 index 00000000000..5a2d7dd952c Binary files /dev/null and b/docs/source/tutorials/data/scancode-toolkit-extract.png differ diff --git a/docs/source/tutorials/data/scancode-toolkit-file-tree.png b/docs/source/tutorials/data/scancode-toolkit-file-tree.png new file mode 100644 index 00000000000..e8d717d41e1 Binary files /dev/null and b/docs/source/tutorials/data/scancode-toolkit-file-tree.png differ diff --git a/docs/source/tutorials/data/scancode-toolkit-filter-chart.png b/docs/source/tutorials/data/scancode-toolkit-filter-chart.png new file mode 100644 index 00000000000..ecc542967e2 Binary files /dev/null and b/docs/source/tutorials/data/scancode-toolkit-filter-chart.png differ diff --git a/docs/source/tutorials/data/scancode-toolkit-filter-zlib.png b/docs/source/tutorials/data/scancode-toolkit-filter-zlib.png new file mode 100644 index 00000000000..8217a0ed2bf Binary files /dev/null and b/docs/source/tutorials/data/scancode-toolkit-filter-zlib.png differ diff --git a/docs/source/tutorials/data/views_sample.gif b/docs/source/tutorials/data/views_sample.gif new file mode 100644 index 00000000000..742a69f3aae Binary files /dev/null and b/docs/source/tutorials/data/views_sample.gif differ diff --git a/docs/source/tutorials/data/workbench_dashboard.png b/docs/source/tutorials/data/workbench_dashboard.png new file mode 100644 index 00000000000..09370995009 Binary files /dev/null and b/docs/source/tutorials/data/workbench_dashboard.png differ diff --git a/docs/source/tutorials/data/workbench_launch.png b/docs/source/tutorials/data/workbench_launch.png new file mode 100644 index 00000000000..c5479a00415 Binary files /dev/null and b/docs/source/tutorials/data/workbench_launch.png differ diff --git a/docs/source/tutorials/how_to_add_a_post_scan_plugin.rst b/docs/source/tutorials/how_to_add_a_post_scan_plugin.rst new file mode 100644 index 00000000000..ae20ca609e5 --- /dev/null +++ b/docs/source/tutorials/how_to_add_a_post_scan_plugin.rst @@ -0,0 +1,290 @@ +.. _how_to_add_post_scan_plugin: + +Add A Post-Scan Plugin +====================== + +Built-In vs. Optional Installation +---------------------------------- + +Built-In +^^^^^^^^ + +Some post-scan plugins are installed when ScanCode itself is installed, e.g., the +:ref:`license_policy_plugin`, whose code is located here:: + + https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/plugin_license_policy.py + +These plugins do not require any additional installation steps and can be used as soon as ScanCode +is up and running. + +Optional +^^^^^^^^ + +ScanCode is also designed to use post-scan plugins that must be installed separately from the +installation of ScanCode. The code for this sort of plugin is located here:: + + https://github.com/nexB/scancode-toolkit/tree/develop/plugins/ + +This wiki page will focus on optional post-scan plugins. + +Example Post-Scan Plugin: Hello ScanCode +---------------------------------------- + +To illustrate the creation of a simple post-scan plugin, we'll create a hypothetical plugin named +``Hello ScanCode``, which will print ``Hello ScanCode!`` in your terminal after you've run a scan. +Your command will look like something like this:: + + scancode -i -n 2 --hello --json + +We'll start by creating three folders: + +1. Top-level folder -- ``/scancode-hello/`` +2. 2nd-level folder -- ``/src/`` +3. 3rd-level folder -- ``/hello_scancode/`` + +1. Top-level folder -- ``/scancode-hello/`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- In the ``/scancode-toolkit/plugins/`` directory, add a folder with a relevant name, e.g., + ``scancode-hello``. This folder will hold all of your plugin code. + +- Inside the ``/scancode-hello/`` folder you'll need to add a folder named ``src`` and 7 files. + +1. ``/src/`` -- This folder will contain your primary Python code and is discussed in more detail + in the following section. + +The 7 Files are: + +1. ``.gitignore`` -- See, e.g., + `/plugins/scancode-ignore-binaries/.gitignore `_ + +:: + + /build/ + /dist/ + +2. ``apache-2.0.LICENSE`` -- See, e.g., + `/plugins/scancode-ignore-binaries/apache-2.0.LICENSE `_ + +3. ``MANIFEST.in`` + +:: + + graft src + + include setup.py + include setup.cfg + include .gitignore + include README.md + include MANIFEST.in + include NOTICE + include apache-2.0.LICENSE + + global-exclude *.py[co] __pycache__ *.*~ + +4. ``NOTICE`` -- See, e.g., + `/plugins/scancode-ignore-binaries/NOTICE `__ + +5. ``README.md`` + +6. ``setup.cfg`` + +:: + + [metadata] + license_file = NOTICE + + [bdist_wheel] + universal = 1 + + [aliases] + release = clean --all bdist_wheel + +7. ``setup.py`` -- This is an example of what our ``setup.py`` file would look like: + +:: + + #!/usr/bin/env python + # -*- encoding: utf-8 -*- + + from __future__ import absolute_import + from __future__ import print_function + + from glob import glob + from os.path import basename + from os.path import join + from os.path import splitext + + from setuptools import find_packages + from setuptools import setup + + + desc = '''A ScanCode post-scan plugin to to illustrate the creation of a simple post-scan plugin.''' + + setup( + name='scancode-hello', + version='1.0.0', + license='Apache-2.0 with ScanCode acknowledgment', + description=desc, + long_description=desc, + author='nexB', + author_email='info@aboutcode.org', + url='https://github.com/nexB/scancode-toolkit/plugins/scancode-categories', + packages=find_packages('src'), + package_dir={'': 'src'}, + py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')], + include_package_data=True, + zip_safe=False, + classifiers=[ + # complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: Apache Software License', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.7', + 'Topic :: Utilities', + ], + keywords=[ + 'scancode', 'plugin', 'post-scan' + ], + install_requires=[ + 'scancode-toolkit', + ], + entry_points={ + 'scancode_post_scan': [ + 'hello = hello_scancode.hello_scancode:SayHello', + ], + } + ) + +2. 2nd-level folder -- ``/src/`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Add an ``__init__.py`` file inside the ``src`` folder. This file can be empty, and is used to + indicate that the folder should be treated as a Python package directory. + +#. Add a folder that will contain our primary code -- we'll name the folder ``hello_scancode``. + If you look at the example of the ``setup.py`` file above, you'll see this line in the + ``entry_points`` section: + +:: + + 'hello = hello_scancode.hello_scancode:SayHello', + +- ``hello`` refers to the name of the command flag. +- The first ``hello_scancode`` is the name of the folder we just created. +- The second ``hello_scancode`` is the name of the ``.py`` file containing our code (discussed in + the next section). +- ``SayHello`` is the name of the ``PostScanPlugin`` class we create in that file (see sample + code below). + +3. 3rd-level folder -- ``/hello_scancode/`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Add an ``__init__.py`` file inside the ``hello_scancode`` folder. As noted above, this file can + be empty. + +#. Add a ``hello_scancode.py`` file. + +Notice at the top of the file +""""""""""""""""""""""""""""" + +:: + + # + # Copyright (c) 2019 nexB Inc. and others. All rights reserved. + # http://nexb.com and https://github.com/nexB/scancode-toolkit/ + # The ScanCode software is licensed under the Apache License version 2.0. + # Data generated with ScanCode require an acknowledgment. + # ScanCode is a trademark of nexB Inc. + # + # You may not use this software except in compliance with the License. + # You may obtain a copy of the License at: http://apache.org/licenses/LICENSE-2.0 + # Unless required by applicable law or agreed to in writing, software distributed + # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + # CONDITIONS OF ANY KIND, either express or implied. See the License for the + # specific language governing permissions and limitations under the License. + # + # When you publish or redistribute any data created with ScanCode or any ScanCode + # derivative work, you must accompany this data with the following acknowledgment: + # + # Generated with ScanCode and provided on an "AS IS" BASIS, WITHOUT WARRANTIES + # OR CONDITIONS OF ANY KIND, either express or implied. No content created from + # ScanCode should be considered or used as legal advice. Consult an Attorney + # for any legal advice. + # ScanCode is a free software code scanning tool from nexB Inc. and others. + # Visit https://github.com/nexB/scancode-toolkit/ for support and download. + +Imports +""""""" + +:: + + from __future__ import absolute_import + from __future__ import division + from __future__ import print_function + from __future__ import unicode_literals + + from plugincode.post_scan import PostScanPlugin + from plugincode.post_scan import post_scan_impl + from scancode import CommandLineOption + from scancode import POST_SCAN_GROUP + +Create a ``PostScanPlugin`` class +""""""""""""""""""""""""""""""""" + +The ``PostScanPlugin`` class (see L40-L45 +`code `__) +inherits from the ``CodebasePlugin`` class (see L139-L150 +`code `_ ), +which inherits from the ``BasePlugin`` class (see L38-L136 +`code `__ ). + +:: + + @post_scan_impl + class SayHello(PostScanPlugin): + """ + Illustrate a simple "Hello World" post-scan plugin. + """ + + options = [ + CommandLineOption(('--hello',), + is_flag=True, default=False, + help='Generate a simple "Hello ScanCode" greeting in the terminal.', + help_group=POST_SCAN_GROUP) + ] + + def is_enabled(self, hello, **kwargs): + return hello + + def process_codebase(self, codebase, hello, **kwargs): + """ + Say hello. + """ + if not self.is_enabled(hello): + return + + print('\nHello ScanCode!!\n') + +Load the plugin +--------------- + +- To load and use the plugin in the normal course, navigate to the plugin's root folder (in this + example: ``/plugins/scancode-hello/``) and run ``pip install .`` (don't forget the final ``.``). + +- If you're developing and want to test your work, save your edits and run ``pip install -e .`` + from the same folder. + +More-complex examples +--------------------- + +This Hello ScanCode example is quite simple. For examples of more-complex structures and +functionalities you can take a look at the other post-scan plugins for guidance and ideas. + +One good example is the License Policy post-scan plugin. This plugin is installed when ScanCode +is installed and consequently is not located in the ``/plugins/`` directory used for +manually-installed post-scan plugins. The code for the License Policy plugin can be found at +`/scancode-toolkit/src/licensedcode/plugin_license_policy.py `_ +and illustrates how a plugin can be used to analyze the results of a ScanCode scan using external +data files and add the results of that analysis as a new field in the ScanCode JSON output file. diff --git a/docs/source/tutorials/how_to_extract_archives.rst b/docs/source/tutorials/how_to_extract_archives.rst new file mode 100644 index 00000000000..244a2eeead5 --- /dev/null +++ b/docs/source/tutorials/how_to_extract_archives.rst @@ -0,0 +1,20 @@ +.. _how_to_extract_archives: + +How To Extract Archives +======================= + +ScanCode Toolkit provides archive extraction. This command can be used before running a scan over +a codebase in order to ensure all archives are extracted. Archives found inside an extracted +archive are extracted recursively. Extraction is done in-place in a directory and named after the +archive with ``'-extract'`` appended. + +.. image:: data/scancode-toolkit-extract.png + +Usage: +------ + +:: + + extractcode [OPTIONS] + +.. include:: /rst_snippets/extract.rst diff --git a/docs/source/tutorials/how_to_format_scan_output.rst b/docs/source/tutorials/how_to_format_scan_output.rst new file mode 100644 index 00000000000..2ab8384fe82 --- /dev/null +++ b/docs/source/tutorials/how_to_format_scan_output.rst @@ -0,0 +1,44 @@ +.. _how_to_specify_output_format: + +How to specify Scancode Output Format +===================================== + +A basic overview of formatting Scancode Output is presented here. + +More information on :ref:`cli_output_format`. + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +JSON +---- + +If you want JSON output of ScanCode results, you can pass the ``--json`` argument to ScanCode. +The following commands will output scan results in a formatted json file: + +* ``scancode --json /path/to/output.json /path/to/target/dir`` + +* ``scancode --json-pp /path/to/output.json /path/to/target/dir`` + +* ``scancode --json-lines /path/to/output.json /path/to/target/dir`` + +To compare the JSON output in different formats refer :ref:`comparing_json`. + +.. include:: /rst_snippets/stdout.rst + +HTML +---- + +If you want HTML output of ScanCode results, you can pass the ``--html`` argument to ScanCode. +The following commands will output scan results in a formatted HTML page or simple web application: + +* ``scancode --html /path/to/output.html /path/to/target/dir`` + +* ``scancode --html-app /path/to/output.html /path/to/target/dir`` + +For more details on the HTML output format refer :ref:`output_html`. + +.. WARNING:: + + The ``--html-app`` option has been deprecated, use Scancode Workbench instead. + +.. include:: /rst_snippets/custom_output_format.rst diff --git a/docs/source/tutorials/how_to_run_a_scan.rst b/docs/source/tutorials/how_to_run_a_scan.rst new file mode 100644 index 00000000000..cc479a37f2d --- /dev/null +++ b/docs/source/tutorials/how_to_run_a_scan.rst @@ -0,0 +1,131 @@ +How to Run a Scan +================= + +In this simple tutorial example, we perform a basic scan on the ``samples`` directory distributed +by default with Scancode. + +Prerequisites +------------- + +Refer :ref:`install_prerequisites` to make sure the correct Python Interpreters and other +prerequisites are satisfied. + +Setting up a Virtual Environment +-------------------------------- + +ScanCode Toolkit supports Python 3 in 3.2.x and later versions, so if you are using 3.2.x or later +versions, you should create a `virtual environment `_ +using the ``Virtualenv`` tool with a python 3.6 interpreter. + +The following commands set up and activate the Virtual Environment ``venv-scancode-py3``: + +:: + + virtualenv -p /usr/bin/python3.6 venv-scancode-py3 + source venv-scancode-py3/bin/activate + + +If you are using Scancode Toolkit 3.1.0 and earlier versions, they are not compatible with +Python 3.x so you should create the virtual environment with a python 2.7 interpreter:: + + virtualenv -p /usr/bin/python2.7 venv-scancode-py2 + source venv-scancode-py2/bin/activate + +Setting up Scancode Toolkit +--------------------------- + +Get ScanCode Toolkit from ``pip``:: + + pip install scancode-toolkit + +.. Note:: + + You can install a specific version of Scancode Toolkit like ``scancode-toolkit==3.1.1``. + +Looking into Files +------------------ + +As mentioned previously, we are going to perform the scan on the ``samples`` directory distributed +by default with Scancode Toolkit. Here's the directory structure and respective files: + +.. image:: /tutorials/data/files_sample.png + +We notice here that the sample files contain a package ``zlib.tar.gz``. So we have to extract the +archive before running the scan, to also scan the files inside this package. + +Performing Extraction +--------------------- + +To extract the packages inside ``samples`` directory:: + + extractcode samples + +This extracts the zlib.tar.gz package: + +.. image:: /rst_snippets/data/extractcode.png + +.. note:: + + ``--shallow`` option can be used to recursively extract packages. + +Deciding Scan Options +--------------------- + +These are some common scan options you should consider using before you start the actual scan, +according to your requirements. + +#. The Basic Scan options, i.e. ``-c``, ``-l``, ``-p``, ``-e``, ``-u``, and ``-i`` are to be + decided, according to your requirements. If you do not need one specific type of information + (say, licenses), consider removing it, because the more things you scan for, longer it will take + for the scan to complete. + +.. Note:: + + You have to select these options explicitly, as they are not default anymore from + versions 3.x, unlike earlier versions having ``-clp`` as default. + +#. ``--license-score INTEGER`` is to be set if license matching accuracy is desired (Default is 0, + and increasing this means a more accurate match). Also, using ``--license-text`` includes the + matched text to the result. + +#. ``-n INTEGER`` option can be used to speed up the scan using multiple parallel processes. + +#. ``--timeout FLOAT`` option can be used to skip a file taking a lot of time to scan. + +#. ``--ignore `` can be used to skip certain group of files. + +#. ```` is also a very important decision when you want to use the output + for specific tasks/have requirements. Here we are using ``json`` as ScanCode Workbench imports + ``json`` files only. + +For the complete list of options, refer :ref:`cli_list_options`. + +Running The Scan +---------------- + +Now, run the scan with the options decided:: + + scancode -clpeui -n 2 --ignore "*.java" --json-pp sample.json samples + +A Progress report is shown:: + + Setup plugins... + Collect file inventory... + Scan files for: info, licenses, copyrights, packages, emails, urls with 2 process(es)... + [####################] 29 + Scanning done. + Summary: info, licenses, copyrights, packages, emails, urls with 2 process(es) + Errors count: 0 + Scan Speed: 1.09 files/sec. 40.67 KB/sec. + Initial counts: 49 resource(s): 36 file(s) and 13 directorie(s) + Final counts: 42 resource(s): 29 file(s) and 13 directorie(s) for 1.06 MB + Timings: + scan_start: 2019-09-24T203514.573671 + scan_end: 2019-09-24T203545.649805 + setup_scan:licenses: 4.30s + setup: 4.30s + scan: 26.62s + total: 31.14s + Removing temporary files...done. + +.. include:: /rst_snippets/other_imp_doc.rst diff --git a/docs/source/tutorials/how_to_set_what_will_be_detected_in_a_scan.rst b/docs/source/tutorials/how_to_set_what_will_be_detected_in_a_scan.rst new file mode 100644 index 00000000000..a5b13772365 --- /dev/null +++ b/docs/source/tutorials/how_to_set_what_will_be_detected_in_a_scan.rst @@ -0,0 +1,72 @@ +.. _how_to_set_what_scan_detects: + +How to set what will be detected in Scan +======================================== + +ScanCode allows you to scan a codebase for license, copyright and other interesting information +that can be discovered in files. The following options are available for detection when using +ScanCode Toolkit: + +.. include:: /rst_snippets/basic_options.rst + +Different Scans +--------------- + +The following examples will use the ``samples`` directory that is provided with the `ScanCode +Toolkit code `_. All examples will +be saved in the JSON format, which can be loaded into Scancode Workbench for visualization. See +:ref:`how_to_visualize_scan_results` for more information. Another output format option is a +static html file. See :ref:`cli_output_format` for more information. + +.. include:: /rst_snippets/note_snippets/synopsis_install_quickstart.rst + +Scan for all clues: +^^^^^^^^^^^^^^^^^^^ + +To scan for licenses, copyrights, urls, emails, package information, and file information + +:: + + scancode -clipeu --json output.json samples + + +Scan for license and copyright clues: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + scancode -cl --json-pp output.json samples + + +Scan for emails and URLs: +^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + scancode -eu --json-pp output.json samples + + +Scan for package information: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + scancode -p --json-pp output.json samples + + +Scan for file information: +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + scancode -i --json-pp output.json samples + + +To see more example scans: +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + scancode --examples + +For more information, refer :ref:`cli_list_options`. diff --git a/docs/source/tutorials/how_to_visualize_scan_results.rst b/docs/source/tutorials/how_to_visualize_scan_results.rst new file mode 100644 index 00000000000..373b78dc38c --- /dev/null +++ b/docs/source/tutorials/how_to_visualize_scan_results.rst @@ -0,0 +1,114 @@ +.. _how_to_visualize_scan_results: + +How to Visualize Scan results +============================= + +In this simple tutorial example, we import results from a basic scan performed on the ``samples`` +directory distributed by default with Scancode, and visualize the outputs through +Scancode Workbench. + +.. WARNING:: + + This tutorial uses the 3.1.1 version of Scancode Toolkit, and Scancode Workbench 3.1.0 (This + beta version of ScanCode Workbench is compatible with scans from any ScanCode Toolkit develop + version/branch at or after v3.0.2). If you are using an older version of Scancode Toolkit, check + respective versions of this documentation. Also refer the Scancode Workbench + `release highlights `_. + +.. + [ToDo] + Add Windows/MacOS Support and remove this WARNING. + +.. WARNING:: + + This tutorial is for Linux based systems presently. Additional Help for Windows/MacOS will be + added. + +Setting up Scancode Workbench +----------------------------- + +According to the Install :ref:`workbench_requirements`, we have to install Node.js 6.x or later. +Refer to Node.js install `instructions `_ here. + +You can also run the following commands:: + + sudo apt-get install -y nodejs + sudo npm install npm@5.2.0 -g + +After ``Node.js`` and ``npm`` is installed and get the Scancode Workbench 3.1.0 tarball from the +`Workbench Release Page `_. Extract +the package and then launch Scancode Workbench:: + + ./ScanCode-Workbench + +This opens the Workbench. + +.. note:: + + You can also build Scancode Toolkit and Scancode Workbench from source. Clone the repository, + don't forget to checkout to the specific release using ``git checkout ``, and follow + the build instructions. You'll also have to create a Python 2.7 Virtual Environment, or use the + same venv-3.1.1 created here at :ref:`how_to_run_a_scan`. + +.. + [ToDo] + Update from Python 2.x to 3.x + +Importing Data into Scancode Workbench +-------------------------------------- + +#. Click on the ``File -> Import JSON File`` or Press ``Ctrl + I``. + +#. Select the file from the pop-up window. + +#. Select a Name and Location (where you want it later) for the .sqlite output file. + +.. note:: + + You can also import a .sqlite file you've saved in the past to load scan results. As it is much + faster, once you've imported the JSON file and a corresponding SQLite file has been created, + you shouldn't repeat this. Instead, import the SQLite file next time you want to visualize the + same scan result. + +Visualization +------------- + +Views +^^^^^ + +Refer :ref:`workbench_views` for more information on Visualization. + +The dashboard has a general overview. + +.. image:: /tutorials/data/workbench_dashboard.png + +There are 3 principal views (They appear in the same order in the GIFs): + +- Chart Summary View, +- Table View, +- Components Summary View. + +.. image:: /tutorials/data/views_sample.gif + +Filters +^^^^^^^ + +You can also click any file/directory on the file list located on the right, to filter the results +such that it only contains results from that File/Directory. + +.. image:: /tutorials/data/filter_sample.gif + +Components +^^^^^^^^^^ + +Refer :ref:`workbench_components` for more information on Components. + +In the table view, + +#. Apply filters by selecting Files/Directories +#. Right Click on the Left Panel +#. Select ``Edit Component`` +#. A pop-up opens with fields, make necessary edits and Save. +#. Go to the Component Summary View to see the Component. + +.. image:: /tutorials/data/components_sample.gif diff --git a/docs/source/tutorials/index.rst b/docs/source/tutorials/index.rst new file mode 100644 index 00000000000..4751d213620 --- /dev/null +++ b/docs/source/tutorials/index.rst @@ -0,0 +1,14 @@ +.. _tutorials: + +**Basic Tutorials** +=================== + +.. toctree:: + :maxdepth: 2 + + how_to_run_a_scan + how_to_visualize_scan_results + how_to_extract_archives + how_to_format_scan_output + how_to_set_what_will_be_detected_in_a_scan + how_to_add_a_post_scan_plugin