KiwiHC16 / Abeille

Abeille pour Jeedom (Gateway ZiGate)
GNU Affero General Public License v3.0
60 stars 52 forks source link

Sonar: aide a la gestion de la qualité du code #1339

Closed edgd1er closed 4 years ago

edgd1er commented 4 years ago

Sur une branche dev, j'ai mis un workflow pour analyser le code avec sonar. SonarCloud propose une interface de visualisation du rapport et cela permettrait de guider les corrections d'ano et de bénéficier des propositions d'amélioration du code.

il est possible d'avoir une visualisation ici: https://sonarcloud.io/dashboard?id=edgd1er_Abeille

si tu souhaites mettre en place cette analyse, il suffira d'accepter la PR que je peux faire et de créer les deux token dans la partie settings/secret.

un token pour permettre a github d'uploader le rapport chez sonarcloud un token pour permettre a sonarcloud d'envoyer des infos au projet github.

il y aurait quelques fichiers (4 ou 5 à mon souvenir) a renommer également, le docker sonar-client ne gère pas les nom de fichiers accentuées. 2018_03_12_12_53_49_Xiaomi_Capteur_Fumée.pdf => 2018_03_12_12_53_49_Xiaomi_Capteur_Fumee.pdf

KiwiHC16 commented 4 years ago

Alors pour être transparent, j'ai de moins en moins de temps pour Abeille alors je ne me vois pas aller sur un truc additionnel. Ca a l'air super puissant mai je n ai pas le temps plein d autres projets en attente Si tu veux revoir le code pourquoi pas mais attention a vouloir faire mieux ca peut entrainer de nouveau bug et donc du temps. Si tu prends le truc de A à Z pourquoi pas.

edgd1er commented 4 years ago

Oui, il y a une vie en dehors d'abeille ;) Pas de soucis

tcharp38 commented 4 years ago

Juste pour info, j'avais jeté un oeil pour voir comment ca pouvait être utile mais je trouve qu'il y a pas mal de warnings qui n'en sont pas. Par ex; image

Ajouter des {} alors qu'il n'y a qu'une seule fonction ou ligne... je n'en vois pas l'interet. Ca n'apporte rien du tout.

Bref, peut etre que dans tout ce qu'il reporte il y a des choses interessantes mais j'ai pas encore trouvé.

edgd1er commented 4 years ago

@tcharp38

Effectivement, il y a beaucoup de règles PSR qui sont liées à la présentation du code, mais c'est un standard. Cela ne change pas le coté fonctionnel du code, cependant,

Il y a d'autres informations comme la duplication de code, la complexité et la taille des classes qui indiquent qu'un refactoring est à faire.

L'analyse du code mort comme ici, montre que la page n'est plus soumise au contrôle de login et est donc dispo pour toute personne. C'est une faille potentielle. image

ou comme ici, un faute de syntaxe, du coup width n'est pas défini.... image

Bref, c'est juste un outil d'analyse automatique pour ajouter un peu de fiabilité (faille de secu, OWASP, ...) et réduire le ticket d'entrée pour la maintenance. Si Kiwi ne devait plus gérer le projet, pas sur qu'il soit repris, sachant que Abeille est franco-français et ne bénéficie pas d'une librairie python partagée par plusieurs solution domotique comme le plugin jeedom-zigate, ni d'une communauté internationale qui pourrait prendre en charge à plusieurs la maintenance. certaines fonctions gardent des reliquats de l'époque MQTT, il n'y a pas de phpdoc.

L'idée était de rendre le projet plus facile a maintenir et plus compréhensible. Pour motiver peut être d'autres personnes pour intervenir dans le code. Par exemple, la partie ajout de nouvel équipement est clairement le point ou il faudrait pouvoir rendre autonome les utilisateurs.

tcharp38 commented 4 years ago

Tu as raison. Il y a probablement des choses utiles à en tirer. Je vais revoir ça et pousser un petit cleanup avec chacun de mes PRs.

Pour ma curiosité, jeedom-zigate est partagé ? Comment ? Avec quel autre outil domotique ?

edgd1er commented 4 years ago

@tcharp38 ,

pas le plugin lui même qui est spécifique à jeedom, mais la lib zigpy à l'image du plugin zwave qui se repose sur la lib python openzwave. Communauté internationale = plus de support = plus de mainteneurs = plus de fiabilité et pérennité. la lib python zigate est utilisé par home assistant, jeedom et sans doute domoticz aussi.