J'essaie d'obtenir NDepend pour identifier des méthodes longues en utilisant une version modifiée de la requête standard "Méthodes trop grandes". Je ne veux pas signaler de longues méthodes sur lesquelles les développeurs ont peu de contrôle, donc je filtre le code généré en utilisant l'attribut DebuggerNonUserCode
et InitializeComponent()
.Comment faire pour limiter la requête de méthodes NDepend sur l'attribut de type
Malheureusement, je reçois encore quelques faux positifs car les méthodes dans les types générés sont également signalées. Le problème est que même si le type lui-même a l'attribut DebuggerNonUserCode
, les méthodes ne le font pas, elles sont donc incluses dans la sortie malgré le fait qu'elles sont générées. Je cherche quelque chose comme une jointure entre les types et les méthodes: Donnez-moi tous les types qui n'ont pas l'attribut DebuggerNonUserCode
et exécutez la requête sur ceux-ci, mais je ne peux pas comprendre comment exprimer cela en CQL.
Pour certains des assemblages, je peux simplement filtrer sur le nom complet, mais malheureusement certains de nos assemblages mélangent les types créés et générés par le développeur. Malheureusement, le IsGeneratedByCompiler
ne peut pas être utilisé dans ce cas.
Ma requête
WARN IF Count > 0 IN SELECT METHODS WHERE
NbLinesOfCode > 30 AND
!HasAttribute "System.Diagnostics.DebuggerNonUserCodeAttribute" AND
!NameIs "InitializeComponent()"
ORDER BY NbLinesOfCode DESC
Je n'ai pas trouvé de moyen de joindre des méthodes et de taper des informations et même les notes de publication de V3 ne le mentionnent pas. – Timores
Avez-vous essayé l'attribut de méthode IsGeneratedByCompiler? – Timores
@Timores: Exactement, je voudrais pouvoir faire une jointure entre les deux. Je n'ai pas regardé IsGeneratedByCompiler. De la documentation, il ne semble pas faire l'affaire. mais je vais quand même essayer et mettre à jour la question. –