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

किसी प्रोजेक्ट के सफल बिल्ड में, उसकी सभी डिपेंडेंसी, 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 के डिपेंडेंसी ग्राफ़ में, एक सोर्स फ़ाइल के साथ एक टारगेट दिखता है.

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