पृष्ठभूमि: जिस कोड-बेस पर मैं काम कर रहा हूं वह काफी बड़ा है और भारी रूप से जोर देता है। एक व्यक्तिगत assert (एक फ़ाइल और लाइन संख्या) से जुड़े परीक्षण में पाया गया मुद्दों की एक बड़ी संख्या। अगर कोई स्रोत कोड संशोधित करता है, हालांकि, जोर से जुड़े लाइन नंबर बदल सकते हैं और इसे फिर से चालू करने पर ट्रैक करना मुश्किल हो जाएगा।अद्वितीय आईडी के साथ आवेषण कैसे संबद्ध करें?
उदाहरण: परीक्षण के दौरान, टेस्टर्स मुख्य.cpp: 1808 पर कई आवेषणों का सामना करते हैं। इस जोर के खिलाफ हमारे दोष ट्रैकिंग सिस्टम में एक बग लॉग है। अगले दिन कोई main.cpp को संशोधित करता है। जब परीक्षक अपने परीक्षण फिर से निष्पादित करते हैं, वही जोर अभी भी होता है लेकिन अब यह मुख्य.cpp: 17 9 0 पर होने की सूचना दी गई है। इसलिए यह निर्धारित करना मुश्किल है कि क्या यह स्रोत कोड को देखे बिना पहले किए गए आवेषण का एक नया आश्वासन या पुन: प्राप्ति है।
प्रश्न: Is प्रत्येक व्यक्ति ज़ोर() एक अनन्य आईडी से, कि बजाय लाइन संख्या पर निर्भर रहने के कोड में परिवर्तन के पार बना रहेगा, संबद्ध करने के लिए संभव है? मैं खुद को एक समाधान के बारे में सोचने में सक्षम नहीं था। मुझे उम्मीद है कि मेरे से ज्यादा स्मार्ट कुछ विचार होगा। यहाँ मैं कैसे सोच रहा हूँ एक समाधान कैसा व्यवहार करेंगे है:
#include <iostream>
#include <string>
#include <assert.h>
using namespace std;
//Can ASSERT to redefined to generate a UID?
#define ASSERT assert
void main(void)
{
std::string name;
int age;
std::cin >> name;
ASSERT(name.length() < 10); //Generate a UID if assert fails(ie 0001)
std::cin >> age;
ASSERT(age < 100); //Generate a UID if assert fails(ie 0002)
}
के बाद कुछ कोड में परिवर्तन
#include <iostream>
#include <string>
#include <assert.h>
using namespace std;
#define ASSERT assert
void main(void)
{
std::string name;
int age;
int height;
std::cin >> height;
ASSERT(height < 10); //Generate a UID if assert fails(ie 0003)
std::cin >> name;
ASSERT(name.length() < 10); //Generate a UID if assert fails(ie 0001)
std::cin >> age;
ASSERT(age < 100); //Generate a UID if assert fails(ie 0002)
}
ASSERT के पाठ माना जाता है "unqiue", इस तरह है कि अपने दोष प्रणाली है कि देखो सकता है? निश्चित रूप से सही नहीं है। शायद अगर फंक्शन नाम के साथ मिलकर यह काफी अच्छा हो जाएगा? – JaredC
यदि संभव हो, तो अपने एससीएम उपकरण से संशोधन संख्या या हैश जोड़ें। यह अपने निर्माण प्रणाली के साथ एकीकरण की आवश्यकता हो सकती है, और यह लाइन ट्रैक नहीं करता है, लेकिन इसका मतलब यह है कि आप एक ही संस्करण की जाँच कर सकते हैं जब एक दोष की जांच। – Useless
एएसएसईआरटी का प्रयोग न करें। अपनी खुद की ज़ोर मैक्रो उस फ़ाइल का शुरू से ही मायने रखता है और उस विशेष मॉड्यूल, या जो केवल एक यूआईडी parm स्वीकार करता है करने के लिए आवंटित एक मूल्य में कहते हैं लिखें। –