2013-05-09 2 views
9

Ho appena scaricato la versione di prova di Resharper 7.1. Il mio obiettivo è quello di applicare una regola in cui il nostro registratore personalizzato deve essere utilizzato su tutti i blocchi catch all'interno del nostro code-base C#. Esempio;Schema di controllo personalizzato per registrazione blocco catch

try{ 
    // Any amount of code 
} 
catch(Exception e){ 

} 

dovrebbe essere illegale, tuttavia:

try{ 
    // Any amount of code 
} 
catch(Exception e){ 
    Logger.LogException(e.Message, e); 
} 

è perfettamente accettabile. A tal fine, ho il seguente schema impostato per rilevare e ri-fattore.

Ricerca modello:

try{ 
    $anystatements$ 
} 
catch($exceptiontype$ $exceptionarg$){ 
    $anycatchstatements$ 
} 

Sostituire modello:

try{ 
    $anystatements$ 
} 
catch($exceptiontype$ $exceptionarg$){ 
    Logger.LogException($exceptionarg$.Message, $exceptionarg$) 
    $anycatchstatements$ 
} 

ReSharper rileva gli odori bene, ma sta trattando il modello sostituire come odore in sé come la linea aggiunto per la registrazione è in corso abbinato al segnaposto $anycatchstatement$.

Come si può definire un segnaposto per descrivere "corrisponde a qualsiasi numero di istruzioni nel blocco catch che NON sono chiamate al registratore automatico e aggiunge semplicemente una chiamata al registratore"?

+1

Questo ti sembra male: http://stackoverflow.com/questions/11657922/resharper-custom-pattern-replacement-with-negative-equality-expression Penso che sia effettivamente un dupe, in una moda rotonda. – spender

+0

Ah dannazione! Ho passato così tanto tempo nelle ricerche, non ho pensato all'uguaglianza negativa! Detto questo, non c'è una risposta gradevole alla mia soluzione su quel thread se non "non farlo". – Finch

+2

Archivia una richiesta di funzionalità qui: http://youtrack.jetbrains.com/issues/RSRP - Il team di ReSharper di solito risolve molto rapidamente problemi importanti. –

risposta

1

Unfortunatley no, sto usando Resharper 8 EAP (http://confluence.jetbrains.com/display/ReSharper/ReSharper+8+EAP) e non ha ancora tale opzione.

In particolare, è consigliabile consultare i Contratti di licenza, o http://www.postsharp.net/ o qualcosa di simile.

Anche Vladimir Reshetnikov aveva ragione: la loro squadra può aiutarti molto. È possibile contattare facilmente con loro tramite e-mail o modulo web. Hanno degli sviluppatori molto buoni e l'azienda consente comunicazioni dirette con i propri clienti. Sono dalla Russia :)