Quelqu'un connaît-il un outil que je pourrais utiliser avec une application C# pour trouver des violations possibles de la loi de Demeter? Je sais que cela donnerait beaucoup de faux positifs, mais je pense que cela pourrait encore être utile. Surtout au début du processus de conception.Loi de Demeter violation de l'outil de recherche?
Répondre
Si vous recherchez simplement something.somethingelse.violation
, vous pouvez utiliser Visual Studio.
Dans la boîte de dialogue de recherche, cochez la case en bas de "Utiliser" et sélectionnez "Expressions régulières".
Pas très robuste, mais vous pouvez utiliser <[:a_]+\.([:a_]+\.)+[:a_]+
pour trouver le modèle ci-dessus.
Un meilleur outil serait grep
ou similaire sur le répertoire de solution, de sorte que vous pouvez utiliser les options de regex plus puissants comme lookbehind négatif, ce qui vous permettrait d'exclure des choses comme using
directives et namespace
déclarations.
Vous pourriez probablement très rapidement écrire une application .NET qui récursivité un répertoire donné et recherche .cs et/ou fichiers .vb pour même, en utilisant .NET Regex, qui a lookarounds, mais bien sûr L'avantage d'utiliser VS est que vous restez dans l'éditeur de code source.
Hmm, je viens de trouver 5 'points' dans mon programme ... selon [six degrés de séparation] (https://en.wikipedia.org/wiki/Six_degrees_of_separation), je pense que cela signifie qu'il peut accéder à n'importe quoi dans mon programme droit? : P –
- 1. La loi de Demeter ne s'applique-t-elle qu'aux méthodes?
- 2. Java: distribution de la loi de puissance
- 3. Loi de Déméter et modèle DAO
- 4. Exception de violation d'accès
- 5. Décodez G711 (loi PCM)
- 6. Python: Comment générer un graphique de loi de puissance
- 7. Comment déboguer un violation de violation d'accès non déterministe?
- 8. emplacement d'écriture de violation d'accès
- 9. TNetSharingManager problème de violation d'accès
- 10. Erreur de violation d'accès GDIPlus.dll
- 11. Violation de la contrainte d'intégrité
- 12. Violation de sandbox de sécurité sur Nginx
- 13. Violation d'accès lors de l'utilisation de strcpy?
- 14. Rails flash violation de hachage de MVC?
- 15. C#: Gestion de "violation de protocole" WebClient
- 16. Violation de contrainte de hiérarchie - salesforce.com
- 17. contrainte de violation de clé primaire
- 18. Comment échapper à la loi de sécurité inter-domaines Silverlight?
- 19. Comment implémenter la loi de Benford dans MATLAB
- 20. Violation de sécurité dans c: \ ProgramData?
- 21. Violation de la contrainte PRIMARY KEY 'PK_
- 22. Violation de concurrence dans l'exemple NHibernate (C#)
- 23. C++ msvcp90d.dll Exception de violation d'accès
- 24. TextField et de sécurité Sandbox Violation
- 25. Erreur: violation de threads croisés sur rb_gc()
- 26. Violation d'accès du membre de l'objet pointeur
- 27. violation d'accès emplacement de lecture 0x00184000
- 28. Dossier d'ouverture sans loi à échapper
- 29. Générateur de nombres aléatoires qui produit une distribution de loi de puissance?
- 30. Flex célèbre erreur de violation de sécurité 2048, domaine croisé
définition wiki de la loi de Demeter: http://en.wikipedia.org/wiki/Law_of_Demeter – Fosco
* La loi de Demeter * devrait être * La règle de base de Demeter * imho. . . –
Je ne connais aucun de ces outils, mais une bonne approche de .NET serait de le baser sur la réflexion et l'IL afin qu'il puisse fonctionner pour n'importe quel langage .NET. – TechNeilogy