Программисты в моей команде иногда открывают транзакцию и забывают включить оператор 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).
Есть идеи? Я также открыт для использования других плагинов или инструментов.
Спасибо,
Бен