मुख्य कंटेंट तक स्किप करें

प्रभाव विश्लेषण

कोड परिवर्तन करने से पहले उनके प्रभाव को समझें।

प्रभाव विश्लेषण क्या है?

प्रभाव विश्लेषण इस प्रश्न का उत्तर देता है: "यदि मैं इस फ़ाइल को बदलता हूं, तो और क्या प्रभावित होगा?"

यह आपकी मदद करता है:

  • परिवर्तनों की अधिक सावधानी से योजना बनाना
  • आवश्यक परीक्षणों की पहचान करना
  • अप्रत्याशित त्रुटियों से बचना
  • परिवर्तनों के लिए प्रयास का अनुमान लगाना

प्रभाव विश्लेषण चलाना

वेब इंटरफेस

  1. एक प्रोजेक्ट चुनें
  2. विज़ुअलाइज़ेशन में एक फ़ाइल पर क्लिक करें
  3. प्रभाव विश्लेषण पर क्लिक करें

CLI

> /analyze src/services/user.ts

API

curl -X POST https://api.archicore.io/api/v1/projects/:id/analyze \
-H "Authorization: Bearer आपकी_API_KEY" \
-d '{"path": "src/services/user.ts"}'

परिणाम समझना

src/services/user.ts के लिए प्रभाव विश्लेषण

╭─────────────────────────────────────────╮
│ प्रत्यक्ष निर्भरताएं (5) │
├─────────────────────────────────────────┤
│ → src/utils/crypto.ts │
│ → src/db/models/user.ts │
│ → src/config/auth.ts │
│ → src/types/user.ts │
│ → src/utils/validation.ts │
╰─────────────────────────────────────────╯

╭─────────────────────────────────────────╮
│ आश्रित - प्रभावित होंगे (8) │
├─────────────────────────────────────────┤
│ ← src/controllers/auth.ts │
│ ← src/controllers/profile.ts │
│ ← src/controllers/admin.ts │
│ ← src/middleware/auth.ts │
│ ← src/services/session.ts │
│ ← src/api/routes/users.ts │
│ ← tests/user.test.ts │
│ ← tests/auth.test.ts │
╰─────────────────────────────────────────╯

जोखिम स्तर: मध्यम
प्रभावित परीक्षण: 2

प्रभाव स्तर

स्तरविवरणकार्रवाई
कमकम आश्रित, अलग परिवर्तनमानक समीक्षा के साथ आगे बढ़ें
मध्यमकई आश्रित, मध्यम जोखिमगहन परीक्षण की सिफारिश
उच्चबहुत आश्रित, मूल मॉड्यूलव्यापक परीक्षण, चरणबद्ध रोलआउट पर विचार करें
गंभीरमहत्वपूर्ण पथ प्रभावितअतिरिक्त समीक्षा, फीचर फ्लैग की सिफारिश

परिवर्तन सिमुलेट करना

प्रस्तावित परिवर्तन के प्रभाव का पूर्वावलोकन:

> /simulate
अपना परिवर्तन वर्णन करें: UserService.getUser() में नया पैरामीटर जोड़ना

सिमुलेशन परिणाम:

अपडेट की आवश्यकता वाली फ़ाइलें:
1. src/controllers/auth.ts:34 - getUser() कॉल करता है
2. src/controllers/profile.ts:12 - getUser() कॉल करता है
3. src/services/session.ts:45 - getUser() कॉल करता है

अपडेट की आवश्यकता वाले परीक्षण:
1. tests/user.test.ts - 5 टेस्ट केस getUser() कॉल करते हैं
2. tests/auth.test.ts - 3 टेस्ट केस getUser() कॉल करते हैं

अनुमानित प्रयास: मध्यम (8 फ़ाइलें, 15 कॉल साइट्स)

सर्वोत्तम प्रथाएं

परिवर्तन करने से पहले

  1. प्रभाव विश्लेषण चलाएं उन फ़ाइलों पर जिन्हें आप संशोधित करने की योजना बनाते हैं
  2. निर्भरता श्रृंखला की समीक्षा करें - प्रभाव त्रिज्या समझें
  3. प्रभावित परीक्षणों की पहचान करें - सुनिश्चित करें कि वे अपडेट हों
  4. चक्रीय निर्भरताओं की जांच करें - वे प्रभाव को बढ़ाती हैं

प्रभाव कम करना

  1. इंटरफेस का उपयोग करें - अमूर्तता पर निर्भर रहें
  2. SOLID सिद्धांत लागू करें - एकल जिम्मेदारी प्रभाव सीमित करती है
  3. मॉड्यूल को अलग करें - प्रत्यक्ष निर्भरताएं कम करें
  4. फेसेड लेयर लिखें - कार्यान्वयन विवरण छुपाएं

उदाहरण: सुरक्षित रीफैक्टरिंग

// पहले: प्रत्यक्ष निर्भरता
// User बदलने से सभी उपभोक्ता प्रभावित होते हैं
class UserController {
constructor(private userService: UserService) {}
}

// बाद में: इंटरफेस निर्भरता
// UserService कार्यान्वयन बदलने से उपभोक्ता प्रभावित नहीं होते
interface IUserService {
getUser(id: string): Promise<User>;
}

class UserController {
constructor(private userService: IUserService) {}
}

CI/CD एकीकरण

अपनी पाइपलाइन में प्रभाव विश्लेषण जोड़ें:

# .gitlab-ci.yml
impact-analysis:
script:
- archicore analyze --changed-files
- if [ $IMPACT_LEVEL == "critical" ]; then
echo "गंभीर प्रभाव पाया गया - अतिरिक्त समीक्षा आवश्यक";
exit 1;
fi