diff --git a/REFERENCE.rst b/REFERENCE.rst index 4523ed4b..5fe50426 100644 --- a/REFERENCE.rst +++ b/REFERENCE.rst @@ -324,7 +324,7 @@ Options Show configuration file format help and exit. This option will print out examples of the the YAML configuration file. - Keys configuration are: `column_renamings`, `required_columns` and `column_filters` + Keys configuration are: `field_renamings`, `required_fields` and `field_filters` $ about transform --help-format @@ -335,5 +335,5 @@ Options Special Notes ============= -When using the `column_filters` configuration, all the standard required columns -(`about_resource` and `name`) and the user defined `required_columns` need to be included. +When using the `field_filters` configuration, all the standard required columns +(`about_resource` and `name`) and the user defined `required_fields` need to be included. diff --git a/docs/UsingAboutCodetoDocumentYourSoftwareAssets.md b/docs/UsingAboutCodetoDocumentYourSoftwareAssets.md index 7632e77f..688105c4 100644 --- a/docs/UsingAboutCodetoDocumentYourSoftwareAssets.md +++ b/docs/UsingAboutCodetoDocumentYourSoftwareAssets.md @@ -245,14 +245,14 @@ A transform configuration file is used to describe which transformations and val The attributes that can be set in a configuration file are: -* column_renamings: +* field_renamings: An optional map of source CSV column name to target CSV new column name that is used to rename CSV columns. For instance with this configuration the columns "Directory/Location" will be renamed to "about_resource" and "foo" to "bar": - column_renamings: + field_renamings: 'Directory/Location' : about_resource foo : bar @@ -260,7 +260,7 @@ The renaming is always applied first before other transforms and checks. All other column names referenced below are these that exist AFTER the renaming have been applied to the existing column names. -* required_columns: +* required_fields: An optional list of required column names that must have a value, beyond the standard columns names. If a source CSV does not have such a column or a row is missing a value for a required column, an error is reported. @@ -269,11 +269,11 @@ For instance with this configuration an error will be reported if the columns "name" and "version" are missing or if any row does not have a value set for these columns: - required_columns: + required_fields: - name - version -* column_filters: +* field_filters: An optional list of column names that should be kept in the transformed CSV. If this list is provided, all the columns from the source CSV that should be kept in the target CSV must be listed be even if they are standard or required @@ -283,7 +283,7 @@ transformed target CSV. For instance with this configuration the target CSV will only contains the "name" and "version" columns and no other column: - column_filters: + field_filters: - name - version diff --git a/src/attributecode/transform.py b/src/attributecode/transform.py index a8ea1506..c14e4add 100644 --- a/src/attributecode/transform.py +++ b/src/attributecode/transform.py @@ -49,12 +49,12 @@ def transform_csv_to_csv(location, output, transformer): rows = read_csv_rows(location) - column_names, data, errors = transform_csv(rows, transformer) + field_names, data, errors = transform_csv(rows, transformer) if errors: return errors else: - write_csv(output, data, column_names) + write_csv(output, data, field_names) return [] def transform_json_to_json(location, output, transformer): @@ -82,7 +82,7 @@ def transform_csv(rows, transformer): Read a list of list of CSV-like data `rows` and apply transformations using the `transformer` Transformer. Return a tuple of: - ([column names...], [transformed ordered dict...], [Error objects..]) + ([field names...], [transformed ordered dict...], [Error objects..]) """ if not transformer: @@ -90,28 +90,28 @@ def transform_csv(rows, transformer): errors = [] rows = iter(rows) - column_names = next(rows) - column_names = transformer.clean_columns(column_names) + field_names = next(rows) + field_names = transformer.clean_fields(field_names) - dupes = check_duplicate_columns(column_names) + dupes = check_duplicate_fields(field_names) if dupes: - msg = 'Duplicated column name: {name}' + msg = 'Duplicated field name: {name}' errors.extend(Error(CRITICAL, msg.format(name)) for name in dupes) - return column_names, [], errors + return field_names, [], errors - column_names = transformer.apply_renamings(column_names) + field_names = transformer.apply_renamings(field_names) - # convert to dicts using the renamed columns - data = [OrderedDict(zip_longest(column_names, row)) for row in rows] + # convert to dicts using the renamed fields + data = [OrderedDict(zip_longest(field_names, row)) for row in rows] - if transformer.column_filters: - data = list(transformer.filter_columns(data)) - column_names = [c for c in column_names if c in transformer.column_filters] + if transformer.field_filters: + data = list(transformer.filter_fields(data)) + field_names = [c for c in field_names if c in transformer.field_filters] - errors = transformer.check_required_columns(data) + errors = transformer.check_required_fields(data) - return column_names, data, errors + return field_names, data, errors def transform_json(data, transformer): @@ -126,7 +126,14 @@ def transform_json(data, transformer): errors = [] new_data = [] - renamings = transformer.column_renamings + renamings = transformer.field_renamings + #if json is output of scancode-toolkit + try: + if(data["headers"][0]["tool_name"] == "scancode-toolkit"): + #only takes data inside "files" + data = data["files"] + except: + pass if isinstance(data, list): for item in data: element, err = process_json_keys(item, renamings, transformer) @@ -151,12 +158,12 @@ def process_json_keys(data, renamings, transformer): o_dict[k] = data[k] new_data = [o_dict] - if transformer.column_filters: - new_data = list(transformer.filter_columns(new_data)) + if transformer.field_filters: + new_data = list(transformer.filter_fields(new_data)) else: new_data = list(new_data) - errors = transformer.check_required_columns(new_data) + errors = transformer.check_required_fields(new_data) return new_data, errors @@ -167,42 +174,42 @@ def process_json_keys(data, renamings, transformer): The attributes that can be set in a configuration file are: -* column_renamings: -An optional map of source CSV column name to target CSV new column name that -is used to rename CSV columns. +* field_renamings: +An optional map of source CSV or JSON field name to target CSV/JSON new field name that +is used to rename CSV fields. -For instance with this configuration the columns "Directory/Location" will be +For instance with this configuration the fields "Directory/Location" will be renamed to "about_resource" and "foo" to "bar": - column_renamings: + field_renamings: 'Directory/Location' : about_resource foo : bar The renaming is always applied first before other transforms and checks. All -other column names referenced below are these that exist AFTER the renamings -have been applied to the existing column names. +other field names referenced below are these that exist AFTER the renamings +have been applied to the existing field names. -* required_columns: -An optional list of required column names that must have a value, beyond the -standard columns names. If a source CSV does not have such a column or a row is -missing a value for a required column, an error is reported. +* required_fields: +An optional list of required field names that must have a value, beyond the +standard fields names. If a source CSV/JSON does not have such a field or a row is +missing a value for a required field, an error is reported. -For instance with this configuration an error will be reported if the columns +For instance with this configuration an error will be reported if the fields "name" and "version" are missing or if any row does not have a value set for -these columns: - required_columns: +these fields: + required_fields: - name - version -* column_filters: -An optional list of column names that should be kept in the transformed CSV. If -this list is provided, all the columns from the source CSV that should be kept -in the target CSV must be listed be even if they are standard or required -columns. If this list is not provided, all source CSV columns are kept in the -transformed target CSV. +* field_filters: +An optional list of field names that should be kept in the transformed CSV/JSON. If +this list is provided, all the fields from the source CSV/JSON that should be kept +in the target CSV/JSON must be listed be even if they are standard or required +fields. If this list is not provided, all source CSV/JSON fields are kept in the +transformed target CSV/JSON. -For instance with this configuration the target CSV will only contains the "name" -and "version" columns and no other column: - column_filters: +For instance with this configuration the target CSV/JSON will only contains the "name" +and "version" fields and no other field: + field_filters: - name - version ''' @@ -212,22 +219,22 @@ def process_json_keys(data, renamings, transformer): class Transformer(object): __doc__ = tranformer_config_help - column_renamings = attr.attrib(default=attr.Factory(dict)) - required_columns = attr.attrib(default=attr.Factory(list)) - column_filters = attr.attrib(default=attr.Factory(list)) + field_renamings = attr.attrib(default=attr.Factory(dict)) + required_fields = attr.attrib(default=attr.Factory(list)) + field_filters = attr.attrib(default=attr.Factory(list)) - # a list of all the standard columns from AboutCode toolkit - standard_columns = attr.attrib(default=attr.Factory(list), init=False) - # a list of the subset of standard columns that are essential and MUST be + # a list of all the standard fields from AboutCode toolkit + standard_fields = attr.attrib(default=attr.Factory(list), init=False) + # a list of the subset of standard fields that are essential and MUST be # present for AboutCode toolkit to work - essential_columns = attr.attrib(default=attr.Factory(list), init=False) + essential_fields = attr.attrib(default=attr.Factory(list), init=False) # called by attr after the __init__() def __attrs_post_init__(self, *args, **kwargs): from attributecode.model import About about = About() - self.essential_columns = list(about.required_fields) - self.standard_columns = [f.name for f in about.all_fields()] + self.essential_fields = list(about.required_fields) + self.standard_fields = [f.name for f in about.all_fields()] @classmethod def default(cls): @@ -235,9 +242,9 @@ def default(cls): Return a default Transformer with built-in transforms. """ return cls( - column_renamings={}, - required_columns=[], - column_filters=[], + field_renamings={}, + required_fields=[], + field_filters=[], ) @classmethod @@ -249,18 +256,18 @@ def from_file(cls, location): with io.open(location, encoding='utf-8') as conf: data = saneyaml.load(replace_tab_with_spaces(conf.read())) return cls( - column_renamings=data.get('column_renamings', {}), - required_columns=data.get('required_columns', []), - column_filters=data.get('column_filters', []), + field_renamings=data.get('field_renamings', {}), + required_fields=data.get('required_fields', []), + field_filters=data.get('field_filters', []), ) - def check_required_columns(self, data): + def check_required_fields(self, data): """ Return a list of Error for a `data` list of ordered dict where a - dict is missing a value for a required column name. + dict is missing a value for a required field name. """ errors = [] - required = set(self.essential_columns + self.required_columns) + required = set(self.essential_fields + self.required_fields) if not required: return [] @@ -270,54 +277,54 @@ def check_required_columns(self, data): continue missings = ', '.join(missings) - msg = 'Row {rn} is missing required values for columns: {missings}' + msg = 'Row {rn} is missing required values for fields: {missings}' errors.append(Error(CRITICAL, msg.format(**locals()))) return errors - def apply_renamings(self, column_names): + def apply_renamings(self, field_names): """ - Return a tranformed list of `column_names` where columns are renamed + Return a tranformed list of `field_names` where fields are renamed based on this Transformer configuration. """ - renamings = self.column_renamings + renamings = self.field_renamings if not renamings: - return column_names + return field_names renamings = {n.lower(): rn.lower() for n, rn in renamings.items()} renamed = [] - for name in column_names: + for name in field_names: name = name.lower() new_name = renamings.get(name, name) renamed.append(new_name) return renamed - def clean_columns(self, column_names): + def clean_fields(self, field_names): """ - Apply standard cleanups to a list of columns and return these. + Apply standard cleanups to a list of fields and return these. """ - if not column_names: - return column_names - return [c.strip().lower() for c in column_names] + if not field_names: + return field_names + return [c.strip().lower() for c in field_names] - def filter_columns(self, data): + def filter_fields(self, data): """ Yield transformed dicts from a `data` list of dicts keeping only - columns with a name in the `column_filters`of this Transformer. - Return the data unchanged if no `column_filters` exists. + fields with a name in the `field_filters`of this Transformer. + Return the data unchanged if no `field_filters` exists. """ - column_filters = set(self.clean_columns(self.column_filters)) + field_filters = set(self.clean_fields(self.field_filters)) for entry in data: - items = ((k, v) for k, v in entry.items() if k in column_filters) + items = ((k, v) for k, v in entry.items() if k in field_filters) yield OrderedDict(items) -def check_duplicate_columns(column_names): +def check_duplicate_fields(field_names): """ - Check that there are no duplicate in the `column_names` list of column name - strings, ignoring case. Return a list of unique duplicated column names. + Check that there are no duplicate in the `field_names` list of field name + strings, ignoring case. Return a list of unique duplicated field names. """ - counted = Counter(c.lower() for c in column_names) - return [column for column, count in sorted(counted.items()) if count > 1] + counted = Counter(c.lower() for c in field_names) + return [field for field, count in sorted(counted.items()) if count > 1] def read_csv_rows(location): @@ -339,13 +346,13 @@ def read_json(location): return data -def write_csv(location, data, column_names): # NOQA +def write_csv(location, data, field_names): # NOQA """ Write a CSV file at `location` the `data` list of ordered dicts using the - `column_names`. + `field_names`. """ with io.open(location, 'w', encoding='utf-8', newline='\n') as csvfile: - writer = csv.DictWriter(csvfile, fieldnames=column_names) + writer = csv.DictWriter(csvfile, fieldnames=field_names) writer.writeheader() writer.writerows(data) diff --git a/tests/test_transform.py b/tests/test_transform.py index f3d7902b..f9cf081e 100644 --- a/tests/test_transform.py +++ b/tests/test_transform.py @@ -68,4 +68,17 @@ def test_transform_data_json_as_array(self): for item in data: keys = list(item.keys()) expect = [u'about_resource', u'name', u'version'] - assert keys == expect \ No newline at end of file + assert keys == expect + + def test_transform_data_json_scancode(self): + test_file = get_test_loc('test_transform/input_scancode.json') + configuration = get_test_loc('test_transform/configuration_scancode') + json_data = read_json(test_file) + transformer = Transformer.from_file(configuration) + data, err = transform_json(json_data, transformer) + keys = [] + for item in data: + keys = list(item.keys()) + expect = [u'about_resource', u'name', u'new_extension'] + assert keys == expect + diff --git a/tests/testdata/test_cmd/help/about_transform_config_help.txt b/tests/testdata/test_cmd/help/about_transform_config_help.txt index 118995b3..d7bb5066 100644 --- a/tests/testdata/test_cmd/help/about_transform_config_help.txt +++ b/tests/testdata/test_cmd/help/about_transform_config_help.txt @@ -5,42 +5,42 @@ format, using the same format as an .ABOUT file. The attributes that can be set in a configuration file are: -* column_renamings: -An optional map of source CSV column name to target CSV new column name that -is used to rename CSV columns. +* field_renamings: +An optional map of source CSV or JSON field name to target CSV/JSON new field name that +is used to rename CSV fields. -For instance with this configuration the columns "Directory/Location" will be +For instance with this configuration the fields "Directory/Location" will be renamed to "about_resource" and "foo" to "bar": - column_renamings: + field_renamings: 'Directory/Location' : about_resource foo : bar The renaming is always applied first before other transforms and checks. All -other column names referenced below are these that exist AFTER the renamings -have been applied to the existing column names. +other field names referenced below are these that exist AFTER the renamings +have been applied to the existing field names. -* required_columns: -An optional list of required column names that must have a value, beyond the -standard columns names. If a source CSV does not have such a column or a row is -missing a value for a required column, an error is reported. +* required_fields: +An optional list of required field names that must have a value, beyond the +standard fields names. If a source CSV/JSON does not have such a field or a row is +missing a value for a required field, an error is reported. -For instance with this configuration an error will be reported if the columns +For instance with this configuration an error will be reported if the fields "name" and "version" are missing or if any row does not have a value set for -these columns: - required_columns: +these fields: + required_fields: - name - version -* column_filters: -An optional list of column names that should be kept in the transformed CSV. If -this list is provided, all the columns from the source CSV that should be kept -in the target CSV must be listed be even if they are standard or required -columns. If this list is not provided, all source CSV columns are kept in the -transformed target CSV. +* field_filters: +An optional list of field names that should be kept in the transformed CSV/JSON. If +this list is provided, all the fields from the source CSV/JSON that should be kept +in the target CSV/JSON must be listed be even if they are standard or required +fields. If this list is not provided, all source CSV/JSON fields are kept in the +transformed target CSV/JSON. -For instance with this configuration the target CSV will only contains the "name" -and "version" columns and no other column: - column_filters: +For instance with this configuration the target CSV/JSON will only contains the "name" +and "version" fields and no other field: + field_filters: - name - version diff --git a/tests/testdata/test_transform/configuration b/tests/testdata/test_transform/configuration index 40dd7c09..77ebb91a 100644 --- a/tests/testdata/test_transform/configuration +++ b/tests/testdata/test_transform/configuration @@ -1,10 +1,10 @@ -column_renamings: +field_renamings: 'Directory/Filename' : about_resource Component: name -column_filters: +field_filters: - about_resource - name - version -required_columns: +required_fields: - name - version \ No newline at end of file diff --git a/tests/testdata/test_transform/configuration_scancode b/tests/testdata/test_transform/configuration_scancode new file mode 100644 index 00000000..b5529962 --- /dev/null +++ b/tests/testdata/test_transform/configuration_scancode @@ -0,0 +1,11 @@ +field_renamings: + extension : new_extension + path : about_resource +field_filters: + - name + - new_extension + - about_resource +required_fields: + - name + + diff --git a/tests/testdata/test_transform/input_scancode.json b/tests/testdata/test_transform/input_scancode.json new file mode 100644 index 00000000..4a6630f5 --- /dev/null +++ b/tests/testdata/test_transform/input_scancode.json @@ -0,0 +1,3014 @@ +{ + "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": "2020-03-10T072841.008622", + "end_timestamp": "2020-03-10T072953.529915", + "message": null, + "errors": [], + "extra_data": { + "files_count": 33 + } + } + ], + "files": [ + { + "path": "samples", + "type": "directory", + "name": "samples", + "base_name": "samples", + "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": [], + "files_count": 33, + "dirs_count": 10, + "size_count": 1161083, + "scan_errors": [] + }, + { + "path": "samples/README", + "type": "file", + "name": "README", + "base_name": "README", + "extension": "", + "size": 236, + "date": "2020-03-10", + "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": [ + { + "url": "http://zlib.net/zlib-1.2.8.tar.gz", + "start_line": 3, + "end_line": 3 + }, + { + "url": "http://master.dl.sourceforge.net/project/javagroups/JGroups/2.10.0.GA/JGroups-2.10.0.GA.src.zip", + "start_line": 4, + "end_line": 4 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/screenshot.png", + "type": "file", + "name": "screenshot.png", + "base_name": "screenshot", + "extension": ".png", + "size": 622754, + "date": "2020-03-10", + "sha1": "01ff4b1de0bc6c75c9cca6e46c80c1802d6976d4", + "md5": "b6ef5a90777147423c98b42a6a25e57a", + "mime_type": "image/png", + "file_type": "PNG image data, 2880 x 1666, 8-bit/color RGB, non-interlaced", + "programming_language": null, + "is_binary": true, + "is_text": false, + "is_archive": false, + "is_media": true, + "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/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": [], + "files_count": 1, + "dirs_count": 0, + "size_count": 28103, + "scan_errors": [] + }, + { + "path": "samples/arch/zlib.tar.gz", + "type": "file", + "name": "zlib.tar.gz", + "base_name": "zlib", + "extension": ".tar.gz", + "size": 28103, + "date": "2020-03-10", + "sha1": "576f0ccfe534d7f5ff5d6400078d3c6586de3abd", + "md5": "20b2370751abfc08bb3556c1d8114b5a", + "mime_type": "application/x-gzip", + "file_type": "gzip compressed data, last modified: Wed Jul 15 14:38:19 2015, from Unix", + "programming_language": null, + "is_binary": true, + "is_text": false, + "is_archive": true, + "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/JGroups", + "type": "directory", + "name": "JGroups", + "base_name": "JGroups", + "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": [], + "files_count": 14, + "dirs_count": 2, + "size_count": 241228, + "scan_errors": [] + }, + { + "path": "samples/JGroups/EULA", + "type": "file", + "name": "EULA", + "base_name": "EULA", + "extension": "", + "size": 8156, + "date": "2020-03-10", + "sha1": "eb232aa0424eca9c4136904e6143b72aaa9cf4de", + "md5": "0be0aceb8296727efff0ac0bf8e6bdb3", + "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": [ + { + "key": "jboss-eula", + "score": 100.0, + "name": "JBoss EULA", + "short_name": "JBoss EULA", + "category": "Proprietary Free", + "is_exception": false, + "owner": "JBoss Community", + "homepage_url": null, + "text_url": "http://repository.jboss.org/licenses/jbossorg-eula.txt", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:jboss-eula", + "spdx_license_key": null, + "spdx_url": "", + "start_line": 3, + "end_line": 108, + "matched_rule": { + "identifier": "jboss-eula.LICENSE", + "license_expression": "jboss-eula", + "licenses": [ + "jboss-eula" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 1264, + "matched_length": 1264, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "jboss-eula" + ], + "copyrights": [ + { + "value": "Copyright 2006 Red Hat, Inc.", + "start_line": 104, + "end_line": 104 + } + ], + "holders": [ + { + "value": "Red Hat, Inc.", + "start_line": 104, + "end_line": 104 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.opensource.org/licenses/index.php", + "start_line": 24, + "end_line": 24 + }, + { + "url": "http://www.jboss.org/", + "start_line": 27, + "end_line": 27 + }, + { + "url": "http://www.redhat.com/about/corporate/trademark", + "start_line": 40, + "end_line": 40 + }, + { + "url": "http://www.jboss.com/company/logos", + "start_line": 43, + "end_line": 43 + }, + { + "url": "http://www.redhat.com/licenses", + "start_line": 94, + "end_line": 94 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/LICENSE", + "type": "file", + "name": "LICENSE", + "base_name": "LICENSE", + "extension": "", + "size": 26430, + "date": "2020-03-10", + "sha1": "e60c2e780886f95df9c9ee36992b8edabec00bcc", + "md5": "7fbc338309ac38fefcd64b04bb903e34", + "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": [ + { + "key": "lgpl-2.1", + "score": 100.0, + "name": "GNU Lesser General Public License 2.1", + "short_name": "LGPL 2.1", + "category": "Copyleft Limited", + "is_exception": false, + "owner": "Free Software Foundation (FSF)", + "homepage_url": "http://www.gnu.org/licenses/lgpl-2.1.html", + "text_url": "http://www.gnu.org/licenses/lgpl-2.1.txt", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:lgpl-2.1", + "spdx_license_key": "LGPL-2.1-only", + "spdx_url": "https://spdx.org/licenses/LGPL-2.1-only", + "start_line": 1, + "end_line": 502, + "matched_rule": { + "identifier": "lgpl-2.1_101.RULE", + "license_expression": "lgpl-2.1", + "licenses": [ + "lgpl-2.1" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "1-hash", + "rule_length": 4281, + "matched_length": 4281, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "lgpl-2.1" + ], + "copyrights": [ + { + "value": "Copyright (c) 1991, 1999 Free Software Foundation, Inc.", + "start_line": 4, + "end_line": 6 + }, + { + "value": "copyrighted by the Free Software Foundation", + "start_line": 428, + "end_line": 433 + } + ], + "holders": [ + { + "value": "Free Software Foundation, Inc.", + "start_line": 4, + "end_line": 6 + }, + { + "value": "the Free Software Foundation", + "start_line": 428, + "end_line": 433 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/licenses", + "type": "directory", + "name": "licenses", + "base_name": "licenses", + "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": [], + "files_count": 5, + "dirs_count": 0, + "size_count": 54552, + "scan_errors": [] + }, + { + "path": "samples/JGroups/licenses/apache-1.1.txt", + "type": "file", + "name": "apache-1.1.txt", + "base_name": "apache-1.1", + "extension": ".txt", + "size": 2885, + "date": "2020-03-10", + "sha1": "6b5608d35c3e304532af43db8bbfc5947bef46a6", + "md5": "276982197c941f4cbf3d218546e17ae2", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [ + { + "key": "apache-1.1", + "score": 100.0, + "name": "Apache License 1.1", + "short_name": "Apache 1.1", + "category": "Permissive", + "is_exception": false, + "owner": "Apache Software Foundation", + "homepage_url": "http://www.apache.org/licenses/", + "text_url": "http://apache.org/licenses/LICENSE-1.1", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:apache-1.1", + "spdx_license_key": "Apache-1.1", + "spdx_url": "https://spdx.org/licenses/Apache-1.1", + "start_line": 2, + "end_line": 56, + "matched_rule": { + "identifier": "apache-1.1_71.RULE", + "license_expression": "apache-1.1", + "licenses": [ + "apache-1.1" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "1-hash", + "rule_length": 361, + "matched_length": 361, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "apache-1.1" + ], + "copyrights": [ + { + "value": "Copyright (c) 2000 The Apache Software Foundation", + "start_line": 4, + "end_line": 5 + } + ], + "holders": [ + { + "value": "The Apache Software Foundation", + "start_line": 4, + "end_line": 5 + } + ], + "authors": [ + { + "value": "the Apache Software Foundation (http://www.apache.org/)", + "start_line": 21, + "end_line": 23 + } + ], + "packages": [], + "emails": [ + { + "email": "apache@apache.org", + "start_line": 29, + "end_line": 29 + } + ], + "urls": [ + { + "url": "http://www.apache.org/", + "start_line": 22, + "end_line": 22 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/licenses/apache-2.0.txt", + "type": "file", + "name": "apache-2.0.txt", + "base_name": "apache-2.0", + "extension": ".txt", + "size": 11560, + "date": "2020-03-10", + "sha1": "47b573e3824cd5e02a1a3ae99e2735b49e0256e4", + "md5": "d273d63619c9aeaf15cdaf76422c4f87", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [ + { + "key": "apache-2.0", + "score": 100.0, + "name": "Apache License 2.0", + "short_name": "Apache 2.0", + "category": "Permissive", + "is_exception": false, + "owner": "Apache Software Foundation", + "homepage_url": "http://www.apache.org/licenses/", + "text_url": "http://www.apache.org/licenses/LICENSE-2.0", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:apache-2.0", + "spdx_license_key": "Apache-2.0", + "spdx_url": "https://spdx.org/licenses/Apache-2.0", + "start_line": 2, + "end_line": 202, + "matched_rule": { + "identifier": "apache-2.0.LICENSE", + "license_expression": "apache-2.0", + "licenses": [ + "apache-2.0" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "1-hash", + "rule_length": 1581, + "matched_length": 1581, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "apache-2.0" + ], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.apache.org/licenses/", + "start_line": 4, + "end_line": 4 + }, + { + "url": "http://www.apache.org/licenses/LICENSE-2.0", + "start_line": 196, + "end_line": 196 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/licenses/bouncycastle.txt", + "type": "file", + "name": "bouncycastle.txt", + "base_name": "bouncycastle", + "extension": ".txt", + "size": 1186, + "date": "2020-03-10", + "sha1": "74facb0e9a734479f9cd893b5be3fe1bf651b760", + "md5": "9fffd8de865a5705969f62b128381f85", + "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": [ + { + "key": "mit", + "score": 97.59, + "name": "MIT License", + "short_name": "MIT License", + "category": "Permissive", + "is_exception": false, + "owner": "MIT", + "homepage_url": "http://opensource.org/licenses/mit-license.php", + "text_url": "http://opensource.org/licenses/mit-license.php", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:mit", + "spdx_license_key": "MIT", + "spdx_url": "https://spdx.org/licenses/MIT", + "start_line": 3, + "end_line": 18, + "matched_rule": { + "identifier": "mit_307.RULE", + "license_expression": "mit", + "licenses": [ + "mit" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "3-seq", + "rule_length": 166, + "matched_length": 162, + "match_coverage": 97.59, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "mit" + ], + "copyrights": [ + { + "value": "Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)", + "start_line": 5, + "end_line": 5 + } + ], + "holders": [ + { + "value": "The Legion Of The Bouncy Castle", + "start_line": 5, + "end_line": 5 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.bouncycastle.org/", + "start_line": 5, + "end_line": 5 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/licenses/cpl-1.0.txt", + "type": "file", + "name": "cpl-1.0.txt", + "base_name": "cpl-1.0", + "extension": ".txt", + "size": 11987, + "date": "2020-03-10", + "sha1": "681cf776bcd79752543d42490ec7ed22a29fd888", + "md5": "9a6d2c9ae73d59eb3dd38e3909750d14", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [ + { + "key": "cpl-1.0", + "score": 99.94, + "name": "Common Public License 1.0", + "short_name": "CPL 1.0", + "category": "Copyleft Limited", + "is_exception": false, + "owner": "IBM", + "homepage_url": "http://www.eclipse.org/legal/cpl-v10.html", + "text_url": "http://www.eclipse.org/legal/cpl-v10.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:cpl-1.0", + "spdx_license_key": "CPL-1.0", + "spdx_url": "https://spdx.org/licenses/CPL-1.0", + "start_line": 1, + "end_line": 212, + "matched_rule": { + "identifier": "cpl-1.0.SPDX.RULE", + "license_expression": "cpl-1.0", + "licenses": [ + "cpl-1.0" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "3-seq", + "rule_length": 1711, + "matched_length": 1710, + "match_coverage": 99.94, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "cpl-1.0" + ], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/licenses/lgpl.txt", + "type": "file", + "name": "lgpl.txt", + "base_name": "lgpl", + "extension": ".txt", + "size": 26934, + "date": "2020-03-10", + "sha1": "8f1a637d2e2ed1bdb9eb01a7dccb5c12cc0557e1", + "md5": "f14599a2f089f6ff8c97e2baa4e3d575", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [ + { + "key": "lgpl-2.1", + "score": 100.0, + "name": "GNU Lesser General Public License 2.1", + "short_name": "LGPL 2.1", + "category": "Copyleft Limited", + "is_exception": false, + "owner": "Free Software Foundation (FSF)", + "homepage_url": "http://www.gnu.org/licenses/lgpl-2.1.html", + "text_url": "http://www.gnu.org/licenses/lgpl-2.1.txt", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:lgpl-2.1", + "spdx_license_key": "LGPL-2.1-only", + "spdx_url": "https://spdx.org/licenses/LGPL-2.1-only", + "start_line": 1, + "end_line": 502, + "matched_rule": { + "identifier": "lgpl-2.1_101.RULE", + "license_expression": "lgpl-2.1", + "licenses": [ + "lgpl-2.1" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "1-hash", + "rule_length": 4281, + "matched_length": 4281, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "lgpl-2.1" + ], + "copyrights": [ + { + "value": "Copyright (c) 1991, 1999 Free Software Foundation, Inc.", + "start_line": 4, + "end_line": 6 + }, + { + "value": "copyrighted by the Free Software Foundation", + "start_line": 428, + "end_line": 433 + } + ], + "holders": [ + { + "value": "Free Software Foundation, Inc.", + "start_line": 4, + "end_line": 6 + }, + { + "value": "the Free Software Foundation", + "start_line": 428, + "end_line": 433 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src", + "type": "directory", + "name": "src", + "base_name": "src", + "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": [], + "files_count": 7, + "dirs_count": 0, + "size_count": 152090, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/FixedMembershipToken.java", + "type": "file", + "name": "FixedMembershipToken.java", + "base_name": "FixedMembershipToken", + "extension": ".java", + "size": 5144, + "date": "2020-03-10", + "sha1": "5901f73dcc78155a1a2c7b5663a3a11fba400b19", + "md5": "aca9640ec8beee21b098bcf8ecc91442", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "lgpl-2.1-plus", + "score": 100.0, + "name": "GNU Lesser General Public License 2.1 or later", + "short_name": "LGPL 2.1 or later", + "category": "Copyleft Limited", + "is_exception": false, + "owner": "Free Software Foundation (FSF)", + "homepage_url": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "text_url": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:lgpl-2.1-plus", + "spdx_license_key": "LGPL-2.1-or-later", + "spdx_url": "https://spdx.org/licenses/LGPL-2.1-or-later", + "start_line": 7, + "end_line": 20, + "matched_rule": { + "identifier": "lgpl-2.1-plus_59.RULE", + "license_expression": "lgpl-2.1-plus", + "licenses": [ + "lgpl-2.1-plus" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 125, + "matched_length": 125, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "lgpl-2.1-plus" + ], + "copyrights": [ + { + "value": "Copyright 2005, JBoss Inc., and individual contributors", + "start_line": 3, + "end_line": 5 + } + ], + "holders": [ + { + "value": "JBoss Inc., and individual contributors", + "start_line": 3, + "end_line": 5 + } + ], + "authors": [ + { + "value": "Chris Mills (millsy@jboss.com)", + "start_line": 51, + "end_line": 51 + } + ], + "packages": [], + "emails": [ + { + "email": "millsy@jboss.com", + "start_line": 51, + "end_line": 51 + } + ], + "urls": [ + { + "url": "http://www.fsf.org/", + "start_line": 20, + "end_line": 20 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/GuardedBy.java", + "type": "file", + "name": "GuardedBy.java", + "base_name": "GuardedBy", + "extension": ".java", + "size": 813, + "date": "2020-03-10", + "sha1": "981d67087e65e9a44957c026d4b10817cf77d966", + "md5": "c5064400f759d3e81771005051d17dc1", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "cc-by-2.5", + "score": 100.0, + "name": "Creative Commons Attribution License 2.5", + "short_name": "CC-BY-2.5", + "category": "Permissive", + "is_exception": false, + "owner": "Creative Commons", + "homepage_url": "http://creativecommons.org/licenses/by/2.5/", + "text_url": "http://creativecommons.org/licenses/by/2.5/legalcode", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:cc-by-2.5", + "spdx_license_key": "CC-BY-2.5", + "spdx_url": "https://spdx.org/licenses/CC-BY-2.5", + "start_line": 10, + "end_line": 11, + "matched_rule": { + "identifier": "cc-by-2.5_4.RULE", + "license_expression": "cc-by-2.5", + "licenses": [ + "cc-by-2.5" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 14, + "matched_length": 14, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "cc-by-2.5" + ], + "copyrights": [ + { + "value": "Copyright (c) 2005 Brian Goetz and Tim Peierls", + "start_line": 9, + "end_line": 11 + } + ], + "holders": [ + { + "value": "Brian Goetz and Tim Peierls", + "start_line": 9, + "end_line": 11 + } + ], + "authors": [ + { + "value": "Bela Ban", + "start_line": 15, + "end_line": 17 + } + ], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://creativecommons.org/licenses/by/2.5", + "start_line": 11, + "end_line": 11 + }, + { + "url": "http://www.jcip.net/", + "start_line": 12, + "end_line": 12 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/ImmutableReference.java", + "type": "file", + "name": "ImmutableReference.java", + "base_name": "ImmutableReference", + "extension": ".java", + "size": 1838, + "date": "2020-03-10", + "sha1": "30f56b876d5576d9869e2c5c509b08db57110592", + "md5": "48ca3c72fb9a65c771a321222f118b88", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "lgpl-2.1-plus", + "score": 100.0, + "name": "GNU Lesser General Public License 2.1 or later", + "short_name": "LGPL 2.1 or later", + "category": "Copyleft Limited", + "is_exception": false, + "owner": "Free Software Foundation (FSF)", + "homepage_url": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "text_url": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:lgpl-2.1-plus", + "spdx_license_key": "LGPL-2.1-or-later", + "spdx_url": "https://spdx.org/licenses/LGPL-2.1-or-later", + "start_line": 7, + "end_line": 20, + "matched_rule": { + "identifier": "lgpl-2.1-plus_59.RULE", + "license_expression": "lgpl-2.1-plus", + "licenses": [ + "lgpl-2.1-plus" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 125, + "matched_length": 125, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "lgpl-2.1-plus" + ], + "copyrights": [ + { + "value": "Copyright 2010, Red Hat, Inc. and individual contributors", + "start_line": 3, + "end_line": 5 + } + ], + "holders": [ + { + "value": "Red Hat, Inc. and individual contributors", + "start_line": 3, + "end_line": 5 + } + ], + "authors": [ + { + "value": "Brian Stansberry", + "start_line": 29, + "end_line": 29 + } + ], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.fsf.org/", + "start_line": 20, + "end_line": 20 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/RATE_LIMITER.java", + "type": "file", + "name": "RATE_LIMITER.java", + "base_name": "RATE_LIMITER", + "extension": ".java", + "size": 3692, + "date": "2020-03-10", + "sha1": "a8087e5d50da3273536ebda9b87b77aa4ff55deb", + "md5": "4626bdbc48871b55513e1a12991c61a8", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [], + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [ + { + "value": "Bela Ban", + "start_line": 16, + "end_line": 17 + } + ], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/RouterStub.java", + "type": "file", + "name": "RouterStub.java", + "base_name": "RouterStub", + "extension": ".java", + "size": 9913, + "date": "2020-03-10", + "sha1": "c1f6818f8ee7bddcc9f444bc94c099729d716d52", + "md5": "eecfe23494acbcd8088c93bc1e83c7f2", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [], + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [ + { + "value": "Bela Ban", + "start_line": 23, + "end_line": 24 + } + ], + "packages": [], + "emails": [], + "urls": [ + { + "url": "https://jira.jboss.org/jira/browse/JGRP-1151", + "start_line": 232, + "end_line": 232 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/RouterStubManager.java", + "type": "file", + "name": "RouterStubManager.java", + "base_name": "RouterStubManager", + "extension": ".java", + "size": 8162, + "date": "2020-03-10", + "sha1": "eb419dc94cfe11ca318a3e743a7f9f080e70c751", + "md5": "20bee9631b7c82a45c250e095352aec7", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "lgpl-2.1-plus", + "score": 100.0, + "name": "GNU Lesser General Public License 2.1 or later", + "short_name": "LGPL 2.1 or later", + "category": "Copyleft Limited", + "is_exception": false, + "owner": "Free Software Foundation (FSF)", + "homepage_url": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "text_url": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:lgpl-2.1-plus", + "spdx_license_key": "LGPL-2.1-or-later", + "spdx_url": "https://spdx.org/licenses/LGPL-2.1-or-later", + "start_line": 7, + "end_line": 20, + "matched_rule": { + "identifier": "lgpl-2.1-plus_59.RULE", + "license_expression": "lgpl-2.1-plus", + "licenses": [ + "lgpl-2.1-plus" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 125, + "matched_length": 125, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "lgpl-2.1-plus" + ], + "copyrights": [ + { + "value": "Copyright 2009, Red Hat Middleware LLC, and individual contributors", + "start_line": 3, + "end_line": 5 + } + ], + "holders": [ + { + "value": "Red Hat Middleware LLC, and individual contributors", + "start_line": 3, + "end_line": 5 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.fsf.org/", + "start_line": 20, + "end_line": 20 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/JGroups/src/S3_PING.java", + "type": "file", + "name": "S3_PING.java", + "base_name": "S3_PING", + "extension": ".java", + "size": 122528, + "date": "2020-03-10", + "sha1": "08dba9986f69719970ead3592dc565465164df0d", + "md5": "83d8324f37d0e3f120bc89865cf0bd39", + "mime_type": "text/plain", + "file_type": "ASCII text", + "programming_language": "Java", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "public-domain", + "score": 50.0, + "name": "Public Domain", + "short_name": "Public Domain", + "category": "Public Domain", + "is_exception": false, + "owner": "Unspecified", + "homepage_url": "http://www.linfo.org/publicdomain.html", + "text_url": "", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:public-domain", + "spdx_license_key": null, + "spdx_url": "", + "start_line": 1649, + "end_line": 1649, + "matched_rule": { + "identifier": "public-domain_bare_words.RULE", + "license_expression": "public-domain", + "licenses": [ + "public-domain" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 2, + "matched_length": 2, + "match_coverage": 100.0, + "rule_relevance": 50.0 + } + }, + { + "key": "public-domain", + "score": 50.0, + "name": "Public Domain", + "short_name": "Public Domain", + "category": "Public Domain", + "is_exception": false, + "owner": "Unspecified", + "homepage_url": "http://www.linfo.org/publicdomain.html", + "text_url": "", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:public-domain", + "spdx_license_key": null, + "spdx_url": "", + "start_line": 1692, + "end_line": 1692, + "matched_rule": { + "identifier": "public-domain_bare_words.RULE", + "license_expression": "public-domain", + "licenses": [ + "public-domain" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 2, + "matched_length": 2, + "match_coverage": 100.0, + "rule_relevance": 50.0 + } + } + ], + "license_expressions": [ + "public-domain", + "public-domain" + ], + "copyrights": [], + "holders": [], + "authors": [ + { + "value": "Bela Ban", + "start_line": 35, + "end_line": 38 + }, + { + "value": "Robert Harder", + "start_line": 1698, + "end_line": 1700 + }, + { + "value": "rob@iharder.net", + "start_line": 1698, + "end_line": 1700 + } + ], + "packages": [], + "emails": [ + { + "email": "rob@iharder.net", + "start_line": 1699, + "end_line": 1699 + } + ], + "urls": [ + { + "url": "http://iharder.sourceforge.net/current/java/base64/", + "start_line": 1652, + "end_line": 1652 + }, + { + "url": "http://iharder.net/base64", + "start_line": 1695, + "end_line": 1695 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib", + "type": "directory", + "name": "zlib", + "base_name": "zlib", + "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": [], + "files_count": 16, + "dirs_count": 5, + "size_count": 268762, + "scan_errors": [] + }, + { + "path": "samples/zlib/adler32.c", + "type": "file", + "name": "adler32.c", + "base_name": "adler32", + "extension": ".c", + "size": 4968, + "date": "2020-03-10", + "sha1": "0cff4808476ce0b5f6f0ebbc69ee2ab2a0eebe43", + "md5": "ae3bbb54820e1d49fb90cbba222e973f", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2011 Mark Adler", + "start_line": 2, + "end_line": 3 + } + ], + "holders": [ + { + "value": "Mark Adler", + "start_line": 2, + "end_line": 3 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/deflate.c", + "type": "file", + "name": "deflate.c", + "base_name": "deflate", + "extension": ".c", + "size": 71476, + "date": "2020-03-10", + "sha1": "7b4ace6d698c5dbbfb9a8f047f63228ca54d2e77", + "md5": "cd7826278ce9d9d9ed5abdefef50c3e2", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2013 Jean-loup Gailly and Mark Adler", + "start_line": 2, + "end_line": 3 + }, + { + "value": "Copyright 1995-2013 Jean-loup Gailly and Mark Adler", + "start_line": 54, + "end_line": 55 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly and Mark Adler", + "start_line": 2, + "end_line": 3 + }, + { + "value": "Jean-loup Gailly and Mark Adler", + "start_line": 54, + "end_line": 55 + } + ], + "authors": [ + { + "value": "Leonid Broukhis", + "start_line": 34, + "end_line": 35 + } + ], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://tools.ietf.org/html/rfc1951", + "start_line": 40, + "end_line": 40 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/deflate.h", + "type": "file", + "name": "deflate.h", + "base_name": "deflate", + "extension": ".h", + "size": 12774, + "date": "2020-03-10", + "sha1": "29ed3b8ca3927576e5889dea5880ca0052942c7d", + "md5": "7ceae74a13201f14c91623116af169c3", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + }, + { + "key": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 93, + "end_line": 94, + "matched_rule": { + "identifier": "zlib_21.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 28, + "matched_length": 28, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "zlib", + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2012 Jean-loup Gailly", + "start_line": 2, + "end_line": 3 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly", + "start_line": 2, + "end_line": 3 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/zlib.h", + "type": "file", + "name": "zlib.h", + "base_name": "zlib", + "extension": ".h", + "size": 87883, + "date": "2020-03-10", + "sha1": "400d35465f179a4acacb5fe749e6ce20a0bbdb84", + "md5": "64d8a5180bd54ff5452886e4cbb21e14", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 6, + "end_line": 23, + "matched_rule": { + "identifier": "zlib_17.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 144, + "matched_length": 144, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2013 Jean-loup Gailly and Mark Adler", + "start_line": 4, + "end_line": 4 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly and Mark Adler", + "start_line": 4, + "end_line": 4 + } + ], + "authors": [], + "packages": [], + "emails": [ + { + "email": "jloup@gzip.org", + "start_line": 23, + "end_line": 23 + }, + { + "email": "madler@alumni.caltech.edu", + "start_line": 23, + "end_line": 23 + } + ], + "urls": [ + { + "url": "http://tools.ietf.org/html/rfc1950", + "start_line": 27, + "end_line": 27 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/zutil.c", + "type": "file", + "name": "zutil.c", + "base_name": "zutil", + "extension": ".c", + "size": 7414, + "date": "2020-03-10", + "sha1": "e1af709bff21ae0d4331119a7fc4c19f82932043", + "md5": "fff257bc1656eb60fc585a7dc35f963d", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2005, 2010, 2011, 2012 Jean-loup Gailly", + "start_line": 2, + "end_line": 3 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly", + "start_line": 2, + "end_line": 3 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/zutil.h", + "type": "file", + "name": "zutil.h", + "base_name": "zutil", + "extension": ".h", + "size": 6766, + "date": "2020-03-10", + "sha1": "b909d27ef9ce51639f76b7ea6b62721e7d1b6bf7", + "md5": "04fcfbb961591c9452c4d0fd1525ffdf", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2013 Jean-loup Gailly", + "start_line": 2, + "end_line": 3 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly", + "start_line": 2, + "end_line": 3 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/ada", + "type": "directory", + "name": "ada", + "base_name": "ada", + "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": [], + "files_count": 1, + "dirs_count": 0, + "size_count": 13594, + "scan_errors": [] + }, + { + "path": "samples/zlib/ada/zlib.ads", + "type": "file", + "name": "zlib.ads", + "base_name": "zlib", + "extension": ".ads", + "size": 13594, + "date": "2020-03-10", + "sha1": "0245a91806d804bf9f0907a3a001a141e9adb61b", + "md5": "71de2670f2e588b51c62e7f6a9046399", + "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": [ + { + "key": "gpl-2.0-plus", + "score": 100.0, + "name": "GNU General Public License 2.0 or later", + "short_name": "GPL 2.0 or later", + "category": "Copyleft", + "is_exception": false, + "owner": "Free Software Foundation (FSF)", + "homepage_url": "http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "text_url": "http://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:gpl-2.0-plus", + "spdx_license_key": "GPL-2.0-or-later", + "spdx_url": "https://spdx.org/licenses/GPL-2.0-or-later", + "start_line": 6, + "end_line": 25, + "matched_rule": { + "identifier": "gpl-2.0-plus_with_ada-linking-exception_1.RULE", + "license_expression": "gpl-2.0-plus WITH ada-linking-exception", + "licenses": [ + "gpl-2.0-plus", + "ada-linking-exception" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 176, + "matched_length": 176, + "match_coverage": 100.0, + "rule_relevance": 100 + } + }, + { + "key": "ada-linking-exception", + "score": 100.0, + "name": "Ada linking exception to GPL 2.0 or later", + "short_name": "Ada linking exception to GPL 2.0 or later", + "category": "Copyleft Limited", + "is_exception": true, + "owner": "Dmitriy Anisimkov", + "homepage_url": null, + "text_url": "", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:ada-linking-exception", + "spdx_license_key": null, + "spdx_url": "", + "start_line": 6, + "end_line": 25, + "matched_rule": { + "identifier": "gpl-2.0-plus_with_ada-linking-exception_1.RULE", + "license_expression": "gpl-2.0-plus WITH ada-linking-exception", + "licenses": [ + "gpl-2.0-plus", + "ada-linking-exception" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 176, + "matched_length": 176, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "gpl-2.0-plus WITH ada-linking-exception" + ], + "copyrights": [ + { + "value": "Copyright (c) 2002-2004 Dmitriy Anisimkov", + "start_line": 4, + "end_line": 4 + } + ], + "holders": [ + { + "value": "Dmitriy Anisimkov", + "start_line": 4, + "end_line": 4 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/dotzlib", + "type": "directory", + "name": "dotzlib", + "base_name": "dotzlib", + "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": [], + "files_count": 4, + "dirs_count": 0, + "size_count": 14257, + "scan_errors": [] + }, + { + "path": "samples/zlib/dotzlib/AssemblyInfo.cs", + "type": "file", + "name": "AssemblyInfo.cs", + "base_name": "AssemblyInfo", + "extension": ".cs", + "size": 2500, + "date": "2020-03-10", + "sha1": "9f1db1177b2e9a014f72bb3cd80be17133e06d16", + "md5": "23d0d7c18846fc31655b6aa89b7c8038", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": "C#", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [], + "license_expressions": [], + "copyrights": [ + { + "value": "Copyright (c) 2004 by Henrik Ravn", + "start_line": 14, + "end_line": 16 + } + ], + "holders": [ + { + "value": "Henrik Ravn", + "start_line": 14, + "end_line": 16 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/dotzlib/ChecksumImpl.cs", + "type": "file", + "name": "ChecksumImpl.cs", + "base_name": "ChecksumImpl", + "extension": ".cs", + "size": 8040, + "date": "2020-03-10", + "sha1": "3807a0e24a57b92ea301559cab7307b8eab52c51", + "md5": "d01b3cb2e75da9b15f05b92b42f6bd33", + "mime_type": "text/plain", + "file_type": "ISO-8859 text, with CRLF line terminators", + "programming_language": "C#", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "boost-1.0", + "score": 92.59, + "name": "Boost Software License 1.0", + "short_name": "Boost 1.0", + "category": "Permissive", + "is_exception": false, + "owner": "Boost", + "homepage_url": "http://www.boost.org/users/license.html", + "text_url": "http://www.boost.org/LICENSE_1_0.txt", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:boost-1.0", + "spdx_license_key": "BSL-1.0", + "spdx_url": "https://spdx.org/licenses/BSL-1.0", + "start_line": 4, + "end_line": 5, + "matched_rule": { + "identifier": "boost-1.0_1.RULE", + "license_expression": "boost-1.0", + "licenses": [ + "boost-1.0" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "3-seq", + "rule_length": 27, + "matched_length": 25, + "match_coverage": 92.59, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "boost-1.0" + ], + "copyrights": [ + { + "value": "(c) Copyright Henrik Ravn 2004", + "start_line": 2, + "end_line": 2 + } + ], + "holders": [ + { + "value": "Henrik Ravn", + "start_line": 2, + "end_line": 2 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.boost.org/LICENSE_1_0.txt", + "start_line": 5, + "end_line": 5 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/dotzlib/LICENSE_1_0.txt", + "type": "file", + "name": "LICENSE_1_0.txt", + "base_name": "LICENSE_1_0", + "extension": ".txt", + "size": 1359, + "date": "2020-03-10", + "sha1": "892b34f7865d90a6f949f50d95e49625a10bc7f0", + "md5": "81543b22c36f10d20ac9712f8d80ef8d", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [ + { + "key": "boost-1.0", + "score": 100.0, + "name": "Boost Software License 1.0", + "short_name": "Boost 1.0", + "category": "Permissive", + "is_exception": false, + "owner": "Boost", + "homepage_url": "http://www.boost.org/users/license.html", + "text_url": "http://www.boost.org/LICENSE_1_0.txt", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:boost-1.0", + "spdx_license_key": "BSL-1.0", + "spdx_url": "https://spdx.org/licenses/BSL-1.0", + "start_line": 1, + "end_line": 23, + "matched_rule": { + "identifier": "boost-1.0.LICENSE", + "license_expression": "boost-1.0", + "licenses": [ + "boost-1.0" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "1-hash", + "rule_length": 211, + "matched_length": 211, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "boost-1.0" + ], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/dotzlib/readme.txt", + "type": "file", + "name": "readme.txt", + "base_name": "readme", + "extension": ".txt", + "size": 2358, + "date": "2020-03-10", + "sha1": "b1229b826f0096808628474538cea8fec2922a9b", + "md5": "1f20f3168ee63d90de033edac2ce383c", + "mime_type": "text/plain", + "file_type": "ASCII text, with CRLF line terminators", + "programming_language": null, + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": false, + "is_script": false, + "licenses": [ + { + "key": "boost-1.0", + "score": 77.78, + "name": "Boost Software License 1.0", + "short_name": "Boost 1.0", + "category": "Permissive", + "is_exception": false, + "owner": "Boost", + "homepage_url": "http://www.boost.org/users/license.html", + "text_url": "http://www.boost.org/LICENSE_1_0.txt", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:boost-1.0", + "spdx_license_key": "BSL-1.0", + "spdx_url": "https://spdx.org/licenses/BSL-1.0", + "start_line": 57, + "end_line": 58, + "matched_rule": { + "identifier": "boost-1.0_1.RULE", + "license_expression": "boost-1.0", + "licenses": [ + "boost-1.0" + ], + "is_license_text": false, + "is_license_notice": true, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "3-seq", + "rule_length": 27, + "matched_length": 21, + "match_coverage": 77.78, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "boost-1.0" + ], + "copyrights": [ + { + "value": "Copyright (c) Henrik Ravn 2004", + "start_line": 55, + "end_line": 55 + } + ], + "holders": [ + { + "value": "Henrik Ravn", + "start_line": 55, + "end_line": 55 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.boost.org/LICENSE_1_0.txt", + "start_line": 58, + "end_line": 58 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/gcc_gvmat64", + "type": "directory", + "name": "gcc_gvmat64", + "base_name": "gcc_gvmat64", + "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": [], + "files_count": 1, + "dirs_count": 0, + "size_count": 16413, + "scan_errors": [] + }, + { + "path": "samples/zlib/gcc_gvmat64/gvmat64.S", + "type": "file", + "name": "gvmat64.S", + "base_name": "gvmat64", + "extension": ".S", + "size": 16413, + "date": "2020-03-10", + "sha1": "742603cba1af98a1432cc02efb019b1a5760adf2", + "md5": "5e772d7302475e5473d0c4c57b9861e8", + "mime_type": "text/x-c", + "file_type": "C source, ASCII text, with CRLF line terminators", + "programming_language": "GAS", + "is_binary": false, + "is_text": true, + "is_archive": false, + "is_media": false, + "is_source": true, + "is_script": false, + "licenses": [ + { + "key": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 17, + "end_line": 31, + "matched_rule": { + "identifier": "zlib.LICENSE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": true, + "is_license_notice": false, + "is_license_reference": false, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 132, + "matched_length": 132, + "match_coverage": 100.0, + "rule_relevance": 100 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant", + "start_line": 10, + "end_line": 10 + } + ], + "holders": [ + { + "value": "Jean-loup Gailly, Brian Raiter and Gilles Vollant", + "start_line": 10, + "end_line": 10 + } + ], + "authors": [ + { + "value": "Gilles Vollant", + "start_line": 12, + "end_line": 15 + } + ], + "packages": [], + "emails": [], + "urls": [ + { + "url": "http://www.zlib.net/", + "start_line": 33, + "end_line": 33 + }, + { + "url": "http://www.winimage.com/zLibDll", + "start_line": 34, + "end_line": 34 + }, + { + "url": "http://www.muppetlabs.com/~breadbox/software/assembly.html", + "start_line": 35, + "end_line": 35 + }, + { + "url": "http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx", + "start_line": 172, + "end_line": 172 + }, + { + "url": "http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp", + "start_line": 173, + "end_line": 173 + }, + { + "url": "http://www.x86-64.org/documentation/abi-0.99.pdf", + "start_line": 180, + "end_line": 180 + } + ], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/infback9", + "type": "directory", + "name": "infback9", + "base_name": "infback9", + "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": [], + "files_count": 2, + "dirs_count": 0, + "size_count": 23223, + "scan_errors": [] + }, + { + "path": "samples/zlib/infback9/infback9.c", + "type": "file", + "name": "infback9.c", + "base_name": "infback9", + "extension": ".c", + "size": 21629, + "date": "2020-03-10", + "sha1": "17fb362c03755b12f2dda5b12a68cf38162674bd", + "md5": "23ff5edec0817da303cb1294c1e4205c", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 1995-2008 Mark Adler", + "start_line": 2, + "end_line": 3 + } + ], + "holders": [ + { + "value": "Mark Adler", + "start_line": 2, + "end_line": 3 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/infback9/infback9.h", + "type": "file", + "name": "infback9.h", + "base_name": "infback9", + "extension": ".h", + "size": 1594, + "date": "2020-03-10", + "sha1": "d0486a32b558dcaceded5f0746fad62e680a4734", + "md5": "52b1ed99960d3ed7ed60cd20295e64a8", + "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": "zlib", + "score": 100.0, + "name": "ZLIB License", + "short_name": "ZLIB License", + "category": "Permissive", + "is_exception": false, + "owner": "zlib", + "homepage_url": "http://www.zlib.net/", + "text_url": "http://www.gzip.org/zlib/zlib_license.html", + "reference_url": "https://enterprise.dejacode.com/urn/urn:dje:license:zlib", + "spdx_license_key": "Zlib", + "spdx_url": "https://spdx.org/licenses/Zlib", + "start_line": 3, + "end_line": 3, + "matched_rule": { + "identifier": "zlib_5.RULE", + "license_expression": "zlib", + "licenses": [ + "zlib" + ], + "is_license_text": false, + "is_license_notice": false, + "is_license_reference": true, + "is_license_tag": false, + "matcher": "2-aho", + "rule_length": 12, + "matched_length": 12, + "match_coverage": 100.0, + "rule_relevance": 100.0 + } + } + ], + "license_expressions": [ + "zlib" + ], + "copyrights": [ + { + "value": "Copyright (c) 2003 Mark Adler", + "start_line": 2, + "end_line": 3 + } + ], + "holders": [ + { + "value": "Mark Adler", + "start_line": 2, + "end_line": 3 + } + ], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + }, + { + "path": "samples/zlib/iostream2", + "type": "directory", + "name": "iostream2", + "base_name": "iostream2", + "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": [], + "files_count": 2, + "dirs_count": 0, + "size_count": 9994, + "scan_errors": [] + }, + { + "path": "samples/zlib/iostream2/zstream.h", + "type": "file", + "name": "zstream.h", + "base_name": "zstream", + "extension": ".h", + "size": 9283, + "date": "2020-03-10", + "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": [] + }, + { + "path": "samples/zlib/iostream2/zstream_test.cpp", + "type": "file", + "name": "zstream_test.cpp", + "base_name": "zstream_test", + "extension": ".cpp", + "size": 711, + "date": "2020-03-10", + "sha1": "e18a6d55cbbd8b832f8d795530553467e5c74fcf", + "md5": "d32476bde4e6d5f889092fdff6f8cdb0", + "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": [], + "license_expressions": [], + "copyrights": [], + "holders": [], + "authors": [], + "packages": [], + "emails": [], + "urls": [], + "files_count": 0, + "dirs_count": 0, + "size_count": 0, + "scan_errors": [] + } + ] +}