Ce billet de blog fait partie de la série consacrée à la conférence NCrafts ( billet précédent ) qui s’est tenue à Paris le 16 Mai 2014.

Le sujet

Le projet Roslyn, aussi appelé Dotnet Compiler Plateform, est un projet lancé par Microsoft dont la finalité est de mettre des compilateurs open source pour C# et VB à la disposition des développeurs, et une API permettant l’analyse de code à la volée.

Le but de sa session était de montrer les différentes possibilités offertes par l’existence d’un projet tel que Roslyn, et non de nous expliquer en détails comment l’utiliser.

Le speaker

jbevainLe speaker, Jean-Baptiste Evain (@jbevain), a travaillé sur le projet Mono, il est l’auteur de la librairie Cecil et travaille aujourd’hui sur le projet UnityVS (il s’agit d’intégrer l’écosystème de développement de jeux Unity à Visual studio).
La librairie Cecil permet d’accéder au contenu d’autres librairies .Net, de les modifier ou encore d’y ajouter du contenu.

La problématique

Jusqu’à présent, les compilateurs .Net existants ont toujours été propriétaires.
WP_20140516_010
Une des conséquences les plus parlantes de cette situation est la rareté d’outils aussi efficaces que Resharper. L’équipe Resharper chez Jetbrains, a dû développer son propre compilateur et doit le maintenir en parallèle de celui de Microsoft.

La solution Roslyn

Tout d’abord, l’accent a été mis sur la simplicité d’utilisation de l’outil. Le compilateur étant dorénavant open source, il est devenu possible de le modifier afin de créer un compilateur dérivé.
Jean-Baptiste nous a d’ailleurs montré un exemple de compilateur personnalisé. Il s’est permis de simplifier la syntaxe de déclaration d’un IEnumerable<T> en C#.
Au lieu d’écrire IEnumerable<T> il lui était désormais possible (avec son nouveau compilateur) de compiler en ayant écrit T~.
Il a aussi profité de la session pour nous faire une démo pour un outil d’analyse syntaxique de code à la volée (rappelant un peu Resharper) développé à l’aide de Roslyn. La particularité de cet outil était qu’il avait été développé essentiellement pour améliorer l’utilisation de la librairie Cecil.
Le but ici était, non pas de nous expliquer comment utiliser Cecil, mais de nous montrer qu’il sera bientôt possible, pour une librairie donnée, d’embarquer l’outil d’analyse syntaxique associé. Par exemple, lorsque la librairie est mise à jour et que certaines méthodes sont obsolètes, l’outil d’analyse met en surbrillance les lignes de code faisant les appels obsolètes et propose une correction au développeur (de la même manière que Resharper).

L’avenir de Roslyn

Une version de Roslyn est déjà disponible en preview avec Visual Studio 2013. Et une version plus définitive devrait, a priori, voir le jour avec la prochaine version de C# (C#6).
D’après le speaker, l’existence de Roslyn mènera à la multiplication d’outils proches (et concurrents) de Resharper.
A l’annonce de la sortie imminente de Roslyn, l’équipe Resharper, avait twitté “même pas peur”… (le tweet)

ntafraid
D’autant plus que l’équipe Resharper assure dans son blog qu’elle n’utilisera pas Roslyn lorsque cet outil sera disponible dans sa version définitive (point de vue de l’équipe resharper sur le sujet).
roslyn
Tout ceci promet de futurs trolls très animés ;).

Pour aller plus loin

http://www.developerfusion.com/article/143896/understanding-the-basics-of-roslyn/
http://msdn.microsoft.com/en-gb/roslyn
Ci-dessous les slides de la session
http://www.slideshare.net/jbevain/real-world-roslyn