[Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

30
AMBIENT INTELLIGENCE #mstechdays techdays.microsoft.fr/ techdays 2015 tour

Transcript of [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

Page 1: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

AMBIENT INTELLIGENCE

#mstechdays techdays.microsoft.fr/tour

techdays•

2015tour

Page 2: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

Améliorez la qualité de votre code avec Roslyn !Christophe HERAL@[email protected]

Page 3: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Qui suis-je ?

Consultant .NET et agiliste chez Neotech SolutionsCo-organisateur de l’Agile Tour BordeauxCo-organisateur d’Agile .NET Bordeaux

Et surtout :

Artisan logicielAméliorez la qualité de votre code avec Roslyn !

Page 4: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

Titre session pied de page tech.days tour 2015#mstechdays

Page 5: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

« La qualité d’aujourd’hui est la productivité de demain. »

Adage qui se transmet d’Extreme Programmer à Extreme Programmer

Améliorez la qualité de votre code avec Roslyn !

Page 6: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

Clean Code

Page 7: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Quand on trouve du code non professionnel…

Améliorez la qualité de votre code avec Roslyn !

Page 8: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Code Smells

Améliorez la qualité de votre code avec Roslyn !

Méthodes longues / Grosses classesLongue liste de paramètresCode dupliquéCode mortNombres magiquesUtilisation de switchGOTO / Codes de retour d’erreurNoms de méthodes avec ET/OUCommentairesNavigation transitiveGénéralité spéculativeSéparation verticaleHéritage parallèle

Page 9: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Comment mesurer cette qualité ?

Améliorez la qualité de votre code avec Roslyn !

Pair programming Revue de code Avec des

outils

(ou non qualité…)

Page 10: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Sous forme de tableau de bord

Améliorez la qualité de votre code avec Roslyn !

Page 11: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Analyse statique de code

Améliorez la qualité de votre code avec Roslyn !

Analyse des binaires

Analyse du code source

Page 12: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Popularité de l’analyse statique

Améliorez la qualité de votre code avec Roslyn !

Qui l’utilise ?

Page 13: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Popularité de l’analyse statique

Améliorez la qualité de votre code avec Roslyn !

Qui crée ses propres règles ?

Page 14: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdaysAméliorez la qualité de votre code avec Roslyn !

Page 15: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

« .NET Compiler Platform » alias Roslyn

Améliorez la qualité de votre code avec Roslyn !

Changement majeurRéécriture complète du compilateur

Un vaporware ?

Rosly

nC

om

pilate

ur

C#

Page 16: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Eléments d’un langage de programmation

Améliorez la qualité de votre code avec Roslyn !

• Symboles« Mots clés » (type, méthode, propriété, champ, …)

• VocabulaireInstructions construites à partir de symboles

• SyntaxeRespect de la grammaire (= forme)

• SémantiqueSens des instructions (= fond)

Page 17: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

La méta-programmation

Améliorez la qualité de votre code avec Roslyn !

« Ecriture de programmes qui manipulent des données

décrivant elles-mêmes des programmes. »

Définition de Wikipedia.fr

Page 18: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

La méta-programmation

Améliorez la qualité de votre code avec Roslyn !

2 utilisations principales

• Génération de code

• Analyse de codeAccès à l'arbre syntaxique du code via une APIReconnaissance de motifs dans le code

Page 19: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

Titre session pied de page tech.days tour 2015#mstechdays

Page 20: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Les fonctionnalités de Roslyn

Améliorez la qualité de votre code avec Roslyn !

Fonctionnalités de Visual Studio 2015IntellisenseRefactorisationDebugCode Lens

Compilateur « boîte blanche »Accès aux infos du compilateur Développer ses propres règles de qualité de code

Page 21: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

API de Roslyn

Améliorez la qualité de votre code avec Roslyn !

Accès à l’arbre syntaxiqueEn lecture pour effectuer l’analyseEn modification pour effectuer des refactorings

Fidèle au code source

En liaison avec celui-ci

Accès depuis le menu « Others Windows »

Page 22: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Créer un diagnostic / code fix

Améliorez la qualité de votre code avec Roslyn !

Faire un diagnostic Proposer un Code Fix

Page 23: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Enrichir simplement son IDE

Améliorez la qualité de votre code avec Roslyn !

Choix du template « Diagnostic with Code Fix »

Distribution sous 2 formesPackage NuGetExtension Visual Studio

Page 24: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Exemple

Améliorez la qualité de votre code avec Roslyn !

Implémentation d’une règle StyleCopSA1028 - CodeMustNotContainTrailingWhitespaceUne ligne de code ne doit pas terminer par un espace ou une tabulation.

Cas de tests :- Code vide- Espace après un appel de méthode- Espace après une déclaration de variable- Espace après un commentaire mono-ligne- …

Code FixSuppression des

caractères d’espacement

superflus en fin de ligne.

Page 25: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Utiliser Roslyn pour analyser le code

Améliorez la qualité de votre code avec Roslyn !

Démo : DiagnosticAnalyzer

SA1028

Page 26: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Utiliser Roslyn pour fixer le code

Améliorez la qualité de votre code avec Roslyn !

Démo : CodeFixProvider

SA1028

Page 27: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Utilisation de la règle dans un projet

Améliorez la qualité de votre code avec Roslyn !

Démo : Utilisation de la

règle

Page 28: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Ressources

Github officiel : https://github.com/dotnet/roslyn

.NET Analyzers : https://github.com/DotNetAnalyzers

Roslyn Tester : https://www.nuget.org/packages/RoslynTester

Blogs : https

://ovaismehboob.wordpress.com/2014/09/29/writing-diagnostic-with-code-fix-using-roslyn-net-compiler-platform/

http://blog.thomaslebrun.net/2014/11/roslyn-implement-the-use-var-feature-using-a-visual-studios-extension

http://www.informit.com/articles/article.aspx?p=2301258&seqNum=2

Améliorez la qualité de votre code avec Roslyn !

Page 29: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

tech.days tour 2015#mstechdays

Merci !

Améliorez la qualité de votre code avec Roslyn !

@ChrisHeral

Page 30: [Techdays Tour 2015] Améliorez la qualité de votre code avec Roslyn !

© 2015 Microsoft Corporation. All rights reserved.

#mstechdays techdays.microsoft.fr/tour

techdays•

2015tour

#ns_expert www.neotech-solutions.fr