Programiści w moim zespole czasami otwierają transakcję i zapominają dołączyć instrukcję scope.Complete() (patrz blok kodu poniżej). Wszelkie pomysły na temat sposobów alboC# - Jak sprawdzić brakujące instrukcje scope.Complete()?
(1) przeszukać nasze rozwiązanie brakuje scope.Complete() oświadczenia lub
(2) mają Visual Studio automatycznie podświetlenie lub podnieść ostrzeżenie dla brakujących scope.Complete() sprawozdania ?
Oto linia tęsknimy:
using(TransactionScope scope = new TransactionScope())
{
/* Perform transactional work here */
scope.Complete(); <-- we forget this line
/* Optionally, include a return statement */
}
Co Próbowałem
Próbowałem, używając wzorca ReSharper zwyczaj ten cel, bez powodzenia. Idealnie chciałbym szukać czegoś podobnego:
using(TransactionScope scope = new TransactionScope())
{
$statements1$
[^(scope.Complete();)]
$statements2$
}
Jednak ReSharper akceptuje tylko wyrażeń regularnych dla identyfikatorów, a nie wypowiedzi, więc nie wydaje się działać (http://www.jetbrains.com/resharper/webhelp/Reference__Search_with_Pattern.html).
Wszelkie pomysły? Jestem również otwarty na używanie innych wtyczek lub narzędzi.
Dzięki,
Ben
Nie testują swojego kodu? – Magnus
Widziałem to już wcześniej z testem. Poprzez odbicie można określić, czy metoda jest wywoływana w instancji. Jeśli tak nie jest, test kończy się niepowodzeniem. –
Liczę z NDependem, że można ustawić regułę, aby szukać metod, w których liczba zastosowań ctor "TransactionScope" była mniejsza niż liczba zastosowań "Complete". – AakashM