Skip to content

Commit 8cd3796

Browse files
committed
Improve Rust license detection
Signed-off-by: Philippe Ombredanne <pombredanne@nexb.com>
1 parent 2fe96e4 commit 8cd3796

File tree

2 files changed

+92
-156
lines changed

2 files changed

+92
-156
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
license_expression: mit OR apache-2.0
3+
is_license_notice: yes
4+
referenced_filenames:
5+
- LICENSE-APACHE
6+
- LICENSE-MIT
7+
ignorable_urls:
8+
- http://opensource.org/licenses/MIT
9+
- http://www.apache.org/licenses/LICENSE-2.0
10+
---
11+
12+
Copyrights in the project are retained by their contributors. No
13+
copyright assignment is required to contribute to the Rand project.
14+
15+
For full authorship information, see the version control history.
16+
17+
Except as otherwise noted (below and/or in individual files), Rand is
18+
licensed under the {{Apache License, Version 2.0}} <LICENSE-APACHE> or
19+
<http://www.apache.org/licenses/LICENSE-2.0> {{or the MIT license}}
20+
<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
21+
22+
The project includes code from the Rust project
23+
published under these same licenses.

tests/summarycode/data/score/no_license_ambiguity-expected.json

Lines changed: 69 additions & 156 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"summary": {
3-
"declared_license_expression": "apache-2.0 AND (apache-2.0 OR mit)",
3+
"declared_license_expression": "mit OR apache-2.0",
44
"license_clarity_score": {
55
"score": 100,
66
"declared_license": true,
@@ -130,92 +130,6 @@
130130
}
131131
]
132132
},
133-
{
134-
"identifier": "apache_2_0_and__apache_2_0_or_mit-7ff6dd9d-b5e8-3fa4-dd61-c5a634c9b300",
135-
"license_expression": "apache-2.0 AND (apache-2.0 OR mit)",
136-
"license_expression_spdx": "Apache-2.0 AND (Apache-2.0 OR MIT)",
137-
"detection_count": 1,
138-
"reference_matches": [
139-
{
140-
"license_expression": "apache-2.0",
141-
"license_expression_spdx": "Apache-2.0",
142-
"from_file": "no_license_ambiguity/COPYRIGHT",
143-
"start_line": 1,
144-
"end_line": 7,
145-
"matcher": "3-seq",
146-
"score": 94.12,
147-
"matched_length": 48,
148-
"match_coverage": 100.0,
149-
"rule_relevance": 100,
150-
"rule_identifier": "apache-2.0_1060.RULE",
151-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/apache-2.0_1060.RULE"
152-
},
153-
{
154-
"license_expression": "apache-2.0 OR mit",
155-
"license_expression_spdx": "Apache-2.0 OR MIT",
156-
"from_file": "no_license_ambiguity/COPYRIGHT",
157-
"start_line": 6,
158-
"end_line": 9,
159-
"matcher": "3-seq",
160-
"score": 97.83,
161-
"matched_length": 45,
162-
"match_coverage": 100.0,
163-
"rule_relevance": 100,
164-
"rule_identifier": "apache-2.0_or_mit_47.RULE",
165-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/apache-2.0_or_mit_47.RULE"
166-
}
167-
]
168-
},
169-
{
170-
"identifier": "mit-a9138d4e-bc0e-0a20-76fd-237047e6d41c",
171-
"license_expression": "mit",
172-
"license_expression_spdx": "MIT",
173-
"detection_count": 1,
174-
"reference_matches": [
175-
{
176-
"license_expression": "mit OR apache-2.0",
177-
"license_expression_spdx": "MIT OR Apache-2.0",
178-
"from_file": "no_license_ambiguity/README.md",
179-
"start_line": 152,
180-
"end_line": 157,
181-
"matcher": "3-seq",
182-
"score": 57.69,
183-
"matched_length": 15,
184-
"match_coverage": 57.69,
185-
"rule_relevance": 100,
186-
"rule_identifier": "mit_or_apache-2.0_9.RULE",
187-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_9.RULE"
188-
},
189-
{
190-
"license_expression": "mit",
191-
"license_expression_spdx": "MIT",
192-
"from_file": "no_license_ambiguity/README.md",
193-
"start_line": 157,
194-
"end_line": 157,
195-
"matcher": "2-aho",
196-
"score": 100.0,
197-
"matched_length": 4,
198-
"match_coverage": 100.0,
199-
"rule_relevance": 100,
200-
"rule_identifier": "mit_154.RULE",
201-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_154.RULE"
202-
},
203-
{
204-
"license_expression": "mit",
205-
"license_expression_spdx": "MIT",
206-
"from_file": "no_license_ambiguity/LICENSE-MIT",
207-
"start_line": 4,
208-
"end_line": 26,
209-
"matcher": "2-aho",
210-
"score": 100.0,
211-
"matched_length": 161,
212-
"match_coverage": 100.0,
213-
"rule_relevance": 100,
214-
"rule_identifier": "mit.LICENSE",
215-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit.LICENSE"
216-
}
217-
]
218-
},
219133
{
220134
"identifier": "mit-cacd5c0c-204a-85c2-affc-e4c125b2492a",
221135
"license_expression": "mit",
@@ -281,6 +195,50 @@
281195
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_14.RULE"
282196
}
283197
]
198+
},
199+
{
200+
"identifier": "mit_or_apache_2_0-a43a1e15-1968-4de7-fe27-2129ebf57d54",
201+
"license_expression": "mit OR apache-2.0",
202+
"license_expression_spdx": "MIT OR Apache-2.0",
203+
"detection_count": 1,
204+
"reference_matches": [
205+
{
206+
"license_expression": "mit OR apache-2.0",
207+
"license_expression_spdx": "MIT OR Apache-2.0",
208+
"from_file": "no_license_ambiguity/COPYRIGHT",
209+
"start_line": 1,
210+
"end_line": 12,
211+
"matcher": "3-seq",
212+
"score": 97.78,
213+
"matched_length": 88,
214+
"match_coverage": 100.0,
215+
"rule_relevance": 100,
216+
"rule_identifier": "mit_or_apache-2.0_38.RULE",
217+
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_38.RULE"
218+
}
219+
]
220+
},
221+
{
222+
"identifier": "mit_or_apache_2_0-d9d84ae7-113e-249f-5302-6054bdbcdadb",
223+
"license_expression": "mit OR apache-2.0",
224+
"license_expression_spdx": "MIT OR Apache-2.0",
225+
"detection_count": 1,
226+
"reference_matches": [
227+
{
228+
"license_expression": "mit OR apache-2.0",
229+
"license_expression_spdx": "MIT OR Apache-2.0",
230+
"from_file": "no_license_ambiguity/README.md",
231+
"start_line": 152,
232+
"end_line": 158,
233+
"matcher": "3-seq",
234+
"score": 97.06,
235+
"matched_length": 33,
236+
"match_coverage": 100.0,
237+
"rule_relevance": 100,
238+
"rule_identifier": "mit_or_apache-2.0_33.RULE",
239+
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_33.RULE"
240+
}
241+
]
284242
}
285243
],
286244
"files": [
@@ -388,47 +346,33 @@
388346
"is_readme": false,
389347
"is_top_level": true,
390348
"is_key_file": true,
391-
"detected_license_expression": "apache-2.0 AND (apache-2.0 OR mit)",
392-
"detected_license_expression_spdx": "Apache-2.0 AND (Apache-2.0 OR MIT)",
349+
"detected_license_expression": "mit OR apache-2.0",
350+
"detected_license_expression_spdx": "MIT OR Apache-2.0",
393351
"license_detections": [
394352
{
395-
"license_expression": "apache-2.0 AND (apache-2.0 OR mit)",
396-
"license_expression_spdx": "Apache-2.0 AND (Apache-2.0 OR MIT)",
353+
"license_expression": "mit OR apache-2.0",
354+
"license_expression_spdx": "MIT OR Apache-2.0",
397355
"matches": [
398356
{
399-
"license_expression": "apache-2.0",
400-
"spdx_license_expression": "Apache-2.0",
357+
"license_expression": "mit OR apache-2.0",
358+
"spdx_license_expression": "MIT OR Apache-2.0",
401359
"from_file": "no_license_ambiguity/COPYRIGHT",
402360
"start_line": 1,
403-
"end_line": 7,
361+
"end_line": 12,
404362
"matcher": "3-seq",
405-
"score": 94.12,
406-
"matched_length": 48,
363+
"score": 97.78,
364+
"matched_length": 88,
407365
"match_coverage": 100.0,
408366
"rule_relevance": 100,
409-
"rule_identifier": "apache-2.0_1060.RULE",
410-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/apache-2.0_1060.RULE"
411-
},
412-
{
413-
"license_expression": "apache-2.0 OR mit",
414-
"spdx_license_expression": "Apache-2.0 OR MIT",
415-
"from_file": "no_license_ambiguity/COPYRIGHT",
416-
"start_line": 6,
417-
"end_line": 9,
418-
"matcher": "3-seq",
419-
"score": 97.83,
420-
"matched_length": 45,
421-
"match_coverage": 100.0,
422-
"rule_relevance": 100,
423-
"rule_identifier": "apache-2.0_or_mit_47.RULE",
424-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/apache-2.0_or_mit_47.RULE"
367+
"rule_identifier": "mit_or_apache-2.0_38.RULE",
368+
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_38.RULE"
425369
}
426370
],
427-
"identifier": "apache_2_0_and__apache_2_0_or_mit-7ff6dd9d-b5e8-3fa4-dd61-c5a634c9b300"
371+
"identifier": "mit_or_apache_2_0-a43a1e15-1968-4de7-fe27-2129ebf57d54"
428372
}
429373
],
430374
"license_clues": [],
431-
"percentage_of_license_text": 81.11,
375+
"percentage_of_license_text": 97.78,
432376
"copyrights": [],
433377
"holders": [],
434378
"authors": [],
@@ -773,64 +717,33 @@
773717
"is_readme": true,
774718
"is_top_level": true,
775719
"is_key_file": true,
776-
"detected_license_expression": "mit",
777-
"detected_license_expression_spdx": "MIT",
720+
"detected_license_expression": "mit OR apache-2.0",
721+
"detected_license_expression_spdx": "MIT OR Apache-2.0",
778722
"license_detections": [
779723
{
780-
"license_expression": "mit",
781-
"license_expression_spdx": "MIT",
724+
"license_expression": "mit OR apache-2.0",
725+
"license_expression_spdx": "MIT OR Apache-2.0",
782726
"matches": [
783727
{
784728
"license_expression": "mit OR apache-2.0",
785729
"spdx_license_expression": "MIT OR Apache-2.0",
786730
"from_file": "no_license_ambiguity/README.md",
787731
"start_line": 152,
788-
"end_line": 157,
732+
"end_line": 158,
789733
"matcher": "3-seq",
790-
"score": 57.69,
791-
"matched_length": 15,
792-
"match_coverage": 57.69,
793-
"rule_relevance": 100,
794-
"rule_identifier": "mit_or_apache-2.0_9.RULE",
795-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_9.RULE"
796-
},
797-
{
798-
"license_expression": "mit",
799-
"spdx_license_expression": "MIT",
800-
"from_file": "no_license_ambiguity/README.md",
801-
"start_line": 157,
802-
"end_line": 157,
803-
"matcher": "2-aho",
804-
"score": 100.0,
805-
"matched_length": 4,
806-
"match_coverage": 100.0,
807-
"rule_relevance": 100,
808-
"rule_identifier": "mit_154.RULE",
809-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_154.RULE"
810-
},
811-
{
812-
"license_expression": "mit",
813-
"spdx_license_expression": "MIT",
814-
"from_file": "no_license_ambiguity/LICENSE-MIT",
815-
"start_line": 4,
816-
"end_line": 26,
817-
"matcher": "2-aho",
818-
"score": 100.0,
819-
"matched_length": 161,
734+
"score": 97.06,
735+
"matched_length": 33,
820736
"match_coverage": 100.0,
821737
"rule_relevance": 100,
822-
"rule_identifier": "mit.LICENSE",
823-
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/licenses/mit.LICENSE"
738+
"rule_identifier": "mit_or_apache-2.0_33.RULE",
739+
"rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_or_apache-2.0_33.RULE"
824740
}
825741
],
826-
"identifier": "mit-a9138d4e-bc0e-0a20-76fd-237047e6d41c",
827-
"detection_log": [
828-
"unknown-reference-to-local-file"
829-
]
742+
"identifier": "mit_or_apache_2_0-d9d84ae7-113e-249f-5302-6054bdbcdadb"
830743
}
831744
],
832745
"license_clues": [],
833-
"percentage_of_license_text": 1.69,
746+
"percentage_of_license_text": 2.93,
834747
"copyrights": [],
835748
"holders": [],
836749
"authors": [],

0 commit comments

Comments
 (0)