Mono avance tous les jours, mais aujourd'hui en particulier, puisque Cecil vient d'y être ajouté. Cecil est un module de Reflection écrit par Jb Evain. Allez donc voir les sources, c'est de toute beauté !
Plutôt que de répéter, je vous envoie vers son post : http://blogs.dotnetguru.org/jbevain/index.php?title=cecil_feed(...)
# Un peu plus de détail ?
Posté par Adrien Bourdet . Évalué à 6.
En gros c'est quoi et ça sert à quoi ?
C'est juste pour avoir un bref aperçu sans avoir à passer trop de temps dessus... merci :)
[^] # Re: Un peu plus de détail ?
Posté par renaud . Évalué à -1.
[^] # Re: Un peu plus de détail ?
Posté par Maillequeule . Évalué à 10.
Nul doute que ca va lui sembler plus clair :)
M
[^] # Re: Un peu plus de détail ?
Posté par xavier dumont . Évalué à 10.
C'est ça qu'est beau avec l'informatique : Pour celui qui comprends c'est utile, pour celui qu'entrave que dalle c'est pure poésie !
Dis papa noél quand est-ce que tu m'apportes un tisseur d'aspect ?
- Tu l'auras si tu as bien managé le code toute l'année mon p'tit !
[^] # Re: Un peu plus de détail ?
Posté par Marc (site web personnel) . Évalué à 8.
Marc
[^] # Re: Un peu plus de détail ?
Posté par Sebastien . Évalué à 2.
Il en resulte qu'il y a un foultitude de patches, de bidouilles et autres incantations vaudoues (enfin c'est comme ca que je le vois) pour resoudre ce "probleme".
Celle que j'utilise c'est Reflex [1].
[1] : http://seal.web.cern.ch/seal/snapshot/work-packages/dictionary/inde(...)
[^] # Re: Un peu plus de détail ?
Posté par Marc (site web personnel) . Évalué à 7.
[^] # Re: Un peu plus de détail ?
Posté par Jb Evain (site web personnel) . Évalué à 10.
La reflection est une technique que l'on retrouve dans beaucoup de langages et de plateformes modernes, parfois sous le nom d'introspection, et qui fourni une interface au programmeur, pour pouvoir consulter l'intérieur d'un programme.
Le programmeur aura donc accès aux primitives du langage : classes, méthodes, champs, etc. Il existe déjà un mécanisme de reflection intégré à FCL (Foundation Class Library, l'ensemble des classes de bases proposés au mininum par une implémentation du standard ECMA-335 CLI, c'est à dire le Framework .net, Mono, et Portable.net), mais cette librairie dans sa version actuelle est encore très jeune et manque de détails.
C'est pour cette raison que j'ai commencé ce développement, car la librairie principale ne m'était pas utile, et que les autres développement de ce type étaient sois arretés (la librairie Rail par exemple), ou encore tout simplement pas en Open Source (le CodeModel de Reflector).
A moyen terme, cette librairie va permettre d'analyser des programmes .net, ce qui va permettre à Mono de se doter de programmes comme ceux disponibles sur le Framework .net, à savoir peverify, un utilitaire pour vérifier que le code intermédiaire généré par un compilateur pour le CLR est correct, et qu'il ne comporte pas d'anomalies. Comme exemple je montre dans le blog pointé ci dessus un exemple d'un autre programme .net qui pourrait être porté sous Mono : ildasm, un utilitaire permettant de consulter le contenu de son programme, et le code intermédiaire d'une assembly (en gros, l'unité d'une programme/librairie en .net). On pourrait aussi imaginer faire un programme comme FxCop, de chez Microsoft. Ce programme permet de définir un set de "rules", des règles que l'on peut nous même écrire, et appliquer sur une assembly. FxCop va alors nous dire si notre programme est conforme aux regles définies. Il existe des règles de nommage (variables, champs, classes...), mais aussi des règles plus orientées code, que je ne listerai pas ici :)
Cette librairie à cependant écrite à la base pour manipuler des assemblies, donc les lire, les modifier, et les écrire. C'est le socle d'un programme dont je suis le co-auteur : AspectDNG. Ce programme va permettre de définir dans un langage tiers (un fichier de description XML), comment mon outil va injecter du code a partir d'une librairie dans une autre. C'est la base de ce qu'on appelle un tisseur d'aspect statique, qui est un outil pour faire de la programmation orientée aspect. Plusieurs liens en dessous pour mieux comprendre :
AOP : http://en.wikipedia.org/wiki/Aspect-oriented_programming(...)
AspectDNG : http://aspectdng.sourceforge.net(...)
Reflexion : http://en.wikipedia.org/wiki/Reflection_%28computer_science%29(...)
J'espère avoir éclairci un peu le sujet :)
[^] # Re: Un peu plus de détail ?
Posté par john Smith (site web personnel) . Évalué à 2.
je cherche à faire de la qualimétrie sur du code .
cad
-vérifier le nombre de ligne dans les méthodes.
-vérifier si des lignes ne font pas plus de 80 caractères
-vérifier le formatage des noms de variables.
-etc...
FxCop doit pouvoir le faire, mais ca représente beaucoup de paramétrages.
Existe-t-il une alternative ?
Merci d'avance
[^] # Re: Un peu plus de détail ?
Posté par Jb Evain (site web personnel) . Évalué à 1.
Il faut differencier deux types d'outils, ceux qui vont travailler sur la repréntation compilée en CIL du programme, et sa source textuelle.
Dans le premier cas, on n'a evidemment pas accès au nombres de caractères d'une ligne, mais on peut rapidement faire des choses très fines. On peut remarquer dans cette catégorie :
http://smacchia.chez.tiscali.fr/NDepend.html(...)
http://blog.dotnetwiki.org/archive/2004/11/23/1281.aspx(...)
Dans la seconde catégorie, je n'ai trouvé que de très mauvais plugins pour VS.NET. Il serait très intéressant de disposer d'un équivalent .net de Jalopy ou autre.
[^] # Re: Un peu plus de détail ?
Posté par john Smith (site web personnel) . Évalué à 1.
parce qu'en attendant une alternative, faut bien en utiliser un dans certain cas meme s'il n'est pas parfait ...
merci
[^] # Re: Un peu plus de détail ?
Posté par Jb Evain (site web personnel) . Évalué à 1.
http://www.codeproject.com/macro/linecount.asp(...)
Après il existe des outils payants plus complets :
http://www.xtreme-simplicity.net/CSharpRefactory.html(...)
Est un bon exemple.
[^] # Re: Un peu plus de détail ?
Posté par TImaniac (site web personnel) . Évalué à 3.
AspectDNG travaille directement au niveau du bytecode et non au niveau du source, c'est une différence que l'on retrouve dans de nombreux "équivalents" entre les mondes .NET et Java. .NET étant "officiellement" multi-langages, ces outils qui travaillent directement sur le bytecode sont utilisables avec n'importe quel langage ciblant la plateforme et ont souvent des possibilités de manipulation beaucoup plus importantes.
Encore bravo Jb, et bonne continuation à toute l'équipe de DotNetGuru (super site pour tous les développeurs curieux et autre architectes passionnés de .NET ET Java :-) )
[^] # Re: Un peu plus de détail ?
Posté par Jb Evain (site web personnel) . Évalué à 1.
Il existe aussi de nombreuses librairies de manipulation de bytecode dans le monde Java, on peux noter les plus connues BCEL et SERP, mais aussi un petit outsider excellent issu de chez ObjectWeb : ASM, très leger, et très performant.
# Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: de l'article de linux mag
Posté par TImaniac (site web personnel) . Évalué à 4.
JAva et .NET ont de nombreux points communs mais aussi des spécificités, dont découle une saine émulation entre les 2 plateformes (cf C# 2.0 et Java 1.5).
Après comme tout framework choisir de développer avec ces environnements lie ton code à une techno et créé donc une dépendance. D'un point de vue commercial les 2 environnements propose désormais un choix d'implémentation et on n'est donc pas dépendant d'un éditeur particulier.
Reste à voir le long terme pour apprécier la durée de vie de ces plateforme et donc la pérénité des applications que l'on développe. A mon avis les 2 plateformes continueront de cohabiter, parcqu'elles sont proches mais aussi parcqu'un effort des 2 parties est fait pour assurer l'interopérabilité des environnements.
Après tu peux troller sur le fait que Microsoft c'est mal (mais pourquoi Sun serait mieux ?), mais mon conseil et d'aller lire les nombreux trolls que tu trouveras sur google : tu arrivera toujours à la même conclusion : il y a les trolleurs qui discutent ethique, les 2 gros (MS et Sun) qui font avancer les bousins, et les hackeurs fous qui faute de pouvoir disposer d'une force de frappe commercial et d'un labo de recherche avec tous pleins de monde payés rien que pour ça, s'évertue à proposer à la communauté des environnements compatibles et libres, afin que tu n'es plus besoin de te poser les questions politico-trollesque habituelles.
[^] # Re: de l'article de linux mag
Posté par TImaniac (site web personnel) . Évalué à 4.
http://www.pcinpact.com/actu/news/Plus_de_licence_Java_pour_FreeBSD(...)
A vrai dire je comprends pas trop la réaction de Sun, c'est vraiment à l'opposé de l'opinion globale qui vise à demander à Sun plus d'ouverture. En tout cas celà confirme clairement que Sun garde une main mise sur sa plateforme.
Sur la plateforme concurrente en tout cas il n'y a aucune licence à négocier puisque c'est standardisé et normalisé.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: de l'article de linux mag
Posté par TImaniac (site web personnel) . Évalué à 3.
Tiré du site www.mono-project.com :
"The core of the .NET Framework, and what has been patented by Microsoft falls under the ECMA/ISO submission. Jim Miller at Microsoft has made a statement on the patents covering ISO/ECMA, (he is one of the inventors listed in the patent): here - http://web.archive.org/web/20030609164123/http://mailserver.di.unip(...) - .
Basically a grant is given to anyone who want to implement those components for free and for any purpose.
The controversial elements are the ASP.NET, ADO.NET and Windows.Forms subsets. Those are convenient for people who need full compatibility with the Windows platform, but are not required for the open source Mono platform, nor integration with today's Mono's rich support of Linux."
Pour résumer, tu peux très bien développer avec Mono sans aucun problème.
Au fait n'oublies pas que d'un point de vue juridique, quelque soit le langage/techno que tu utilises, tu y trouvera toujours quelque chose de breveté, en premier lieu dans le noyau Linux, dans les libs, etc. Dans tous les cas les brevets ça pu, et ça pu pas plus dans Mono que dans autre chose.
[^] # Re: de l'article de linux mag
Posté par Fabien Penso (site web personnel, Mastodon) . Évalué à 5.
De ce que j'en ai vu, je ne comprends pas la politique de Sun sur Java, et à mon avis ils continuent à s'enfoncer. Après avoir fait un peu de c# je trouve le language intéressant conceptuellement (c'est du Java en gros) et ça marche très bien sous Linux. Je prends un truc .exe codé sous Windows (sans winform and co évidemment), je le teste sous Linux, ça marche nikel, côté performance ça roule aussi.
J'ai passé un truc de C à C#, évidemment ça me bouffe 10 fois plus de RAM (de 3Mo à 30Mo en gros) mais c'est peu finalement pour avoir un code objet propre, ne pas avoir à gérer la mémoire (beaucoup de bugs en moins) et avoir des performances décentes. Finalement quand je code je veux faire un truc qui marche, et en 2005 je veux être plus efficace sur mes développements, pouvoir utiliser rapidement des composants téléchargés ailleurs pour ne pas avoir à les réimplémenter. Les languages types c# apportent ça.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.