SlideShare una empresa de Scribd logo
1 de 32
ANALYSE DE CODE STATIQUE OBJECTIVE-C / SWIFT
COCOAHEADS MONTPELLIER - 14 AVRIL 2016
BACKELITE
SOMMAIRE
9 ans de développement iOS chez Backelite
Le fléau de la dette technique
Mesurer la dette pour la maitriser
SonarQube avec Objective-C et Swift
Travailler avec SonarQube
Un workflow approprié pour garder le contrôle
14 AVRIL 2016 2
9 ANS DE DÉVELOPPEMENT IOS CHEZ BACKELITE
BACKELITE14 AVRIL 2016
DES APPLICATIONS MOBILES DE PLUS EN PLUS COMPLEXES
4
0
75
150
225
300
375
2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
Jours de développement
BACKELITE14 AVRIL 2016
DES TEMPS DE DÉVELOPPEMENT DE PLUS EN PLUS LONG AU FIL DES VERSIONS
5
40
50
60
70
80
90
V1 V2 V3 V4
JH Théoriques JH Constatés
CET ÉCART S’APPELLE : LA DETTE TECHNIQUE !
6
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.
8
BACKELITE14 AVRIL 2016
D’OÙ PROVIENT LA DETTE TECHNIQUE ?
Causes non intentionnelles
Mauvaise conception d’une application
Non respect des bonnes pratiques de codage
9
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
10
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
12
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…
13
Ou mieux : en utiliser une qui existe déjà !
BACKELITE14 AVRIL 2016
LA MÉTHODE SQALE (SOFTWARE QUALITY ASSESSMENT BASED ON
LIFECYCLE EXPECTATIONS)
14
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
15
SONARQUBE AVEC OBJECTIVE-C ET SWIFT
BACKELITE14 AVRIL 2016
SONARQUBE (ANCIENNEMENT SONAR)
17
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
18
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-C
https://github.com/Backelite/sonar-objective-c
Analyse des défauts (OCLint et Faux Pas, 170 règles)
Données de test
Couverture de code (y compris Xcode 7+)
Complexité
SQALE
19
Swift
https://github.com/Backelite/sonar-swift
Analyse des défauts (SwiftLint, 32 règles)
Données de test
Couverture de code
Complexité
SQALE
TRAVAILLER AVEC SONARQUBE
BACKELITE14 AVRIL 2016
SONARQUBE : PROFILS DE QUALITÉ
21
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-C
https://github.com/Backelite/sonar-objective-c
Analyse des défauts (OCLint et Faux Pas, 170 règles)
Données de test
Couverture de code (y compris Xcode 7+)
Complexité
SQALE
22
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
23
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
24
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
25
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
27
+ =
BACKELITE14 AVRIL 2016
QUAND CONTRÔLER LES DÉFAUTS DE SON CODE ?
28
git push
de fin de
journée
analyse
nocturne
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 ?
29
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…
30
…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 32

Más contenido relacionado

Destacado

FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...
FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...
FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...Idean France
 
UI Design Trends for 2017
UI Design Trends for 2017UI Design Trends for 2017
UI Design Trends for 2017Idean France
 
Cocoaheads Montpellier Meetup : Comment gérer son onboarding
Cocoaheads Montpellier Meetup : Comment gérer son onboardingCocoaheads Montpellier Meetup : Comment gérer son onboarding
Cocoaheads Montpellier Meetup : Comment gérer son onboardingIdean France
 
Messages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineIdean France
 
Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}Idean France
 
CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}Idean France
 
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}Idean France
 
Meetup CocoaHeads Montpellier : conférence sur l'Auto Layout
Meetup CocoaHeads Montpellier : conférence sur l'Auto LayoutMeetup CocoaHeads Montpellier : conférence sur l'Auto Layout
Meetup CocoaHeads Montpellier : conférence sur l'Auto LayoutIdean France
 
Cocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSCocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSIdean France
 
CocoaPods par David Yang
CocoaPods par David YangCocoaPods par David Yang
CocoaPods par David YangIdean France
 
Sirikit par Julien Coudsi
Sirikit par Julien CoudsiSirikit par Julien Coudsi
Sirikit par Julien CoudsiIdean France
 
Un développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey HacqUn développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey HacqIdean France
 
Rendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas FontaineRendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas FontaineIdean France
 
Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...
Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...
Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...Idean France
 
Les 10 tendances de la User Experience en 2015
Les 10 tendances de la User Experience en 2015Les 10 tendances de la User Experience en 2015
Les 10 tendances de la User Experience en 2015Idean France
 
Les bonnes pratiques du e-commerce
Les bonnes pratiques du e-commerceLes bonnes pratiques du e-commerce
Les bonnes pratiques du e-commerceUX REPUBLIC
 
Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017Idean France
 
L'Apple Watch crée l'événement et bouscule le marché des smartwatches
L'Apple Watch crée l'événement et bouscule le marché des smartwatches  L'Apple Watch crée l'événement et bouscule le marché des smartwatches
L'Apple Watch crée l'événement et bouscule le marché des smartwatches Idean France
 
The top 9 Tech trends for 2016
The top 9 Tech trends for 2016The top 9 Tech trends for 2016
The top 9 Tech trends for 2016Idean France
 
A developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey HacqA developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey HacqIdean France
 

Destacado (20)

FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...
FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...
FLUPA - UX Days 2016 : "Quand les militaires se prennent au jeu du Design Spr...
 
UI Design Trends for 2017
UI Design Trends for 2017UI Design Trends for 2017
UI Design Trends for 2017
 
Cocoaheads Montpellier Meetup : Comment gérer son onboarding
Cocoaheads Montpellier Meetup : Comment gérer son onboardingCocoaheads Montpellier Meetup : Comment gérer son onboarding
Cocoaheads Montpellier Meetup : Comment gérer son onboarding
 
Messages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas Fontaine
 
Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}Programmation Orientée Protocole {Cocoaheads Montpellier}
Programmation Orientée Protocole {Cocoaheads Montpellier}
 
CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}CA Layer / Core Animation {Cocoaheads Montpellier}
CA Layer / Core Animation {Cocoaheads Montpellier}
 
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}App groups, faire communiquer ses applications {Cocoaheads Montpellier}
App groups, faire communiquer ses applications {Cocoaheads Montpellier}
 
Meetup CocoaHeads Montpellier : conférence sur l'Auto Layout
Meetup CocoaHeads Montpellier : conférence sur l'Auto LayoutMeetup CocoaHeads Montpellier : conférence sur l'Auto Layout
Meetup CocoaHeads Montpellier : conférence sur l'Auto Layout
 
Cocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOSCocoaheads Montpellier Meetup : 3D Touch for iOS
Cocoaheads Montpellier Meetup : 3D Touch for iOS
 
CocoaPods par David Yang
CocoaPods par David YangCocoaPods par David Yang
CocoaPods par David Yang
 
Sirikit par Julien Coudsi
Sirikit par Julien CoudsiSirikit par Julien Coudsi
Sirikit par Julien Coudsi
 
Un développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey HacqUn développeur sachant designer par Audrey Hacq
Un développeur sachant designer par Audrey Hacq
 
Rendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas FontaineRendering unit tests par Nicolas Fontaine
Rendering unit tests par Nicolas Fontaine
 
Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...
Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...
Les Formulaires - Les bonnes pratiques pour une meilleure expérience utilisat...
 
Les 10 tendances de la User Experience en 2015
Les 10 tendances de la User Experience en 2015Les 10 tendances de la User Experience en 2015
Les 10 tendances de la User Experience en 2015
 
Les bonnes pratiques du e-commerce
Les bonnes pratiques du e-commerceLes bonnes pratiques du e-commerce
Les bonnes pratiques du e-commerce
 
Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017Tendances du Design d'Interface 2017
Tendances du Design d'Interface 2017
 
L'Apple Watch crée l'événement et bouscule le marché des smartwatches
L'Apple Watch crée l'événement et bouscule le marché des smartwatches  L'Apple Watch crée l'événement et bouscule le marché des smartwatches
L'Apple Watch crée l'événement et bouscule le marché des smartwatches
 
The top 9 Tech trends for 2016
The top 9 Tech trends for 2016The top 9 Tech trends for 2016
The top 9 Tech trends for 2016
 
A developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey HacqA developer who knows how to design by Audrey Hacq
A developer who knows how to design by Audrey Hacq
 

Similar a Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / SWIFT

2009-09-15 Squale au Paris JUG
2009-09-15 Squale au Paris JUG2009-09-15 Squale au Paris JUG
2009-09-15 Squale au Paris JUGFabrice Bellingard
 
Afterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussiAfterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussicyrilpicat
 
L'ADN d'un développement produit réussi
L'ADN d'un développement produit réussiL'ADN d'un développement produit réussi
L'ADN d'un développement produit réussiOCTO Technology Suisse
 
Réussissez le développement de votre prochaine application web ou mobile
Réussissez le développement de votre prochaine application web ou mobileRéussissez le développement de votre prochaine application web ou mobile
Réussissez le développement de votre prochaine application web ou mobileOCTO Technology Suisse
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSmile I.T is open
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubePierre-Henri Gache
 
Cwin16 - Paris - dev ops
Cwin16 - Paris - dev opsCwin16 - Paris - dev ops
Cwin16 - Paris - dev opsCapgemini
 
Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...
Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...
Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...Christian Cousquer
 
Cv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACKCv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACKMoez Hamzaoui
 
Master_OSAE_Cours_Tests_Grolleau.pdf
Master_OSAE_Cours_Tests_Grolleau.pdfMaster_OSAE_Cours_Tests_Grolleau.pdf
Master_OSAE_Cours_Tests_Grolleau.pdfBchiriAmina1
 
20090609 05 - Audit de code automatisé chez Renault
20090609 05 - Audit de code automatisé chez Renault20090609 05 - Audit de code automatisé chez Renault
20090609 05 - Audit de code automatisé chez RenaultLeClubQualiteLogicielle
 
Tra optimiser preparation_tests_v1
Tra optimiser preparation_tests_v1Tra optimiser preparation_tests_v1
Tra optimiser preparation_tests_v1SQLI
 
20070320 01 - Démarche qualité logicielle et outillage (SNCF)
20070320 01 - Démarche qualité logicielle et outillage (SNCF)20070320 01 - Démarche qualité logicielle et outillage (SNCF)
20070320 01 - Démarche qualité logicielle et outillage (SNCF)LeClubQualiteLogicielle
 
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsCdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsAgile Montréal
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)guicara
 
20100608 03 - Retour d'experience PSA Squale
20100608 03 - Retour d'experience PSA Squale20100608 03 - Retour d'experience PSA Squale
20100608 03 - Retour d'experience PSA SqualeLeClubQualiteLogicielle
 
CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022
CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022
CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022Agile Montréal
 

Similar a Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / SWIFT (20)

2009-09-15 Squale au Paris JUG
2009-09-15 Squale au Paris JUG2009-09-15 Squale au Paris JUG
2009-09-15 Squale au Paris JUG
 
Afterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussiAfterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussi
 
L'ADN d'un développement produit réussi
L'ADN d'un développement produit réussiL'ADN d'un développement produit réussi
L'ADN d'un développement produit réussi
 
Réussissez le développement de votre prochaine application web ou mobile
Réussissez le développement de votre prochaine application web ou mobileRéussissez le développement de votre prochaine application web ou mobile
Réussissez le développement de votre prochaine application web ou mobile
 
Séminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application MétierSéminaire Smile - Réussir son application Métier
Séminaire Smile - Réussir son application Métier
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQube
 
20100121 01 - Présentation Renault
20100121 01 - Présentation Renault20100121 01 - Présentation Renault
20100121 01 - Présentation Renault
 
Cwin16 - Paris - dev ops
Cwin16 - Paris - dev opsCwin16 - Paris - dev ops
Cwin16 - Paris - dev ops
 
Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...
Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...
Retour d’expérience sur le déploiement d’uPortal 4.2 responsive à l’UPMC – So...
 
Cv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACKCv Moez HAMZAOUI JAVA J2EE FULL STACK
Cv Moez HAMZAOUI JAVA J2EE FULL STACK
 
cv_chaker_jouini_fr
cv_chaker_jouini_frcv_chaker_jouini_fr
cv_chaker_jouini_fr
 
Master_OSAE_Cours_Tests_Grolleau.pdf
Master_OSAE_Cours_Tests_Grolleau.pdfMaster_OSAE_Cours_Tests_Grolleau.pdf
Master_OSAE_Cours_Tests_Grolleau.pdf
 
20090609 05 - Audit de code automatisé chez Renault
20090609 05 - Audit de code automatisé chez Renault20090609 05 - Audit de code automatisé chez Renault
20090609 05 - Audit de code automatisé chez Renault
 
Tra optimiser preparation_tests_v1
Tra optimiser preparation_tests_v1Tra optimiser preparation_tests_v1
Tra optimiser preparation_tests_v1
 
20070320 01 - Démarche qualité logicielle et outillage (SNCF)
20070320 01 - Démarche qualité logicielle et outillage (SNCF)20070320 01 - Démarche qualité logicielle et outillage (SNCF)
20070320 01 - Démarche qualité logicielle et outillage (SNCF)
 
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsCdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
 
Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)Formation JavaScript full-stack (JS, jQuery, Node.js...)
Formation JavaScript full-stack (JS, jQuery, Node.js...)
 
20100608 03 - Retour d'experience PSA Squale
20100608 03 - Retour d'experience PSA Squale20100608 03 - Retour d'experience PSA Squale
20100608 03 - Retour d'experience PSA Squale
 
SQLI - Club des DSI - Mobilité
SQLI - Club des DSI - MobilitéSQLI - Club des DSI - Mobilité
SQLI - Club des DSI - Mobilité
 
CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022
CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022
CdP QA - QA hackathon - Intelligence artificielle - 27 janvier 2022
 

Más de Idean France

Start with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineStart with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineIdean France
 
Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Idean France
 
Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsIdean France
 
La recette graphique
La recette graphiqueLa recette graphique
La recette graphiqueIdean France
 
Graph QL par Andy Gigon
Graph QL par Andy GigonGraph QL par Andy Gigon
Graph QL par Andy GigonIdean France
 
Cocoheads react native + redux par Nicolas Fontaine
Cocoheads   react native + redux par Nicolas FontaineCocoheads   react native + redux par Nicolas Fontaine
Cocoheads react native + redux par Nicolas FontaineIdean France
 
Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Idean France
 
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Idean France
 
From Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre HarléFrom Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre HarléIdean France
 
RX Swift avril 2017 - David Yang
RX Swift avril 2017 - David YangRX Swift avril 2017 - David Yang
RX Swift avril 2017 - David YangIdean France
 
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...Idean France
 
How to design forms that deliver a great user experience
How to design forms that deliver a great user experienceHow to design forms that deliver a great user experience
How to design forms that deliver a great user experienceIdean France
 

Más de Idean France (12)

Start with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a MachineStart with a Concept and Stop Designing like a Machine
Start with a Concept and Stop Designing like a Machine
 
Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !Design Systems : à votre marque, prêts, partez !
Design Systems : à votre marque, prêts, partez !
 
Design systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outilsDesign systems : Bench et reco sur les outils
Design systems : Bench et reco sur les outils
 
La recette graphique
La recette graphiqueLa recette graphique
La recette graphique
 
Graph QL par Andy Gigon
Graph QL par Andy GigonGraph QL par Andy Gigon
Graph QL par Andy Gigon
 
Cocoheads react native + redux par Nicolas Fontaine
Cocoheads   react native + redux par Nicolas FontaineCocoheads   react native + redux par Nicolas Fontaine
Cocoheads react native + redux par Nicolas Fontaine
 
Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017Meetup langages visuels - Backelite - novembre 2017
Meetup langages visuels - Backelite - novembre 2017
 
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
Sketch pour les designers : pourquoi, quand et comment l'utiliser ?
 
From Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre HarléFrom Business to Buttons by Pierre Harlé
From Business to Buttons by Pierre Harlé
 
RX Swift avril 2017 - David Yang
RX Swift avril 2017 - David YangRX Swift avril 2017 - David Yang
RX Swift avril 2017 - David Yang
 
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
 
How to design forms that deliver a great user experience
How to design forms that deliver a great user experienceHow to design forms that deliver a great user experience
How to design forms that deliver a great user experience
 

Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / SWIFT

  • 1. ANALYSE DE CODE STATIQUE OBJECTIVE-C / SWIFT COCOAHEADS MONTPELLIER - 14 AVRIL 2016
  • 2. BACKELITE SOMMAIRE 9 ans de développement iOS chez Backelite Le fléau de la dette technique Mesurer la dette pour la maitriser SonarQube avec Objective-C et Swift Travailler avec SonarQube Un workflow approprié pour garder le contrôle 14 AVRIL 2016 2
  • 3. 9 ANS DE DÉVELOPPEMENT IOS CHEZ BACKELITE
  • 4. BACKELITE14 AVRIL 2016 DES APPLICATIONS MOBILES DE PLUS EN PLUS COMPLEXES 4 0 75 150 225 300 375 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Jours de développement
  • 5. BACKELITE14 AVRIL 2016 DES TEMPS DE DÉVELOPPEMENT DE PLUS EN PLUS LONG AU FIL DES VERSIONS 5 40 50 60 70 80 90 V1 V2 V3 V4 JH Théoriques JH Constatés
  • 6. CET ÉCART S’APPELLE : LA DETTE TECHNIQUE ! 6
  • 7. LE FLÉAU DE LA DETTE TECHNIQUE
  • 8. 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. 8
  • 9. BACKELITE14 AVRIL 2016 D’OÙ PROVIENT LA DETTE TECHNIQUE ? Causes non intentionnelles Mauvaise conception d’une application Non respect des bonnes pratiques de codage 9 Causes Intentionnelles « Quick wins » pour livrer un projet dans les temps Cela vous parle ? Logique : nous sommes tous des pollueurs de code !
  • 10. 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 10 source : http://www.gartner.com/newsroom/id/1439513
  • 11. MESURER LA DETTE POUR LA MAITRISER
  • 12. BACKELITE14 AVRIL 2016 MESURER LA DETTE TECHNIQUE Si vous ne pouvez pas le mesurer, vous ne pouvez pas l'améliorer 12 William Thomson (Lord Kelvin) 1824–1907
  • 13. BACKELITE COMMENT MESURER LA DETTE TECHNIQUE ? 14 AVRIL 2016 Il est possible d’inventer sa propre méthode de mesure… 13 Ou mieux : en utiliser une qui existe déjà !
  • 14. BACKELITE14 AVRIL 2016 LA MÉTHODE SQALE (SOFTWARE QUALITY ASSESSMENT BASED ON LIFECYCLE EXPECTATIONS) 14 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
  • 15. BACKELITE14 AVRIL 2016 LA MÉTHODE SQALE 15
  • 17. BACKELITE14 AVRIL 2016 SONARQUBE (ANCIENNEMENT SONAR) 17 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…)
  • 18. BACKELITE14 AVRIL 2016 SONARQUBE : SUPPORT D’OBJECTIVE-C ET SWIFT 18 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
  • 19. BACKELITE14 AVRIL 2016 SONARQUBE : FONCTIONNALITÉS DES PLUGINS BACKELITE Objective-C https://github.com/Backelite/sonar-objective-c Analyse des défauts (OCLint et Faux Pas, 170 règles) Données de test Couverture de code (y compris Xcode 7+) Complexité SQALE 19 Swift https://github.com/Backelite/sonar-swift Analyse des défauts (SwiftLint, 32 règles) Données de test Couverture de code Complexité SQALE
  • 21. BACKELITE14 AVRIL 2016 SONARQUBE : PROFILS DE QUALITÉ 21 Les profils de qualité permettent d’activer /désactiver ou changer la sévérité des règles par language.
  • 22. BACKELITE14 AVRIL 2016 SONARQUBE : NOTATION SQALE Objective-C https://github.com/Backelite/sonar-objective-c Analyse des défauts (OCLint et Faux Pas, 170 règles) Données de test Couverture de code (y compris Xcode 7+) Complexité SQALE 22 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
  • 23. BACKELITE14 AVRIL 2016 SONARQUBE : QUALITY GATES 23 Les quality gates permettent de définir des seuils de tolérances (warning, error) sur les différentes métriques d’un projet
  • 24. BACKELITE14 AVRIL 2016 SONARQUBE : NOTIFICATIONS 24 Les notifications permettent de vous informer des nouveaux défauts que vous avez engendré en vous envoyant un mail à la fin d’une analyse
  • 25. BACKELITE14 AVRIL 2016 SONARQUBE : PLANS D’ACTION 25 Les plans d’actions permettent de structurer les phases de nettoyage du code
  • 26. UN WORKFLOW APPROPRIÉ POUR GARDER LE CONTRÔLE
  • 27. BACKELITE14 AVRIL 2016 SONARQUBE : INTÉGRATION CONTINUE 27 + =
  • 28. BACKELITE14 AVRIL 2016 QUAND CONTRÔLER LES DÉFAUTS DE SON CODE ? 28 git push de fin de journée analyse nocturne notification des défauts par mail correction des défauts implémentation de nouvelles fonctionnalités
  • 29. BACKELITE14 AVRIL 2016 COMMENT TRAITER LES DÉFAUTS DANS SONARQUBE ? 29 Le navigateur de code de SonarQube permet de facilement repérer ses défauts et les marquer en résolus ou faux positifs
  • 30. BACKELITE14 AVRIL 2016 ET SURTOUT NE PAS OUBLIER… 30 …que tous les outils du monde ne remplacent pas une bonne revue de code de temps en temps !
  • 32. Gilles Grousset @zippy1978 DES QUESTIONS ? BACKELITE14 AVRIL 2016 32

Notas del editor

  1. Au début : comme le web, des applications « vitrines », avec peu de fonctionnalités Au fil du temps : plus de budget, plus de fonctions (transformation digitale des clients) Aujourd’hui : des applications plus riches, très souvent développées en continue (agile) Cycle de mise à jour : passé de 1 à 2 versions par an, à 4 à 5.
  2. Entre chaque version d’une application : les temps de développements n’évolue pas de façon linéaire, alors que la charge estimée est la même pour chacune des versions A chaque nouvelle version : l’écart augmente Sur des applications avec peu de fonctionnalités : l’écart n’est pas flagrant, mais plus l’application se complexifie, plus l’écart est visible
  3. La partie visible : ce que le client et l’utilisateur voient La partie immergée : ce que le développeur voit dans le code
  4. Similaire également à l’empreinte carbone : les déchets que nous laissons derrière nous en codant, et qui auront un cout de recyclage
  5. Tous des pollueurs de code : plus on écrit de code, plus nous avons des chances de polluer.
  6. De quoi occuper des générations de développeurs ! Le problème s’accentue et le phénomène s’accélère : il commence à y avoir une prise de conscience sur le sujet
  7. Mathématicien / physicien, président de la Royal Society
  8. Requirement : chacun a un cout / un poids (linéaire ou non)
  9. Projet OSS porté par la société SonarSource A l’origine : orienté Java, puis s’étend à d’autres languages web Version actuelle : 5.4 Plugins gratuits et payants !
  10. En 2014 : pas grand chose, plugin open source cassé à causes d’vols majeures de l’API de Sonar (passage du 3.6 au 4.x) Reprise en main du plugin open source via des contribs Initialisation d’un fork pour rajouter des nouvelles fonctionnalisés : nouvelles règles, calcul de la complexité cyclomatique
  11. Chez BK : la maintenance du profil par défaut est assurée par les lead tech (référents techno) Des profils spécifiques peuvent être attribués sur des projets
  12. Dispo depuis les version 4.5+ La note : elle se configure dans les paramètres et se base sur le ratio
  13. Permet de définir les seuils d’acceptabilité d’un code Peut être utilisé pour mettre ne erreur un job Jenkins (ex: livraison impossible tant que tous les tests ne sont pas ok…)
  14. On voit souvent SonarQube comme un gros Dashboard : mais il permet aussi d’effectuer des « actions » Les notifications permettent la notification par projet ou tous projets confondus Pour l’assignation automatique des défauts, il faut les plugins ‘SCM stats’ et ‘Issue assign’
  15. Un plan d’action est composé d’issues et peu avoir une échéance
  16. Les développeurs ne doivent pas être perturbés par SonarQube, il ne doivent donc pas s’en occuper Les analyses sur des bases de code importantes peuvent être longues = la nuit c’est mieux 1 fois par jour, ca suffit !
  17. SonarQube n’est qu’un outil = sans intégration a son process de travail, il ne sert pas a grand chose Suggestion : traiter ses défauts de la veille le matin = ce n’est pas long et ça permet de maintenir le code « en bon état »
  18. Un clic sur le défaut permet d’avoir l’explication du défaut Quand un défaut est marqué comme résolu : il est revivifié à l’analyse suivante et peut être réouvert Seuls les admin de défauts (issue admins) peuvent passer un défaut en faux positif (chez BK : ce sont les lead dev)
  19. Les développeurs ne doivent pas être perturbés par SonarQube, il ne doivent donc pas s’en occuper Les analyses sur des bases de code importantes peuvent être longues = la nuit c’est mieux 1 fois par jour, ca suffit !