Development #90625
nouvelle version de pylint
0%
Description
Pylint 3.2.0 se retrouve utilisé dans notre pipeline jenkins.
De nouveaux warnings sont levés, principalement avec l'introduction de possibly-used-before-assignment
En plus :- used before assignement ou il ne tiens pas compte du test sur locals()
- non mapping value in mapping context mauvais support du module attr ?
- useless return statement qui semble pertinent
Pour ce qui est des warnings levés par le nouveau possibly-used-before-assignment
la plupart des exemples que j'ai regardé jusqu'à présent sont cohérent et pertinents avec la description du warning : when relying on names after an if/else switch when one branch failed to define the name, raise, or return
Un des faux positifs sur lesquels je suis tombé est https://jenkins.entrouvert.org/job/gitea/job/authentic/job/wip%252F89456-api-client-password/14/pylint/folder.2098948229/source.d2fa48c9-8f86-423a-aace-a8721c3ab184/#116
On a bien "une branche qui échoue a définir TenantMiddleware" à la ligne 44, un if MULTITENANT
sans else qui fait l'import, mais le soucis c'est que le warning est levé sur un bout de code qui est dans un if MULTITENANT
:/
Une solution pourrait être de désactiver possibly-used-before-assignment dans pylint.rc ?
Related issues
Associated revisions
History
Updated by Yann Weber 4 months ago
- Related to Bug #90624: Nouvelle version de pylint qui casse l’intégration continue added
Updated by Yann Weber 4 months ago
- Related to Development #90582: build, adapter à nouvelle version de pylint added
Updated by Robot Gitea 4 months ago
- Status changed from Nouveau to En cours
- Assignee set to Yann Weber
Yann Weber (yweber) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/authentic/pulls/304
- Titre : WIP: misc: fix pylint 3.2.0 warnings (#90625)
- Modifications : https://git.entrouvert.org/entrouvert/authentic/pulls/304/files
Updated by Yann Weber 4 months ago
- Related to Bug #90834: Nouvelle version de pylint qui casse l’intégration continue added
Updated by Robot Gitea 4 months ago
- Status changed from Solution proposée to En cours
Benjamin Dauvergne (bdauvergne) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :
Updated by Yann Weber 4 months ago
Soit quelque chose m'échappe, soit le test possibly-used-before-assignement
est cassé/dangereux sur les matchs.
En effet, dans la PR certains if/elif/... ont été remplacé par des match, ça supprimait les warnings. Par acquis de conscience j'ai fait un test pour voir si les match n'étaient pas simplement ignorés silencieusement : malheureusement ça semble être la cas.
Le test :
""" E0606 tests """
CHOICES = 'abc'
for choice in CHOICES:
if choice == 'a':
RESULT = 'foo'
elif choice == 'b':
RESULT = 'bar'
elif choice == 'c':
RESULT = 'foobar'
print(RESULT)
match choice:
case 'b':
RESULT2 = 'rab'
case 'c':
RESULT2 = 'raboof'
print(RESULT2)
Pylint nous dis :
$ pylint /tmp/test.py ************* Module test /tmp/test.py:11:10: E0606: Possibly using variable 'RESULT' before assignment (possibly-used-before-assignment)
Non-seulement c'est faux, RESULT
sera définie dans 100% des cas. Mais c'est surtout incomplet ! Il y a un cas trivial ou RESULT2
n'est pas définie.
Durant l'écriture du test, je suis aussi tombé sur un "fix" plutôt inquiétant pour cette histoire de "Possibly using variable 'RESULT' before assignment"... L'ajout d'un del RESULT
à la fin de la boucle fait disparaître le faux positif. En réalité on dirait qu'il implique la suppression du check sur la variable RESULT
!!
""" E0606 tests """
CHOICES = 'abc'
for choice in CHOICES:
if choice == 'b':
RESULT = 'bar'
elif choice == 'c':
RESULT = 'foobar'
print(RESULT)
match choice:
case 'b':
RESULT2 = 'rab'
case 'c':
RESULT2 = 'raboof'
print(RESULT2)
del RESULT
$ pylint /tmp/test.py ------------------------------------------------------------------- Your code has been rated at 10.00/10 (previous run: 6.15/10, +3.85)
Tout ça pour dire que même si je trouve l'idée de ce nouveau check chouette, il me semble que dans l'état il est presque plus dangereux que pratique.
Updated by Robot Gitea 4 months ago
Yann Weber (yweber) a fermé une pull request sur Gitea concernant cette demande.
Updated by Robot Gitea 4 months ago
Yann Weber (yweber) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/authentic/pulls/315
- Titre : WIP: misc: fix pylint 3.2.x warnings (#90625)
- Modifications : https://git.entrouvert.org/entrouvert/authentic/pulls/315/files
Updated by Benjamin Dauvergne 4 months ago
Leur analyse statique semble assez mauvaise1, en attendant on peut quand même ajouter les branches else/raise NotImplementedErrror qui manquent.
Sans match dans la cible, il semble ne pas donner de résultat trop faux, et effectivement il ne comprend pas del
non plus, en même temps ce n'est pas une construction fréquente.
1 Ils ne semble pas calculer le fixpoint de la visibilité des symboles et semble n'aller que vers l'avant ou alors ils ne calculent pas un flowgraph correct.
Updated by Robot Gitea 4 months ago
- Status changed from Solution proposée to Solution validée
Benjamin Dauvergne (bdauvergne) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 3 months ago
- Status changed from Solution validée to Résolu (à déployer)
Yann Weber (yweber) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/authentic/pulls/315
- Titre : misc: fix pylint 3.2.x warnings (#90625)
- Modifications : https://git.entrouvert.org/entrouvert/authentic/pulls/315/files
Updated by Transition automatique 3 months ago
- Status changed from Résolu (à déployer) to Solution déployée
misc: fix pylint 3.2.x warnings (#90625)
With "possibly-used-before-assignment" disabled.