मेरी टीम पर प्रोग्रामर कभी-कभी एक लेनदेन खोलते हैं और स्कोप शामिल करना भूल जाते हैं। पूर्ण() कथन (नीचे कोड ब्लॉक देखें)। के तरीकों पर कोई भी विचार या तोसी # - मैं गायब स्कोप के लिए कैसे जांच करूं। पूर्ण() कथन?
(1) scope.Complete लापता के लिए हमारे समाधान() बयान, या
(2) दृश्य स्टूडियो पर प्रकाश डाला या 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)।
कोई भी विचार? मैं अन्य प्लगइन्स या टूल्स का उपयोग करने के लिए भी खुला हूं।
धन्यवाद,
बेन
वे अपने कोड का परीक्षण नहीं करते हैं? – Magnus
मैंने इसे परीक्षण के पहले पहले देखा है। प्रतिबिंब के माध्यम से आप यह निर्धारित कर सकते हैं कि किसी उदाहरण पर विधि कहा जाता है या नहीं। यदि ऐसा नहीं है तो परीक्षण विफल रहता है। –
मुझे एनडेंडेंस के साथ लगता है कि आप विधियों की तलाश करने के लिए एक नियम स्थापित कर सकते हैं जहां 'ट्रांज़ेक्शनस्कोप' सीटीओ उपयोग की संख्या 'पूर्ण' उपयोगों की संख्या से कम थी। – AakashM