डिपेंडेंसी ग्राफ़ की समीक्षा करना

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

सक्सेसफ़ुल बिल्ड में, सभी डिपेंडेंसी को BUILD फ़ाइल में साफ़ तौर पर बताया गया होता है. Bazel, उन स्टेटमेंट का इस्तेमाल करके प्रोजेक्ट का डिपेंडेंसी ग्राफ़ बनाता है. इससे इंक्रीमेंटल बिल्ड को सटीक तरीके से बनाया जा सकता है.

सैंपल प्रोजेक्ट की डिपेंडेंसी देखने के लिए, डिपेंडेंसी ग्राफ़ का टेक्स्ट जनरेट किया जा सकता है. इसके लिए, वर्कस्पेस के रूट पर यह निर्देश चलाएं:

bazel query --notool_deps --noimplicit_deps "deps(//main:hello-world)" \
  --output graph

ऊपर दी गई कमांड, Bazel को टारगेट //main:hello-world के लिए सभी डिपेंडेंसी (होस्ट और इंप्लिसिट डिपेंडेंसी को छोड़कर) ढूंढने और आउटपुट को ग्राफ़ के तौर पर फ़ॉर्मैट करने के लिए कहती है.

इसके बाद, टेक्स्ट को GraphViz में चिपकाएं.

Ubuntu पर, GraphViz और xdot Dot Viewer इंस्टॉल करके, ग्राफ़ को स्थानीय तौर पर देखा जा सकता है:

sudo apt update && sudo apt install graphviz xdot

इसके बाद, ऊपर दिए गए टेक्स्ट आउटपुट को सीधे xdot में पाइप करके, ग्राफ़ जनरेट किया जा सकता है और देखा जा सकता है:

xdot <(bazel query --notool_deps --noimplicit_deps "deps(//main:hello-world)" \
  --output graph)

जैसा कि आप देख सकते हैं, सैंपल प्रोजेक्ट के पहले चरण में एक ही टारगेट है. यह एक ही सोर्स फ़ाइल बनाता है और इसमें कोई अतिरिक्त डिपेंडेंसी नहीं होती:

&#39;hello-world&#39; के लिए डिपेंडेंसी ग्राफ़

पहली इमेज. hello-world के लिए डिपेंडेंसी ग्राफ़ में, एक सोर्स फ़ाइल के साथ एक टारगेट दिखाया गया है.

वर्कस्पेस सेट अप करने, प्रोजेक्ट बनाने, और उसकी डिपेंडेंसी की जांच करने के बाद, कुछ और जटिलताएं जोड़ी जा सकती हैं.