Domanda

Cosa codice statico regola il controllo definibile Vuoi vedere aggiunto a FxCop e / o Gendarme?

Perché fare che si desidera vedere la regola ha aggiunto, per esempio quali sono i vantaggi etc?

Come potrebbe essere implementato la regola?

È stato utile?

Soluzione

Personalmente, preferirei vedere che non utilizzano implementazioni IDisposable nelle dichiarazioni using.

Quindi, se si ha il codice come questo:

var fs = new FileStream(...);

// Other code.

fs.Dispose();

E 'ti direbbe di usarlo in un comunicato using.

Il vantaggio sarebbe che si sarebbe avvisare i casi si potrebbe non essere a conoscenza di dove gli oggetti che devono essere smaltiti non vengono smaltiti in modo tempestivo.

Tuttavia, ci sono abbastanza volte in cui si tratta di una situazione valida per non dichiara le implementazioni IDisposable in un'istruzione using per una regola come questa per diventare un dolore molto rapidamente. Molto spesso, questo caso sta prendendo un'implementazione IDisposable come parametro a un metodo.

Quello che faccio non media è usi delle classi in cui i dettagli di implementazione eliminano la necessità di chiamare Dispose, (per esempio MemoryStream o DataContext); quelli attuare IDisposable e dovrebbe sempre avere Dispose chiamato su di loro, a prescindere dalla applicazione dettagli, in quanto è sempre meglio codice contro il contratto a vista.

Altri suggerimenti

Mi piacerebbe definire e attuare le mie regole molto rapidamente. Ho provato una volta per FxCop, ma ho trovato l'API di non essere molto chiaro - e non c'era troppa documentazione intorno. Ho usato FxCop 1,36, forse le cose sono cambiate ...

Così mi piacerebbe vedere FxCop avere una chiara e facile da usare l'interfaccia ... che sarebbe grande:)

Le regole che ho cercato di implementare erano:

  • DocumentInternalMethods
  • DocumentInternalTypes
  • ...

In sostanza ho voluto rispettare xml-comments sui membri non pubblici.

Mi piacerebbe molto l'analisi binario di essere abbastanza intelligente da riconoscere la possibilità di un'interfaccia.

Se si potesse determinare di avvicinarsi tipi definiti e dei loro membri, se ci sono comuni che potrebbero essere estrapolati in un'interfaccia.

Chiaramente, questo non dovrebbe essere più di un avvertimento, dato che è a volte era interessata a esplicitamente di non utilizzare un'interfaccia.

Al momento pensando a questo, anche io vorrei vedere l'analisi binario di essere abbastanza intelligente per controllare possibile downgrade di modificatori di accesso.

Non dovrebbe essere quello difficile determinare se una classe, proprietà o un metodo potrebbe essere più limitato.

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