ಪರೀಕ್ಷಿಸಲಾದ 3.6% ಪೈಥಾನ್ ರೆಪೊಸಿಟರಿಗಳು ಅಲ್ಪವಿರಾಮ ದೋಷಗಳನ್ನು ಕಳೆದುಕೊಂಡಿವೆ

ಕೋಡ್‌ನಲ್ಲಿ ಅಲ್ಪವಿರಾಮಗಳ ತಪ್ಪಾದ ಬಳಕೆಗೆ ಸಂಬಂಧಿಸಿದ ದೋಷಗಳಿಗೆ ಪೈಥಾನ್ ಕೋಡ್‌ನ ದುರ್ಬಲತೆಯ ಕುರಿತಾದ ಅಧ್ಯಯನದ ಫಲಿತಾಂಶಗಳನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ. ಎಣಿಸುವಾಗ, ಅಲ್ಪವಿರಾಮದಿಂದ ಬೇರ್ಪಡಿಸದಿದ್ದಲ್ಲಿ ಪೈಥಾನ್ ಪಟ್ಟಿಯಲ್ಲಿರುವ ತಂತಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಯೋಜಿಸುತ್ತದೆ ಮತ್ತು ಮೌಲ್ಯವನ್ನು ಅಲ್ಪವಿರಾಮದಿಂದ ಅನುಸರಿಸಿದರೆ ಮೌಲ್ಯವನ್ನು ಟ್ಯೂಪಲ್ ಎಂದು ಪರಿಗಣಿಸುತ್ತದೆ ಎಂಬ ಅಂಶದಿಂದ ಸಮಸ್ಯೆಗಳು ಉಂಟಾಗುತ್ತವೆ. ಪೈಥಾನ್ ಕೋಡ್‌ನೊಂದಿಗೆ 666 ಗಿಟ್‌ಹಬ್ ರೆಪೊಸಿಟರಿಗಳ ಸ್ವಯಂಚಾಲಿತ ವಿಶ್ಲೇಷಣೆಯನ್ನು ನಡೆಸಿದ ನಂತರ, ಸಂಶೋಧಕರು ಅಧ್ಯಯನ ಮಾಡಿದ 5% ಯೋಜನೆಗಳಲ್ಲಿ ಸಂಭವನೀಯ ಅಲ್ಪವಿರಾಮ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಿದ್ದಾರೆ.

ಹೆಚ್ಚಿನ ಹಸ್ತಚಾಲಿತ ತಪಾಸಣೆಯು ನೈಜ ದೋಷಗಳು ಕೇವಲ 24 ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ (3.6%) ಕಂಡುಬಂದಿದೆ ಎಂದು ತೋರಿಸಿದೆ, ಮತ್ತು ಉಳಿದ 1.4% ತಪ್ಪು ಧನಾತ್ಮಕವಾಗಿದೆ (ಉದಾಹರಣೆಗೆ, ಬಹು-ಸಾಲಿನ ಫೈಲ್ ಪಥಗಳು, ಲಾಂಗ್ ಹ್ಯಾಶ್‌ಗಳು, HTML ಅನ್ನು ಜೋಡಿಸಲು ಸಾಲುಗಳ ನಡುವೆ ಅಲ್ಪವಿರಾಮವನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಬಿಟ್ಟುಬಿಡಬಹುದು. ಬ್ಲಾಕ್‌ಗಳು ಅಥವಾ SQL ಅಭಿವ್ಯಕ್ತಿಗಳು). ನೈಜ ದೋಷಗಳಿರುವ 24 ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ ಟೆನ್ಸಾರ್‌ಫ್ಲೋ, ಗೂಗಲ್ ವಿ8, ಸೆಂಟ್ರಿ, ಪೈಡಾಟಾ ಕ್ಸಾರೇ, ರ್ಯಾಪಿಪ್‌ಪ್ರೊ, ಜಾಂಗೊ-ಕಲರ್‌ಫೀಲ್ಡ್ ಮತ್ತು ಜಾಂಗೊ-ಹೆಲ್ಪ್‌ಡೆಸ್ಕ್‌ನಂತಹ ದೊಡ್ಡ ಯೋಜನೆಗಳು ಇದ್ದವು ಎಂಬುದು ಗಮನಾರ್ಹವಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಅಲ್ಪವಿರಾಮಗಳೊಂದಿಗಿನ ಸಮಸ್ಯೆಗಳು ಪೈಥಾನ್‌ಗೆ ನಿರ್ದಿಷ್ಟವಾಗಿಲ್ಲ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ C/C++ ಯೋಜನೆಗಳಲ್ಲಿ ಕ್ರಾಪ್ ಅಪ್ ಆಗುತ್ತವೆ (ಇತ್ತೀಚಿನ ಪರಿಹಾರಗಳ ಉದಾಹರಣೆಗಳೆಂದರೆ LLVM, Mono, Tensorflow).

ಮುಖ್ಯ ರೀತಿಯ ದೋಷಗಳನ್ನು ಅಧ್ಯಯನ ಮಾಡಲಾಗಿದೆ:

  • ಪಟ್ಟಿಗಳು, ಟ್ಯೂಪಲ್‌ಗಳು ಮತ್ತು ಸೆಟ್‌ಗಳಲ್ಲಿ ಆಕಸ್ಮಿಕವಾಗಿ ಅಲ್ಪವಿರಾಮವನ್ನು ಕಳೆದುಕೊಂಡಿರುವುದು, ಪ್ರತ್ಯೇಕ ಮೌಲ್ಯಗಳಾಗಿ ಅರ್ಥೈಸುವ ಬದಲು ತಂತಿಗಳನ್ನು ಜೋಡಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಸೆಂಟ್ರಿಯಲ್ಲಿ, ಪಟ್ಟಿಯಲ್ಲಿರುವ "ಬಿಡುಗಡೆಗಳು" ಮತ್ತು "ಡಿಸ್ಕವರ್" ಎಂಬ ಸ್ಟ್ರಿಂಗ್‌ಗಳ ನಡುವೆ ಒಂದು ಪರೀಕ್ಷೆಯು ಅಲ್ಪವಿರಾಮವನ್ನು ಕಳೆದುಕೊಂಡಿತು, ಇದರ ಪರಿಣಾಮವಾಗಿ "/ಬಿಡುಗಡೆಗಳು" ಮತ್ತು " ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಬದಲು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ "/ರಿಲೀಸ್ ಡಿಸ್ಕವರ್" ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಯಿತು. / ಅನ್ವೇಷಿಸಿ" ಪ್ರತ್ಯೇಕವಾಗಿ.
    ಪರೀಕ್ಷಿಸಲಾದ 3.6% ಪೈಥಾನ್ ರೆಪೊಸಿಟರಿಗಳು ಅಲ್ಪವಿರಾಮ ದೋಷಗಳನ್ನು ಕಳೆದುಕೊಂಡಿವೆ

    ಇನ್ನೊಂದು ಉದಾಹರಣೆಯೆಂದರೆ, ರಾಪಿಡ್‌ಪ್ರೊದಲ್ಲಿ ಕಾಣೆಯಾದ ಅಲ್ಪವಿರಾಮವು 572 ನೇ ಸಾಲಿನಲ್ಲಿ ಎರಡು ವಿಭಿನ್ನ ನಿಯಮಗಳನ್ನು ವಿಲೀನಗೊಳಿಸುವುದಕ್ಕೆ ಕಾರಣವಾಯಿತು:

    ಪರೀಕ್ಷಿಸಲಾದ 3.6% ಪೈಥಾನ್ ರೆಪೊಸಿಟರಿಗಳು ಅಲ್ಪವಿರಾಮ ದೋಷಗಳನ್ನು ಕಳೆದುಕೊಂಡಿವೆ

  • ಏಕ-ಅಂಶದ ಟ್ಯೂಪಲ್ ವ್ಯಾಖ್ಯಾನದ ಕೊನೆಯಲ್ಲಿ ಕಾಣೆಯಾದ ಅಲ್ಪವಿರಾಮ, ಟ್ಯೂಪಲ್ ಬದಲಿಗೆ ನಿಯಮಿತ ಪ್ರಕಾರವನ್ನು ನಿಯೋಜಿಸಲು ನಿಯೋಜನೆಯನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, "ಮೌಲ್ಯಗಳು = (1,)" ಎಂಬ ಅಭಿವ್ಯಕ್ತಿಯು ಒಂದು ಅಂಶದ ಟ್ಯೂಪಲ್‌ನ ವೇರಿಯಬಲ್‌ಗೆ ನಿಯೋಜನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ, ಆದರೆ "ಮೌಲ್ಯಗಳು = (1)" ಒಂದು ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರದ ನಿಯೋಜನೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಈ ಕಾರ್ಯಯೋಜನೆಗಳಲ್ಲಿನ ಆವರಣಗಳು ಪ್ರಕಾರದ ವ್ಯಾಖ್ಯಾನದ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿರುತ್ತವೆ ಮತ್ತು ಅಲ್ಪವಿರಾಮಗಳ ಉಪಸ್ಥಿತಿಯನ್ನು ಆಧರಿಸಿ ಪಾರ್ಸರ್ನಿಂದ ಟ್ಯೂಪಲ್ನ ಉಪಸ್ಥಿತಿಯನ್ನು ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated' # ಗೆ ಟ್ಯೂಪಲ್ ಬದಲಿಗೆ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ನಿಯೋಜಿಸಲಾಗುವುದು. )
  • ನಿಯೋಜನೆ ಸಮಯದಲ್ಲಿ ವಿರುದ್ಧವಾದ ಪರಿಸ್ಥಿತಿಯು ಹೆಚ್ಚುವರಿ ಅಲ್ಪವಿರಾಮವಾಗಿದೆ. ನಿಯೋಜನೆಯ ಕೊನೆಯಲ್ಲಿ ಆಕಸ್ಮಿಕವಾಗಿ ಅಲ್ಪವಿರಾಮವನ್ನು ಬಿಟ್ಟರೆ, ಸಾಮಾನ್ಯ ಪ್ರಕಾರದ ಬದಲಿಗೆ ಟ್ಯೂಪಲ್ ಅನ್ನು ಮೌಲ್ಯವಾಗಿ ನಿಯೋಜಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, "ಮೌಲ್ಯ = 1" ಬದಲಿಗೆ "ಮೌಲ್ಯ = 1" ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದರೆ).

ಮೂಲ: opennet.ru

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