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"?
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
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
Archivia una richiesta di funzionalità qui: http://youtrack.jetbrains.com/issues/RSRP - Il team di ReSharper di solito risolve molto rapidamente problemi importanti. –