Four silent bugs: IsRequiredPhrase.license_expression returns None, find_in_path ignores later PATH changes, duplicate dict keys override license mappings
I maintainer di solito rispondono entro 3 giorni
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 65/100
Direzione di ricerca
Inizia dal punto 1 in src/licensedcode/required_phrases.py vicino alla riga 205, dove la proprietà license_expression valuta self.rule.license_expression senza restituirlo, e verifica come le altre proprietà di quella classe leggono i loro valori. Il punto 2 si trova in src/commoncode/command.py intorno alla riga 319, dove find_in_path valuta searchable_paths() al momento dell'importazione. Esegui un piccolo script che modifichi PATH dopo l'importazione per riprodurlo. Il punto 3 richiede una decisione dei maintainer sui valori previsti in src/packagedcode/rubygems.py e src/packagedcode/alpine.py, quindi non toccarlo a meno che il thread non lo risolva. È completato quando le proprietà corrette restituiscono i valori attesi e i test pertinenti passano.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
A static scan of src/ found four bugs that fail silently (no exception).
Each was reproduced with a small standalone script.
1. IsRequiredPhrase.license_expression always returns None
src/licensedcode/required_phrases.py (~line 205):
@property
def license_expression(self):
self.rule.license_expression # missing `return`
Repro: IsRequiredPhrase(rule=<rule with license_expression="mit">, ...) .license_expression returns None.
Fix: return self.rule.license_expression.
2. find_in_path ignores PATH changes made after import
src/commoncode/command.py (~line 319):
def find_in_path(filename, searchable_paths=searchable_paths()):
The default is evaluated once at import time, so PATH changes made afterwards
are ignored. The parameter also shadows the searchable_paths() function.
Repro: import the module, then prepend a directory containing mytool to
os.environ["PATH"]. find_in_path("mytool") returns None, but
find_in_path("mytool", searchable_paths()) returns the path.
Fix: default to None and call searchable_paths() inside the function.
3. Duplicate dict keys with conflicting values silently override mappings
Python keeps only the last value, so the earlier entries are dead.
src/packagedcode/rubygems.py(LICENSES_MAPPING, lines 679-680):
'LGPL'maps to'lgpl'and then to'lgpl-2.0-plus'.src/packagedcode/alpine.py(DECLARED_TO_SPDX):'as-is'(lines 1619, 1701):licenseref-scancode-free-unknownvs
licenseref-scancode-unknown-license-reference'custom:tu-berlin-2.0'(lines 1690, 1715):
licenseref-scancode-unknown-license-referencevstu-berlin-2.0
The maintainers should decide which value is intended and remove the other.
4. Duplicate key in default ignores (harmless, cleanup)
src/commoncode/ignore.py lines 204-205 repeat "autogen.sh".
Environment
Found by static analysis (ruff F601, B008, B018) at commit 05a98f66.
Please verify the intended values for item 3 before changing them.
- Lingua principale
- Python
- Stelle
- 2.7k
- Fork
- 831
- Merge medio
- 2g 19h
- PR unite (30g)
- 8
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di aboutcode-org/scancode-toolkit
-
scancode aborts when encountering a broken RPM archiveForse già presa @adeba4343-web l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
aboutcode-org/scancode-toolkit#5407 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
parse_maintainer_name_email returns empty name and wrong email when string has "@" but no angle bracketsForse già presa @pujitha24 l’ha presa 2 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
aboutcode-org/scancode-toolkit#5402 ·
I maintainer di solito rispondono entro 3 giorni
-
bug: Unreachable JSON extension and format validation in validate_input_pathForse già presa @0Cymantek0 l’ha presa 22 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aboutcode-org/scancode-toolkit#5351 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
CycloneDX output: metadata.properties[].value emits JSON array instead of stringForse già presa @0Cymantek0 l’ha presa 22 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
aboutcode-org/scancode-toolkit#5349 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Duplicate 'COPYLEFT' entries in legal file classification names in legal.py and classify.pyForse già presa @Pradeepbeleri l’ha presa 49 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
aboutcode-org/scancode-toolkit#5319 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di aboutcode-org/scancode-toolkit
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
yt-project/yt#5624 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
NousResearch/hermes-agent#148376 ·
I maintainer di solito rispondono entro 1 giorno
-
Analysis
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SACGF/variantgrid#2615 ·
I maintainer di solito rispondono entro 1 giorno