C#. Как проверить наличие отсутствующих операторов scope.Complete()?

Программисты в моей команде иногда открывают транзакцию и забывают включить оператор scope.Complete() (см. блок кода ниже). Любые идеи о том, как

(1) найти наше решение на предмет отсутствующих операторов scope.Complete(), или

(2) сделать так, чтобы Visual Studio автоматически выделяла или выдавала предупреждение об отсутствующих операторах scope.Complete()?

Вот строчка, которую мы пропустили:

 using(TransactionScope scope = new TransactionScope())
 {
      /* Perform transactional work here */
      scope.Complete(); <-- we forget this line
      /* Optionally, include a return statement */
 }

Что я пробовал
 
Я попытался использовать для этой цели пользовательский шаблон ReSharper, но безуспешно. В идеале я бы искал что-то вроде:

using(TransactionScope scope = new TransactionScope())
{
    $statements1$
    [^(scope.Complete();)]
    $statements2$
}

Однако ReSharper принимает регулярные выражения только для идентификаторов, а не для утверждений, так что это не работает ( http://www.jetbrains.com/resharper/webhelp/ Reference__Search_with_Pattern.html).

Есть идеи? Я также открыт для использования других плагинов или инструментов.

Спасибо,
Ben

5
задан AakashM 18 June 2012 в 16:35
поделиться