Domanda

Mi piacerebbe avere il controllo notturno di build per quante NotImplementedExeptions ci sono nel mio codice .NET, quindi spero di poterle rimuovere tutte prima di rilasciarle. Il mio primo pensiero è che FxCop potrebbe essere un buon strumento per farlo. Qualcuno ha una regola FxCop personalizzata per questo? Come potrei fare per crearne uno io?

È stato utile?

Soluzione

Ne ho effettivamente implementato uno e ho mostrato il codice in questa risposta .

Altri suggerimenti

Il test unitario in questo modo fallirà se più di 10 metodi creano NotImplementedException. In caso contrario, riporterà tutti i metodi che creano questa eccezione.

var throwingMethods = codebase.Methods
  .Where(m => m
         .GetInstructions()
         .Exists(i => i.Creates<NotImplementedException>()))
  .ToArray();

if (throwingMethods.Length > 10)
  CollectionAssert.IsEmpty(throwingMethods);

Dove codebase viene creato in questo modo:

var codebase = new Codebase("Assembly1.dll","Assembly2.dll");

Lo snippet utilizza Lokad.Quality.dll dalle Lokad Shared Libraries .

Ci sono tonnellate di risorse in rete su come creare la tua regola FxCop, ma poiché 'NotImplementedException' è un nome così unico, potresti semplicemente fare un conteggio della sua occorrenza nel testo dei file. Crea un ItemGroup per tutti i file .cs e quindi usa un comando DOS appropriato (come " find / c ") e ottieni il conteggio come output, tramite l'attività EXEC.

Ci sono momenti in cui dovrebbe essere lanciato un NotImplementedExeption - un esempio potrebbe essere se hai un'implementazione parziale di IBindingList .

Esistono abbondanza di risorse là fuori per creazione personalizzato regole fxCop . Tuttavia, un "trova nella soluzione" potrebbe essere un approccio adatto (supponendo che non sia necessario in una build automatizzata)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top