[FR] Champs “Public const”: comment les trouver avec ndepend

Comme on l’a vu précedemment il faut éviter d’avoir des champs const visibles à l’extérieur d’une assembly. Comme le problème est assez subtil, cela peut arriver à tout le monde. Une constante “internal” peut très vite se retrouver publique lors d’un refactoring. Alors comment les retrouver? Ma réponse la plus rapide est NDepend.

Premièrement, il suffit d’ouvrir, puis de créer un nouveau projet et de cliquer sur “Add Assemblies of VS Solutions”:

image ;

C’est tout bète, mais ultra pratique: NDepend affiche les solutions ouvertes récemment dans visual studio (toutes versions confondues).

Une fois la solution ouverte j’ajoute une nouvelle requète cqlinq:

// < ;Name>;Public const fields< ;/Name>;
warnif count >; 0 ;from f in JustMyCode.Fields ; ; where
f.IsLiteral && f.IsPubliclyVisible
select f

Et j’obtiens ma réponse:

image

@+

2 thoughts on “[FR] Champs “Public const”: comment les trouver avec ndepend

  1. Et hop, ca devient une règle par défaut pour la prochaine version 🙂
    —————-

    // Avoid publicly visible constant field

    // Match constant fields which are visible outside their parent assembly.
    // Such field, if used outside the parent assembly,
    // will have its constant value hard-coded into the other assembly.
    // Changing the field’s value requires that all assemblies
    // that use the field to be recompiled.
    // Declaring the field as static readonly instead, allows the value
    // to be changed without the need to recompile client assemblies.

    warnif count > 0
    from f in Application.Fields
    where f.IsLiteral && f.IsPubliclyVisible
    select f

Leave a Reply

Your email address will not be published.