cocoaheads montpellier meetup : l'analyse de code statique avec objective-c / swift
Post on 13-Apr-2017
472 Views
Preview:
TRANSCRIPT
ANALYSE DE CODE STATIQUE OBJECTIVE-C / SWIFTCOCOAHEADS MONTPELLIER - 14 AVRIL 2016
BACKELITE
SOMMAIRE
9 ans de développement iOS chez BackeliteLe fléau de la dette techniqueMesurer la dette pour la maitriserSonarQube avec Objective-C et SwiftTravailler avec SonarQubeUn workflow approprié pour garder le contrôle
14 AVRIL 2016
9 ANS DE DÉVELOPPEMENT IOS CHEZ BACKELITE
BACKELITE14 AVRIL 2016
DES APPLICATIONS MOBILES DE PLUS EN PLUS COMPLEXES
2007 2008 2009 2010 2011 2012 2013 2014 2015 20160
75
150
225
300
375
Jours de développement
BACKELITE14 AVRIL 2016
DES TEMPS DE DÉVELOPPEMENT DE PLUS EN PLUS LONG AU FIL DES VERSIONS
V1 V2 V3 V440
50
60
70
80
90
JH Théoriques JH Constatés
CET ÉCART S’APPELLE : LA DETTE TECHNIQUE !
LE FLÉAU DE LA DETTE TECHNIQUE
BACKELITE14 AVRIL 2016
LA DETTE TECHNIQUE
Wikipédia :
La dette technique est une métaphore du développement logiciel inventée par Ward Cunningham.
Il s'inspire du concept existant de dette dans le contexte du financement des entreprises et l'applique au domaine du développement logiciel.
BACKELITE14 AVRIL 2016
D’OÙ PROVIENT LA DETTE TECHNIQUE ?
Causes non intentionnellesMauvaise conception d’une applicationNon respect des bonnes pratiques de codage
Causes Intentionnelles« Quick wins » pour livrer un projet dans les temps
Cela vous parle ?Logique : nous sommes tous des pollueurs de code !
BACKELITE14 AVRIL 2016
LA DETTE TECHNIQUE : UN PHÉNOMÈNE PLANÉTAIRE !
La dette technique mondiale était estimée à 1 trillion de dollars en 2015 par Gartner
source : http://www.gartner.com/newsroom/id/1439513
MESURER LA DETTE POUR LA MAITRISER
BACKELITE14 AVRIL 2016
MESURER LA DETTE TECHNIQUE
Si vous ne pouvez pas le mesurer, vous
ne pouvez pas l'améliorer
William Thomson (Lord Kelvin)1824–1907
BACKELITE
COMMENT MESURER LA DETTE TECHNIQUE ?
14 AVRIL 2016
Il est possible d’inventer sa propre méthode de mesure…
Ou mieux : en utiliser une qui existe déjà !
BACKELITE14 AVRIL 2016
LA MÉTHODE SQALE (SOFTWARE QUALITY ASSESSMENT BASED ON LIFECYCLE EXPECTATIONS)
Mesure l’écart entre le standard (la qualité attendue) et la réalité à l’aide de règles.
Le modèle d’analyse permet d’obtenir le cout des mesures correctives pour les index suivants :
Testability Reliability Changeability Efficiency
Security Maintainability Portability Reusability
BACKELITE14 AVRIL 2016
LA MÉTHODE SQALE
SONARQUBE AVEC OBJECTIVE-C ET SWIFT
BACKELITE14 AVRIL 2016
SONARQUBE (ANCIENNEMENT SONAR)
Plateforme open source d’inspection de qualité de code en continue.• La référence !• Composé d’un module serveur et d’un « runner »• Extensible par mécanisme de plugin (ajout de languages, de sensors, de widgets
graphiques…)
BACKELITE14 AVRIL 2016
SONARQUBE : SUPPORT D’OBJECTIVE-C ET SWIFT
2014
Support Objective-C commercial
(5000$)
Support Objective-C open source
cassé
Pas de support de Swift
Contributions au plugin open source
pour le mettre à niveau
Création d’un fork pour ajouter de
nouvelles fonctionnalités
Sortie d’un plugin Swift commercial
2016
Fork indépendant du plugin
Objective-C
Réalisation d’un plugin pour le
support de Swift
BACKELITE14 AVRIL 2016
SONARQUBE : FONCTIONNALITÉS DES PLUGINS BACKELITE
Objective-Chttps://github.com/Backelite/sonar-objective-cAnalyse des défauts (OCLint et Faux Pas, 170 règles) Données de testCouverture de code (y compris Xcode 7+)ComplexitéSQALE
Swifthttps://github.com/Backelite/sonar-swiftAnalyse des défauts (SwiftLint, 32 règles) Données de testCouverture de codeComplexitéSQALE
TRAVAILLER AVEC SONARQUBE
BACKELITE14 AVRIL 2016
SONARQUBE : PROFILS DE QUALITÉ
Les profils de qualité permettent d’activer /désactiver ou changer la sévérité des règles par language.
BACKELITE14 AVRIL 2016
SONARQUBE : NOTATION SQALE
Objective-Chttps://github.com/Backelite/sonar-objective-cAnalyse des défauts (OCLint et Faux Pas, 170 règles) Données de testCouverture de code (y compris Xcode 7+)ComplexitéSQALE
La méthode SQALE est utilisée pour calculer la dette
technique. Des widgets permettent de visualiser la
dette et la pyramide de la dette
BACKELITE14 AVRIL 2016
SONARQUBE : QUALITY GATES
Les quality gates permettent de définir des seuils de tolérances
(warning, error) sur les différentes métriques d’un projet
BACKELITE14 AVRIL 2016
SONARQUBE : NOTIFICATIONS
Les notifications permettent de vous informer des nouveaux défauts que vous avez engendré en vous envoyant un mail à la fin d’une analyse
BACKELITE14 AVRIL 2016
SONARQUBE : PLANS D’ACTION
Les plans d’actions permettent de structurer les phases de nettoyage du code
UN WORKFLOW APPROPRIÉ POUR GARDER LE CONTRÔLE
BACKELITE14 AVRIL 2016
SONARQUBE : INTÉGRATION CONTINUE
+ =
BACKELITE14 AVRIL 2016
QUAND CONTRÔLER LES DÉFAUTS DE SON CODE ?
git push de fin
de journée
analyse nocturn
e
notification des
défauts par mail
correction des
défauts
implémentation de nouvelles fonctionnalités
BACKELITE14 AVRIL 2016
COMMENT TRAITER LES DÉFAUTS DANS SONARQUBE ?
Le navigateur de code de SonarQube permet de facilement repérer ses défauts et les marquer en résolus ou faux positifs
BACKELITE14 AVRIL 2016
ET SURTOUT NE PAS OUBLIER…
…que tous les outils du monde ne remplacent pas une bonne revue de code de temps en temps !
MERCI !des questions ?
Gilles Grousset@zippy1978
DES QUESTIONS ?
BACKELITE14 AVRIL 2016
top related