SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
État des lieux
Capitol du Libre
23 novembre 2013
Pylint ?
Un analyseur statique de code Python
●

●
●

Trouve des bugs comme un compilateur
(mais beaucoup moins)
Vérifie les conventions de codage (beaucoup plus)
Et aussi : « mauvaise » utilisation de Python,
code smell, etc.

Environ 170 vérifications !

Initié par Logilab en 2003 :
10 ans d’existence en 2013 !
Architecture
●

●

●

●

Pylint s'appuie sur une bibliothèque pour la 
représentation du code source, Astroid
Le moteur parcourt l'arbre de syntaxe et envoie 
des évènements à des checkers
Ces checkers envoient des messages à un 
reporter
Architecture extensible 
●

Beaucoup de possibilités de configuration

●

Système de greffon pour ses propres checkers

●

Astroid est lui-même configurable
Distribution de Pylint
Intégré à la plupart des IDE 
http://docs.pylint.org/ide-integration

Intégré à la plupart des distributions Linux
Pypi
https://pypi.python.org/pypi/pylint

Entrepôt Mercurial 
https://bitbucket.org/logilab/pylint
Analyseurs de code Python
●

Pychecker (2001 – 2011)

●

Pylint (2003 – )

●

Pep8 (2006 – )

●

Pyflakes (2006 – )

●

Flake8 (2010 – )

●

McCabe (?)

●

etc. 
Un projet communautaire
●

Depuis le début, volonté d'un projet 
communautaire par Logilab

●

Reste un certain instinct de paternité

●

Et un temps limité

➢

Comme toujours, il faut faire des choix et des 
compromis 
Des choix... de communication
Bon accueil et réactivité sur
●

Liste de discussion

●

Tickets

●

Patchs

Faible support et communication sur :
●

IRC

●

Twitter
Des choix... d'interaction
Des releases régulières (tous les 2/3 mois)
Une forge de développement maison
Déménagement sur Bitbucket en signe 
d'ouverture à la communauté (et parce qu'on n'est plus en 
2003)
Des choix...techniques
Résistance !
●

Les œufs, c'est pour les omelettes - Debian vaincra !

●

Winquoi ? Debian vaincra !

●

Standards LogilaboLogilabiens

Mais certains choix stratégiques l'emportent
●

Support Windows / Setuptools

●

Py3k
Social ChangeLog
Mai 2003

0.1

Oct. 2003

0.2.1, 1er patch externe (?)

… releases tous les 2-3 mois
Mai 2008

découverte de l'existence de gpylint

Juil.  2011

0.25, 1ere « Google » release

Avril 2013

déménagement chez Bitbucket

Juin 2013

sprint vers 1.0

Août 2013

1.0, logilab-astng devient astroid
Quelques chiffres (très approximatifs)
Depuis mi-2006 (passage à Mercurial) :
●

●
●

2,101 commits, 56 contributeurs pour un total de 
23,119 lignes de code
estimé à 6 années-homme d'effort
+ de 70 % des commits par Logilab (!= lignes de 
code!)
https://www.ohloh.net/p/pylint/contributors/summary

Sur l'année :
●

un « googler » a les droits en écriture

●

50 % des commits par des contributeurs

●

70 Pull Requests / 110 tickets depuis avril
Retour d'expérience - 1
Libre != retours et contributions sans effort
●
●

La base = répondre à un besoin
Durer dans le temps = fédérer et animer une 
communauté 
●

via tous les canaux possibles

●

bon accueil, respect, réactivité
Retour d'expérience - 2
●
●

Code de qualité
Communiquer (documentation, annonces, blogs, 
etc.)
➢

●

Se démarquer, fidéliser
➢

●

veille Google, StackOverflow, Twitter
note Pylint

Évoluer en fonction des nouveaux besoins et des 
nouveaux moyens
Retour d'expérience – 3
●

Attention à l'affiliation trop explicite du projet à 
une société, e.g. logilab-astng, 
http://www.logilab.org/project/pylint
➢

●

http://pylint.org

(Très) difficile de fidéliser des contributeurs, 
faciliter au maximum les contributions (tickets, 
patchs, etc.)
➢

https://bitbucket.org/logilab/pylint
Actions et projets porteurs
●

Projets étudiants master & assimilés

●

Google Summer of Code

●

Sprints et bug days

●

Projet FUI SafePython
http://www.safe-python.fr/

Coder; répondre aux questions ; releaser ; 
communiquer ; coder ; répondre ; releaser ; 
communiquer ;  coder ; répondre ; releaser ; communiquer ;  
coder ; répondre ; releaser ; communiquer ;  coder ; répondre ; releaser ; 
communiquer... 
Retour sur investissement
●

Pour Logilab :
●
●

●

Communication
Reconnaissance

Pour moi :
●

●

Compétence technique (architecture, connaissance 
de Python, expérience d'autres développeurs...)
Compétence sociale (animation de communauté, 
interactions)
What's next pour Pylint ?
●

Plein d'idées d'améliorations, bugs à corriger... 

●

Contributeurs ponctuels, voire réguliers

●

Qui pour intégrer / animer / releaser ?

(Attention, on s'attache à ces ptites bêtes là)
Merci !
Sylvain Thénault
sylvain.thenault@logilab.fr
@sythenault
http://pylint.org/
http://www.logilab.org/ 

Weitere ähnliche Inhalte

Ähnlich wie Pylint : 10 ans, état des lieux

découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsThierry Gayet
 
Python dans windows azure web sites et pour scripter vos environnements
Python dans windows azure web sites et pour scripter vos environnementsPython dans windows azure web sites et pour scripter vos environnements
Python dans windows azure web sites et pour scripter vos environnementsMicrosoft
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchRobert Viseur
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot frameworkgilleslenfant
 
Mettez du libre dans vos projets web
Mettez du libre dans vos projets webMettez du libre dans vos projets web
Mettez du libre dans vos projets webPierre Rudloff
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQubeVincent Biret
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Kevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETKevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETMSDEVMTL
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineInterface ULg, LIEGE science park
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditauto entrepreneur
 
Introduction à l'Open Hardware
Introduction à l'Open HardwareIntroduction à l'Open Hardware
Introduction à l'Open HardwareRobert Viseur
 

Ähnlich wie Pylint : 10 ans, état des lieux (20)

découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Cpython
CpythonCpython
Cpython
 
Python dans windows azure web sites et pour scripter vos environnements
Python dans windows azure web sites et pour scripter vos environnementsPython dans windows azure web sites et pour scripter vos environnements
Python dans windows azure web sites et pour scripter vos environnements
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
 
Mettez du libre dans vos projets web
Mettez du libre dans vos projets webMettez du libre dans vos projets web
Mettez du libre dans vos projets web
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Kevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETKevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NET
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
OS libres pour l'IoT - Zephyr
OS libres pour l'IoT - ZephyrOS libres pour l'IoT - Zephyr
OS libres pour l'IoT - Zephyr
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Prototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel librePrototypage IoT avec logiciel/matériel libre
Prototypage IoT avec logiciel/matériel libre
 
Intro grpc.net
Intro  grpc.netIntro  grpc.net
Intro grpc.net
 
Boostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpeditBoostez vos-developpements-symfony-avec-phpedit
Boostez vos-developpements-symfony-avec-phpedit
 
Introduction à l'Open Hardware
Introduction à l'Open HardwareIntroduction à l'Open Hardware
Introduction à l'Open Hardware
 

Mehr von Logilab

Testinfra pyconfr 2017
Testinfra pyconfr 2017Testinfra pyconfr 2017
Testinfra pyconfr 2017Logilab
 
Open Source & Open Data : les bienfaits des communs
Open Source & Open Data : les bienfaits des communsOpen Source & Open Data : les bienfaits des communs
Open Source & Open Data : les bienfaits des communsLogilab
 
Salon Open Data
Salon Open DataSalon Open Data
Salon Open DataLogilab
 
Pydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instrumentsPydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instrumentsLogilab
 
Présentation Logilab
Présentation LogilabPrésentation Logilab
Présentation LogilabLogilab
 
Système d'archivage électronique mutualisé
Système d'archivage électronique mutualiséSystème d'archivage électronique mutualisé
Système d'archivage électronique mutualiséLogilab
 
Utiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou dockerUtiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou dockerLogilab
 
Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21Logilab
 
Simulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industrielSimulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industrielLogilab
 
Simulagora - Salon du Bourget
Simulagora - Salon du BourgetSimulagora - Salon du Bourget
Simulagora - Salon du BourgetLogilab
 
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015Logilab
 
Study of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on SimulagoraStudy of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on SimulagoraLogilab
 
Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...Logilab
 
Battle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - CubicwebBattle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - CubicwebLogilab
 
Debconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien CristauDebconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien CristauLogilab
 
Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)Logilab
 
PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)Logilab
 
Open Legislative Data Conference 2014
Open Legislative Data Conference 2014Open Legislative Data Conference 2014
Open Legislative Data Conference 2014Logilab
 
BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...Logilab
 
Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013Logilab
 

Mehr von Logilab (20)

Testinfra pyconfr 2017
Testinfra pyconfr 2017Testinfra pyconfr 2017
Testinfra pyconfr 2017
 
Open Source & Open Data : les bienfaits des communs
Open Source & Open Data : les bienfaits des communsOpen Source & Open Data : les bienfaits des communs
Open Source & Open Data : les bienfaits des communs
 
Salon Open Data
Salon Open DataSalon Open Data
Salon Open Data
 
Pydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instrumentsPydata Paris Python for manufacturing musical instruments
Pydata Paris Python for manufacturing musical instruments
 
Présentation Logilab
Présentation LogilabPrésentation Logilab
Présentation Logilab
 
Système d'archivage électronique mutualisé
Système d'archivage électronique mutualiséSystème d'archivage électronique mutualisé
Système d'archivage électronique mutualisé
 
Utiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou dockerUtiliser salt pour tester son infrastructure sur open stack ou docker
Utiliser salt pour tester son infrastructure sur open stack ou docker
 
Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21Importer des données en Python avec CubicWeb 3.21
Importer des données en Python avec CubicWeb 3.21
 
Simulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industrielSimulagora au service d'un grand défi industriel
Simulagora au service d'un grand défi industriel
 
Simulagora - Salon du Bourget
Simulagora - Salon du BourgetSimulagora - Salon du Bourget
Simulagora - Salon du Bourget
 
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
Innover par et pour la donnée - Logilab ADBU Bibcamp 2015
 
Study of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on SimulagoraStudy of the dynamic behavior of a pump with Code_ASTER on Simulagora
Study of the dynamic behavior of a pump with Code_ASTER on Simulagora
 
Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...Initialiser des conteneurs Docker à partir de configurations Salt construites...
Initialiser des conteneurs Docker à partir de configurations Salt construites...
 
Battle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - CubicwebBattle Opendata - Logilab - Cubicweb
Battle Opendata - Logilab - Cubicweb
 
Debconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien CristauDebconf14 : Putting some salt in your Debian systems -- Julien Cristau
Debconf14 : Putting some salt in your Debian systems -- Julien Cristau
 
Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)Simulagora (Euroscipy2014 - Logilab)
Simulagora (Euroscipy2014 - Logilab)
 
PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)PAFI (Euroscipy2014 - Logilab)
PAFI (Euroscipy2014 - Logilab)
 
Open Legislative Data Conference 2014
Open Legislative Data Conference 2014Open Legislative Data Conference 2014
Open Legislative Data Conference 2014
 
BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...BRAINOMICS A management system for exploring and merging heterogeneous brain ...
BRAINOMICS A management system for exploring and merging heterogeneous brain ...
 
Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013Présentation sur le stand à l'OpenWorldForum 2013
Présentation sur le stand à l'OpenWorldForum 2013
 

Pylint : 10 ans, état des lieux