Code property graph
ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ, ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ (ಸಿಪಿಜಿ) ಎನ್ನುವುದು ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಂ ಪ್ರಾತಿನಿಧ್ಯವಾಗಿದ್ದು, ಇದು ವಾಕ್ಯರಚನೆಯ ರಚನೆ, ನಿಯಂತ್ರಣ ಹರಿವು ಮತ್ತು ಡೇಟಾ ಅವಲಂಬನೆಗಳನ್ನು ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ನಲ್ಲಿ ಸೆರೆಹಿಡಿಯುತ್ತದೆ. ಈ ಪರಿಕಲ್ಪನೆಯನ್ನು ಮೂಲತಃ ಸಿ ಮತ್ತು ಸಿ + + ಸಿಸ್ಟಮ್ ಕೋಡ್ನಲ್ಲಿ ಭದ್ರತಾ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಪರಿಚಯಿಸಲಾಯಿತು, ಆದರೆ ನಂತರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ಕ್ಲೌಡ್ ನಿಯೋಜನೆಗಳು ಮತ್ತು ಸ್ಮಾರ್ಟ್ ಒಪ್ಪಂದಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಬಳಸಲಾಗಿದೆ. ದುರ್ಬಲತೆಯ ಆವಿಷ್ಕಾರದ ಹೊರತಾಗಿ, ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ಗಳು ಕೋಡ್ ಕ್ಲೋನ್ ಪತ್ತೆ, ದಾಳಿ-ಮೇಲ್ಮೈ ಪತ್ತೆ, ಶೋಷಣೆ ಉತ್ಪಾದನೆ, ಕೋಡ್ ಪರೀಕ್ಷಾತ್ಮಕತೆಯನ್ನು ಅಳೆಯುವುದು ಮತ್ತು ಭದ್ರತಾ ಪ್ಯಾಚ್ಗಳ ಬ್ಯಾಕ್ಪೋರ್ಟಿಂಗ್ನಲ್ಲಿ ಅನ್ವಯಗಳನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತವೆ. ವ್ಯಾಖ್ಯಾನ ಪ್ರೋಗ್ರಾಂನ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಎಂಬುದು ಅದರ ಅಮೂರ್ತ ವಾಕ್ಯರಚನೆಯ ಮರಗಳು (ಎ. ಎಸ್. ಟಿ), ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಗ್ರಾಫ್ಗಳು (ಸಿ. ಎಫ್. ಜಿ) ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಅವಲಂಬನೆ ಗ್ರಾಫ್ಗಳನ್ನು (ಪಿ. ಡಿ. ಜಿ) ಹೇಳಿಕೆಯಲ್ಲಿ ಮತ್ತು ನೋಡ್ಗಳನ್ನು ಊಹಿಸುವ ಮೂಲಕ ಪಡೆಯುವ ಪ್ರೋಗ್ರಾಂನ ಗ್ರಾಫ್ ಪ್ರಾತಿನಿಧ್ಯವಾಗಿದೆ. ಪರಿಣಾಮವಾಗಿ ಬರುವ ಗ್ರಾಫ್ ಒಂದು ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಆಗಿದೆ, ಇದು ನಿಯೋ4ಜೆ, ಜಾನಸ್ಗ್ರಾಫ್ ಮತ್ತು ಓರಿಯಂಟ್ಡಿಬಿಗಳಂತಹ ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳ ಆಧಾರವಾಗಿರುವ ಗ್ರಾಫ್ ಮಾದರಿಯಾಗಿದೆ, ಅಲ್ಲಿ ಡೇಟಾವನ್ನು ನೋಡ್ಗಳು ಮತ್ತು ಅಂಚುಗಳಲ್ಲಿ ಕೀ-ವ್ಯಾಲ್ಯೂ ಜೋಡಿಗಳಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ಗಳನ್ನು ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಬಹುದು ಮತ್ತು ಗ್ರಾಫ್ ಕ್ವೆರಿ ಭಾಷೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಶ್ನಿಸಬಹುದು. ಉದಾಹರಣೆ ಸಿ ಪ್ರೋಗ್ರಾಂನ ಕಾರ್ಯವನ್ನು ಪರಿಗಣಿಸಿಃ ಶೂನ್ಯ ಫೂ () {ಇಂಟ್ x = ಮೂಲ (); (x <MAX) {ಇಂಟ್ y = 2 * x; ಸಿಂಕ್ (y);} ಫಂಕ್ಷನ್ನ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಅನ್ನು ಅದರ ಅಮೂರ್ತ ವಾಕ್ಯರಚನೆಯ ಮರ, ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಗ್ರಾಫ್ ಮತ್ತು ಪ್ರೋಗ್ರಾಂ ಅವಲಂಬನೆ ಗ್ರಾಫ್ ಅನ್ನು ಈ ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ಕಂಡುಬರುವಂತೆ ಹೇಳಿಕೆಗಳಲ್ಲಿ ಮತ್ತು ಮುನ್ಸೂಚನೆಗಳಲ್ಲಿ ವಿಲೀನಗೊಳಿಸುವ ಮೂಲಕ ಪಡೆಯಲಾಗುತ್ತದೆ. ಮೂಲ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಅನ್ನು ಸಿ/ಸಿ + + ಗಾಗಿ 2013 ರಲ್ಲಿ ಗೊಟ್ಟಿಂಗನ್ ವಿಶ್ವವಿದ್ಯಾಲಯದಲ್ಲಿ ಓಪನ್-ಸೋರ್ಸ್ ಕೋಡ್ ಅನಾಲಿಸಿಸ್ ಟೂಲ್ ಜೊರ್ನ್ನ ಭಾಗವಾಗಿ ಜಾರಿಗೆ ತರಲಾಯಿತು. ಈ ಮೂಲ ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಓಪನ್-ಸೋರ್ಸ್ ಜೋಯರ್ನ್ ಪ್ರಾಜೆಕ್ಟ್ನಿಂದ ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಅನೇಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಿಗೆ ಅನ್ವಯವಾಗುವ ಔಪಚಾರಿಕ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ವಿವರಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಯೋಜನೆಯು ಸಿ/ಸಿ + +, ಜಾವಾ, ಜಾವಾ ಬೈಟ್ಕೋಡ್, ಕೋಟ್ಲಿನ್, ಪೈಥಾನ್, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್, ಟೈಪ್ಸ್ಕ್ರಿಪ್ಟ್, ಎಲ್ಎಲ್ವಿಎಂ ಬಿಟ್ಕೋಡ್ ಮತ್ತು x86 ಬೈನರಿಗಳಿಗೆ (ಘಿದ್ರಾ ಡಿಸ್ಅಸೆಂಬ್ಲರ್ ಮೂಲಕ) ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಜನರೇಟರ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಪ್ಲೂಮ್ ಸಿಪಿಜಿ. 2020 ರಲ್ಲಿ ಸ್ಟೆಲ್ಲೆನ್ಬೋಷ್ ವಿಶ್ವವಿದ್ಯಾಲಯದಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ ಮತ್ತು ಅಮೆಜಾನ್ ಸೈನ್ಸ್ ಪ್ರಾಯೋಜಿಸಿದ, ಓಪನ್-ಸೋರ್ಸ್ ಪ್ಲೂಮ್ ಯೋಜನೆಯು ಜೋಯರ್ನ್ ಯೋಜನೆಯು ಒದಗಿಸಿದ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ವಿವರಣೆಯೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಜಾವಾ ಬೈಟ್ಕೋಡ್ಗಾಗಿ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಈ ಎರಡು ಯೋಜನೆಗಳು 2021ರಲ್ಲಿ ವಿಲೀನಗೊಂಡವು. ಫ್ರೌನ್ಹೊಫರ್ ಎಐಎಸ್ಇಸಿ ಸಿಪಿಜಿ. ಇದು ಸಿ/ಸಿ + +, ಜಾವಾ, ಗೋಲಾಂಗ್ ಮತ್ತು ಪೈಥಾನ್ಗಳಿಗೆ ಓಪನ್-ಸೋರ್ಸ್ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಜನರೇಟರ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಆದರೂ ಔಪಚಾರಿಕ ಸ್ಕೀಮಾ ವಿವರಣೆಯಿಲ್ಲ. ಇದು ಕ್ಲೌಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಅನ್ನು ಸಹ ಒದಗಿಸುತ್ತದೆ, ಇದು ಕ್ಲೌಡ್ ನಿಯೋಜನೆಗಳ ವಿವರಗಳನ್ನು ರೂಪಿಸುವ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಪರಿಕಲ್ಪನೆಯ ವಿಸ್ತರಣೆಯಾಗಿದೆ. ಎಲ್ಎಲ್ವಿಎಂಗಾಗಿ ಗಾಲೋಯಿಸ್ ಸಿಪಿಜಿ. ಗಾಲೋಯಿಸ್ ಇಂಕ್. ಎಲ್ಎಲ್ವಿಎಂ ಕಂಪೈಲರ್ನ ಆಧಾರದ ಮೇಲೆ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಗ್ರಾಫ್ ಸಂಕಲನದ ವಿವಿಧ ಹಂತಗಳಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಮತ್ತು ಈ ಪ್ರಾತಿನಿಧ್ಯಗಳ ನಡುವಿನ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಇದು ಅದರ ದಾಖಲೆಯಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಸ್ಟಮ್ ಸ್ಕೀಮಾವನ್ನು ಅನುಸರಿಸುತ್ತದೆ. ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ಗಳ ಮೇಲೆ ಯಂತ್ರ ಕಲಿಕೆ ಕೋಡ್ ಪ್ರಾಪರ್ಟಿ ಗ್ರಾಫ್ಗಳು ದುರ್ಬಲತೆಯ ಆವಿಷ್ಕಾರಕ್ಕೆ ಹಲವಾರು ಯಂತ್ರ-ಕಲಿಕೆ-ಆಧಾರಿತ ವಿಧಾನಗಳಿಗೆ ಆಧಾರವನ್ನು ಒದಗಿಸುತ್ತವೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಗ್ರಾಫ್ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು (ಜಿಎನ್ಎನ್) ದುರ್ಬಲತೆ ಪತ್ತೆಕಾರಕಗಳನ್ನು ಪಡೆಯಲು ಬಳಸಲಾಗಿದೆ. ಎಬ್ಸ್ಟ್ರಾಕ್ಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಟ್ರೀ (ಎ. ಎಸ್. ಟಿ.) ಕಂಟ್ರೋಲ್-ಫ್ಲೋ ಗ್ರಾಫ್ (ಸಿ. ಎಫ್. ಜಿ.) ಪ್ರೋಗ್ರಾಂ ಡಿಪೆಂಡೆನ್ಸ್ ಗ್ರಾಫ್ (ಪಿ. ಡಿ. ಜಿ.) ಗ್ರಾಫ್ ಡೇಟಾಬೇಸ್ ಉಲ್ಲೇಖಗಳು ಕಂಪ್ಯೂಟರ್ ಸೆಕ್ಯುರಿಟಿ ಸಾಫ್ಟ್ವೇರ್ ಅಪ್ಲಿಕೇಶನ್-ನಿರ್ದಿಷ್ಟ ಗ್ರಾಫ್ಗಳನ್ನು ಸಹ ನೋಡಿ.