私のチームのプログラマーは、トランザクションを開いて scope.Complete() ステートメントを含めるのを忘れることがあります (以下のコード ブロックを参照)。いずれかへの方法に関するアイデア
(1) scope.Complete() ステートメントが欠落しているソリューションを検索する、または
(2)scope.Complete()ステートメントの欠落をVisual Studioに自動的に強調表示または警告させますか?
見逃している行は次のとおりです。
using(TransactionScope scope = new TransactionScope())
{
/* Perform transactional work here */
scope.Complete(); <-- we forget this line
/* Optionally, include a return statement */
}
私が試し
たこと この目的のために ReSharper Custom Pattern を使用しようとしましたが、うまくいきませんでした。理想的には、次のようなものを検索します。
using(TransactionScope scope = new TransactionScope())
{
$statements1$
[^(scope.Complete();)]
$statements2$
}
ただし、ReSharper はステートメントではなく識別子の正規表現のみを受け入れるため、これは機能していないようです ( http://www.jetbrains.com/resharper/webhelp/Reference__Search_with_Pattern.html )。
何か案は?他のプラグインやツールの使用にもオープンです。
ありがとう、
ベン