इसे छोड़कर कंटेंट पर जाएं

Spectral लिंटिंग नियम

यह प्रोजेक्ट OAS3 लिंटिंग के लिए Spectral का उपयोग करता है, जिसमें दो-कॉन्फ़िग आर्किटेक्चर है जो CI/बाहरी टूलिंग को पाइपलाइन की कस्टम लॉजिक से अलग करता है।

दो-कॉन्फ़िग आर्किटेक्चर

Section titled “दो-कॉन्फ़िग आर्किटेक्चर”

.spectral.yaml — बेस कॉन्फ़िग

Section titled “.spectral.yaml — बेस कॉन्फ़िग”

GitHub Super-Linter और किसी भी बाहरी CI टूल द्वारा उपयोग किया जाता है। spectral:oas (बिल्ट-इन OAS रूलसेट) को एक्सटेंड करता है। इसमें कोई कस्टम फ़ंक्शन नहीं है — यह इसे उन टूल्स के साथ संगत रखता है जो spectral/functions/ डायरेक्टरी तक पहुँच के बिना Spectral चलाते हैं।

extends:
- "spectral:oas"
rules:
path-params: "off"
operation-tags: warn
oas3-api-servers: warn
info-contact: warn
oas3-unused-component: warn
operation-operationId-unique: error
oas3-valid-schema-example: error
no-script-tags-in-markdown: warn
operation-description: info
info-description: info

spectral-pipeline.yaml — पाइपलाइन कॉन्फ़िग

Section titled “spectral-pipeline.yaml — पाइपलाइन कॉन्फ़िग”

scripts/spectral_lint.py (discover और gate दोनों मोड) द्वारा उपयोग किया जाता है। बेस कॉन्फ़िग को एक्सटेंड करता है और कस्टम f5-path-params फ़ंक्शन जोड़ता है:

extends:
- "./.spectral.yaml"
functionsDir: "./spectral/functions"
functions:
- f5-path-params
rules:
f5-path-params:
description: "Path parameters must be declared and used"
message: "{{error}}"
severity: error
given: "$.paths[*]"
then:
function: f5-path-params

path-params क्यों अक्षम है

Section titled “path-params क्यों अक्षम है”

Spectral का बिल्ट-इन path-params नियम F5 XC API को गलत तरीके से फ़्लैग करता है जो {metadata.namespace} और {metadata.name} जैसे डॉटेड पैरामीटर नामों का उपयोग करते हैं। बिल्ट-इन नियम पैरामीटर नामों में डॉट्स को पार्स नहीं करता, इसलिए यह उन्हें अघोषित के रूप में रिपोर्ट करता है।

कस्टम f5-path-params फ़ंक्शन (spectral/functions/f5-path-params.js) पूर्ण {placeholder} सामग्री को घोषित पैरामीटर नामों के विरुद्ध मिलान करके डॉटेड नामों को सही ढंग से संभालता है। यह पाथ-लेवल और ऑपरेशन-लेवल दोनों पैरामीटर की जाँच करता है, और दोनों दिशाओं में त्रुटियाँ रिपोर्ट करता है:

  • URL पाथ में एक प्लेसहोल्डर जिसका कोई मेल खाता पैरामीटर घोषणा नहीं है
  • एक घोषित पाथ पैरामीटर जो URL पाथ में दिखाई नहीं देता

स्वत: सुधार योग्य नियम

Section titled “स्वत: सुधार योग्य नियम”

जब उल्लंघन पाए जाते हैं तो इन नियमों को रिकॉन्साइलर द्वारा स्वचालित रूप से ठीक किया जाता है। प्रत्येक सुधार के विवरण के लिए लागू किए गए सुधार देखें।

नियमगंभीरतासुधार विधिविवरण
oas3-api-serverswarn_add_serversस्पेक में servers ब्लॉक होना चाहिए
info-contactwarn_add_contactinfo में contact शामिल होना चाहिए
operation-tagswarn_add_tagsप्रत्येक ऑपरेशन में कम से कम एक टैग होना चाहिए
oas3-unused-componentwarn_remove_unused_componentकोई अनसंदर्भित कम्पोनेंट स्कीमा नहीं
operation-operationId-uniqueerror_deduplicate_operation_idसभी operationId अद्वितीय होने चाहिए
oas3-valid-schema-exampleerror_fix_schema_exampleउदाहरण/डिफ़ॉल्ट अपने स्कीमा से मेल खाने चाहिए
no-script-tags-in-markdownwarn_strip_script_tagsविवरणों में <script> टैग नहीं होने चाहिए
f5-path-paramserrorपाथ पैरामीटर घोषित और उपयोग किए जाने चाहिए

सुधार अयोग्य नियम

Section titled “सुधार अयोग्य नियम”

इन नियमों को info गंभीरता में डाउनग्रेड किया गया है क्योंकि इन्हें सार्थक रूप से स्वचालित सुधार नहीं किया जा सकता:

नियमगंभीरताविवरण
operation-descriptioninfoऑपरेशन में विवरण होना चाहिए
info-descriptioninfoAPI जानकारी में विवरण होना चाहिए

पाइपलाइन एकीकरण

Section titled “पाइपलाइन एकीकरण”

Spectral एडाप्टर (scripts/spectral_lint.py) दो मोड में चलता है:

डिस्कवर मोड (रिकॉन्साइल से पहले)

Section titled “डिस्कवर मोड (रिकॉन्साइल से पहले)”
Terminal window
make spectral-lint
# Equivalent to: python -m scripts.spectral_lint --mode discover

specs/original/ को स्कैन करता है और reports/spectral_report.json लिखता है। रिकॉन्साइलर इस रिपोर्ट को वैलिडेशन रिपोर्ट के साथ उपयोग करता है।

गेट मोड (रिकॉन्साइल के बाद)

Section titled “गेट मोड (रिकॉन्साइल के बाद)”
Terminal window
make spectral-gate
# Equivalent to: python -m scripts.spectral_lint --mode gate

release/specs/ को स्कैन करता है और reports/spectral_gate_report.json लिखता है। यदि उल्लंघन कॉन्फ़िगर की गई सीमाओं से अधिक हों तो एग्ज़िट कोड 1 लौटाता है।

Spectral उल्लंघनों को तीन उपप्रकारों के साथ Discrepancy ऑब्जेक्ट में परिवर्तित किया जाता है:

Spectral नियम श्रेणीDiscrepancyTypeउदाहरण नियम
आवश्यक तत्व गायबSPECTRAL_MISSINGoas3-api-servers, info-contact, operation-tags
अमान्य मौजूदा तत्वSPECTRAL_INVALIDoas3-valid-schema-example, no-script-tags-in-markdown
अप्रयुक्त कोडSPECTRAL_UNUSEDoas3-unused-component