ಕೋಡ್ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಇಂಟೆಲ್ ಓಪನ್ ಸೋರ್ಸ್ಡ್ ಕಂಟ್ರೋಲ್ ಫ್ಲಾಗ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಸಿಸ್ಟಮ್

ಇಂಟೆಲ್ ಕೋಡ್ ಗುಣಮಟ್ಟವನ್ನು ಸುಧಾರಿಸಲು ಯಂತ್ರ ಕಲಿಕೆ ವ್ಯವಸ್ಥೆಯನ್ನು ರಚಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿರುವ ಕಂಟ್ರೋಲ್ ಫ್ಲಾಗ್ ಸಂಶೋಧನಾ ಯೋಜನೆಗೆ ಸಂಬಂಧಿಸಿದ ಬೆಳವಣಿಗೆಗಳನ್ನು ಕಂಡುಹಿಡಿದಿದೆ. ಪ್ರಾಜೆಕ್ಟ್‌ನಿಂದ ಸಿದ್ಧಪಡಿಸಲಾದ ಟೂಲ್‌ಕಿಟ್, ದೊಡ್ಡ ಪ್ರಮಾಣದ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್‌ನಲ್ಲಿ ತರಬೇತಿ ಪಡೆದ ಮಾದರಿಯನ್ನು ಆಧರಿಸಿ, C/C++ ನಂತಹ ಉನ್ನತ ಮಟ್ಟದ ಭಾಷೆಗಳಲ್ಲಿ ಬರೆಯಲಾದ ಮೂಲ ಪಠ್ಯಗಳಲ್ಲಿನ ವಿವಿಧ ದೋಷಗಳು ಮತ್ತು ವೈಪರೀತ್ಯಗಳನ್ನು ಗುರುತಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಮುದ್ರಣದೋಷಗಳು ಮತ್ತು ತಪ್ಪಾದ ಪ್ರಕಾರದ ಸಂಯೋಜನೆಗಳನ್ನು ಗುರುತಿಸುವುದರಿಂದ ಹಿಡಿದು ಪಾಯಿಂಟರ್‌ಗಳು ಮತ್ತು ಮೆಮೊರಿ ಸಮಸ್ಯೆಗಳಲ್ಲಿ ಕಾಣೆಯಾದ NULL ಮೌಲ್ಯ ಪರಿಶೀಲನೆಗಳನ್ನು ಗುರುತಿಸುವವರೆಗೆ ಕೋಡ್‌ನಲ್ಲಿ ವಿವಿಧ ರೀತಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಿಸ್ಟಮ್ ಸೂಕ್ತವಾಗಿದೆ. ಕಂಟ್ರೋಲ್ ಫ್ಲಾಗ್ ಕೋಡ್ ಅನ್ನು C++ ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ತೆರೆದ ಮೂಲವಾಗಿದೆ.

GitHub ಮತ್ತು ಅಂತಹುದೇ ಸಾರ್ವಜನಿಕ ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ ಪ್ರಕಟವಾದ ಮುಕ್ತ ಯೋಜನೆಗಳ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕೋಡ್ ಶ್ರೇಣಿಯ ಅಂಕಿಅಂಶಗಳ ಮಾದರಿಯನ್ನು ನಿರ್ಮಿಸುವ ಮೂಲಕ ಸಿಸ್ಟಮ್ ಸ್ವಯಂ-ಕಲಿಕೆಯನ್ನು ಹೊಂದಿದೆ. ತರಬೇತಿ ಹಂತದಲ್ಲಿ, ವ್ಯವಸ್ಥೆಯು ಕೋಡ್‌ನಲ್ಲಿ ರಚನೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ವಿಶಿಷ್ಟ ಮಾದರಿಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ ಮತ್ತು ಈ ಮಾದರಿಗಳ ನಡುವಿನ ಸಂಪರ್ಕಗಳ ವಾಕ್ಯರಚನೆಯ ಮರವನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ, ಇದು ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ಕೋಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಹರಿವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ಎಲ್ಲಾ ವಿಶ್ಲೇಷಿಸಿದ ಮೂಲ ಕೋಡ್‌ಗಳ ಅಭಿವೃದ್ಧಿ ಅನುಭವವನ್ನು ಸಂಯೋಜಿಸುವ ಉಲ್ಲೇಖ ನಿರ್ಧಾರ-ಮಾಡುವ ವೃಕ್ಷವು ರೂಪುಗೊಳ್ಳುತ್ತದೆ.

ಪರಿಶೀಲನೆಯಲ್ಲಿರುವ ಕೋಡ್ ಉಲ್ಲೇಖಿತ ನಿರ್ಧಾರ ವೃಕ್ಷದ ವಿರುದ್ಧ ಪರಿಶೀಲಿಸಲಾದ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸುವ ಇದೇ ಪ್ರಕ್ರಿಯೆಗೆ ಒಳಗಾಗುತ್ತದೆ. ನೆರೆಯ ಶಾಖೆಗಳೊಂದಿಗಿನ ದೊಡ್ಡ ವ್ಯತ್ಯಾಸಗಳು ಪರಿಶೀಲಿಸಲ್ಪಟ್ಟ ಮಾದರಿಯಲ್ಲಿ ಅಸಂಗತತೆಯ ಉಪಸ್ಥಿತಿಯನ್ನು ಸೂಚಿಸುತ್ತವೆ. ಟೆಂಪ್ಲೇಟ್‌ನಲ್ಲಿ ದೋಷವನ್ನು ಗುರುತಿಸಲು ಮಾತ್ರವಲ್ಲದೆ ತಿದ್ದುಪಡಿಯನ್ನು ಸೂಚಿಸಲು ಸಹ ಸಿಸ್ಟಮ್ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, OpenSSL ಕೋಡ್‌ನಲ್ಲಿ, "(s1 == NULL) ∧ (s2 == NULL)" ಅನ್ನು ಗುರುತಿಸಲಾಗಿದೆ, ಇದು ಸಿಂಟ್ಯಾಕ್ಸ್ ಟ್ರೀನಲ್ಲಿ ಕೇವಲ 8 ಬಾರಿ ಕಾಣಿಸಿಕೊಂಡಿತು, ಆದರೆ "(s1 == ಮೌಲ್ಯದೊಂದಿಗೆ ಹತ್ತಿರದ ಶಾಖೆ ಶೂನ್ಯ) || (s2 == NULL)” ಸುಮಾರು 7 ಸಾವಿರ ಬಾರಿ ಸಂಭವಿಸಿದೆ. ಸಿಸ್ಟಮ್ ಅಸಂಗತತೆಯನ್ನು ಸಹ ಪತ್ತೆ ಮಾಡಿದೆ “(s1 == NULL) | (s2 == NULL)” ಇದು ಮರದಲ್ಲಿ 32 ಬಾರಿ ಕಾಣಿಸಿಕೊಂಡಿದೆ.

ಕೋಡ್ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಇಂಟೆಲ್ ಓಪನ್ ಸೋರ್ಸ್ಡ್ ಕಂಟ್ರೋಲ್ ಫ್ಲಾಗ್ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಸಿಸ್ಟಮ್

ಕೋಡ್ ತುಣುಕನ್ನು ವಿಶ್ಲೇಷಿಸುವಾಗ "if (x = 7) y = x;" ಸಂಖ್ಯಾ ಮೌಲ್ಯಗಳನ್ನು ಹೋಲಿಸಲು "ವೇರಿಯೇಬಲ್ == ಸಂಖ್ಯೆ" ನಿರ್ಮಾಣವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ "if" ಆಪರೇಟರ್‌ನಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ ಎಂದು ಸಿಸ್ಟಮ್ ನಿರ್ಧರಿಸಿದೆ, ಆದ್ದರಿಂದ "if" ಅಭಿವ್ಯಕ್ತಿಯಲ್ಲಿ "ವೇರಿಯಬಲ್ = ಸಂಖ್ಯೆ" ಎಂಬ ಸೂಚನೆಯು ಒಂದು ಕಾರಣದಿಂದ ಉಂಟಾಗುತ್ತದೆ. ಮುದ್ರಣದೋಷ. ಸಾಂಪ್ರದಾಯಿಕ ಸ್ಥಿರ ವಿಶ್ಲೇಷಕಗಳು ಅಂತಹ ದೋಷವನ್ನು ಹೊಂದಿದ್ದವು, ಆದರೆ ಅವುಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಕಂಟ್ರೋಲ್ ಫ್ಲಾಗ್ ಸಿದ್ಧ ನಿಯಮಗಳನ್ನು ಅನ್ವಯಿಸುವುದಿಲ್ಲ, ಇದರಲ್ಲಿ ಎಲ್ಲಾ ಸಂಭಾವ್ಯ ಆಯ್ಕೆಗಳನ್ನು ಒದಗಿಸುವುದು ಕಷ್ಟ, ಆದರೆ ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯಲ್ಲಿ ವಿವಿಧ ರಚನೆಗಳ ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳನ್ನು ಆಧರಿಸಿದೆ. ಯೋಜನೆಗಳ.

ಪ್ರಯೋಗವಾಗಿ, CURL ಯುಟಿಲಿಟಿಯ ಮೂಲ ಕೋಡ್‌ನಲ್ಲಿ ControlFlag ಅನ್ನು ಬಳಸುವುದು, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಉತ್ತಮ-ಗುಣಮಟ್ಟದ ಮತ್ತು ಪರೀಕ್ಷಿತ ಕೋಡ್‌ನ ಉದಾಹರಣೆಯಾಗಿ ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತದೆ, "s->keepon" ರಚನೆಯ ಅಂಶವನ್ನು ಬಳಸುವಾಗ ಸ್ಥಿರ ವಿಶ್ಲೇಷಕಗಳಿಂದ ಕಂಡುಹಿಡಿಯದ ದೋಷವನ್ನು ಗುರುತಿಸಲಾಗಿದೆ, ಇದು ಸಂಖ್ಯಾ ಪ್ರಕಾರವನ್ನು ಹೊಂದಿತ್ತು, ಆದರೆ ಬೂಲಿಯನ್ ಮೌಲ್ಯದೊಂದಿಗೆ ಹೋಲಿಸಲಾಗಿದೆ TRUE . OpenSSL ಕೋಡ್‌ನಲ್ಲಿ, "(s1 == NULL) ∧ (s2 == NULL)" ನೊಂದಿಗೆ ಮೇಲಿನ-ಸೂಚಿಸಲಾದ ಸಮಸ್ಯೆಯ ಜೊತೆಗೆ, "(-2 == rv)" ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲಿ ವೈಪರೀತ್ಯಗಳನ್ನು ಗುರುತಿಸಲಾಗಿದೆ (ಮೈನಸ್ ಮುದ್ರಣದೋಷ) ಮತ್ತು "BIO_puts(bp, ":")

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ