ಕೀರ್ತನೆ 3.12 ರ ಬಿಡುಗಡೆ, PHP ಭಾಷೆಯ ಸ್ಥಿರ ವಿಶ್ಲೇಷಕ. PHP 8.0 ನ ಆಲ್ಫಾ ಬಿಡುಗಡೆ

ವಿಮಿಯೋ ಕಂಪನಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ ಸ್ಥಿರ ವಿಶ್ಲೇಷಕದ ಹೊಸ ಬಿಡುಗಡೆ ಕೀರ್ತನ 3.12, ಇದು PHP ಕೋಡ್‌ನಲ್ಲಿ ಸ್ಪಷ್ಟ ಮತ್ತು ಸೂಕ್ಷ್ಮ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಹಾಗೆಯೇ ಕೆಲವು ರೀತಿಯ ದೋಷಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸರಿಪಡಿಸುತ್ತದೆ. PHP ಯ ಹೊಸ ಶಾಖೆಗಳಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಆಧುನಿಕ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸುವ ಲೆಗಸಿ ಕೋಡ್ ಮತ್ತು ಕೋಡ್‌ನಲ್ಲಿ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಿಸ್ಟಮ್ ಸೂಕ್ತವಾಗಿದೆ. ಯೋಜನೆಯ ಕೋಡ್ ಅನ್ನು PHP ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು ವಿತರಿಸುವವರು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ.

ಕೀರ್ತನೆಯು ತಪ್ಪಾದ ಪ್ರಕಾರದ ಬಳಕೆಗೆ ಸಂಬಂಧಿಸಿದ ಹೆಚ್ಚಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಮತ್ತು ವಿವಿಧವನ್ನು ಗುರುತಿಸುತ್ತದೆ ವಿಶಿಷ್ಟ ತಪ್ಪುಗಳು. ಉದಾಹರಣೆಗೆ, ಇದು ಅಭಿವ್ಯಕ್ತಿಯಲ್ಲಿ ವಿವಿಧ ಪ್ರಕಾರಗಳ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುವ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ತಪ್ಪಾದ ತಾರ್ಕಿಕ ಪರೀಕ್ಷೆಗಳು (ಉದಾಹರಣೆಗೆ "if ($a && $a) {}", "if ($a && !$a) {}" ಮತ್ತು " ವೇಳೆ ($a) {} elseif ($a) {}"), ಆಬ್ಜೆಕ್ಟ್ ಗುಣಲಕ್ಷಣಗಳ ಅಪೂರ್ಣ ಆರಂಭ. ವಿಶ್ಲೇಷಕವು ಬಹು-ಥ್ರೆಡ್ ಮೋಡ್‌ನಲ್ಲಿ ಚಲಿಸುತ್ತದೆ. ಹೆಚ್ಚುತ್ತಿರುವ ಸ್ಕ್ಯಾನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಿದೆ, ಇದು ಕೊನೆಯ ಸ್ಕ್ಯಾನ್‌ನಿಂದ ಬದಲಾಗಿರುವ ಫೈಲ್‌ಗಳನ್ನು ಮಾತ್ರ ವಿಶ್ಲೇಷಿಸುತ್ತದೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ಅನುಮತಿಸಲು ಸುರಕ್ಷಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪರಿಕರಗಳನ್ನು ಒದಗಿಸಲಾಗಿದೆ ಬಳಕೆ ರೂಪದಲ್ಲಿ ಟಿಪ್ಪಣಿಗಳು ಡಾಕ್‌ಬ್ಲಾಕ್ (“/** @var ಪ್ರಕಾರ */”) ವೇರಿಯಬಲ್ ಪ್ರಕಾರಗಳು, ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳು, ಫಂಕ್ಷನ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು, ಆಬ್ಜೆಕ್ಟ್ ಗುಣಲಕ್ಷಣಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸಲು. ಪ್ರಕಾರದ ಬಳಕೆಯ ಮಾದರಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು ಮತ್ತು ಸಮರ್ಥನೆಯ ಹೇಳಿಕೆಗಳನ್ನು ಬಳಸುವುದು ಸಹ ಬೆಂಬಲಿತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ:

/** @var ಸ್ಟ್ರಿಂಗ್|ಶೂನ್ಯ */
$a = foo();

/** @var ಸ್ಟ್ರಿಂಗ್ $a */
ಪ್ರತಿಧ್ವನಿ strpos($a, 'ಹಲೋ');

/** @psalm-assert-if-true B $a */
ಕಾರ್ಯ ವ್ಯಾಲಿಡ್ಬಿ(ಎ $ಎ) : ಬೂಲ್ {
B && $a->isValid() ನಿದರ್ಶನದ $a ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ;
}

ಕಂಡುಬರುವ ಸಮಸ್ಯೆಗಳ ನಿರ್ಮೂಲನೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು, ಸಾಲ್ಟರ್ ಉಪಯುಕ್ತತೆಯನ್ನು ಒದಗಿಸಲಾಗಿದೆ, ಇದು ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಅನುಮತಿಸುತ್ತದೆ ಸಾಮಾನ್ಯ ಕೋಡ್ ಸಮಸ್ಯೆಗಳನ್ನು ನಿವಾರಿಸಿ, ಪ್ರಕಾರದ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ, ಮತ್ತು ತರಗತಿಗಳನ್ನು ಒಂದು ನೇಮ್‌ಸ್ಪೇಸ್‌ನಿಂದ ಇನ್ನೊಂದಕ್ಕೆ ಸ್ಥಳಾಂತರಿಸುವುದು, ತರಗತಿಗಳ ನಡುವೆ ವಿಧಾನಗಳನ್ನು ಚಲಿಸುವುದು ಮತ್ತು ತರಗತಿಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ಮರುಹೆಸರಿಸುವಂತಹ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ.

ಕೀರ್ತನೆಯ ಹೊಸ ಸಂಚಿಕೆಯಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ "--taint-analysis" ಆಯ್ಕೆಯು ಬಳಕೆದಾರರಿಂದ ಸ್ವೀಕರಿಸಿದ ಇನ್‌ಪುಟ್ ನಿಯತಾಂಕಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಪತ್ತೆಹಚ್ಚಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, $_GET['ಹೆಸರು']) ಮತ್ತು ಅಕ್ಷರ ತಪ್ಪಿಸಿಕೊಳ್ಳುವ ಅಗತ್ಯವಿರುವ ಸ್ಥಳಗಳಲ್ಲಿ ಅವುಗಳ ಬಳಕೆ (ಉದಾಹರಣೆಗೆ, ಪ್ರತಿಧ್ವನಿ " $ಹೆಸರು "), ಮಧ್ಯಂತರ ಕಾರ್ಯಯೋಜನೆಗಳು ಮತ್ತು ಕಾರ್ಯ ಕರೆಗಳ ಟ್ರ್ಯಾಕಿಂಗ್ ಸರಪಳಿಗಳ ಮೂಲಕ ಸೇರಿದಂತೆ. ಸಹಾಯಕ ರಚನೆಗಳ ಬಳಕೆಯನ್ನು $_GET, $_POST ಮತ್ತು $_COOKIE ಸಂಭಾವ್ಯ ಅಪಾಯಕಾರಿ ಡೇಟಾದ ಮೂಲಗಳೆಂದು ಪರಿಗಣಿಸಲಾಗಿದೆ, ಆದರೆ ಇದು ಸಾಧ್ಯ ವ್ಯಾಖ್ಯಾನ ಸ್ವಂತ ಮೂಲಗಳು. ತಪ್ಪಿಸಿಕೊಳ್ಳುವ ಟ್ರ್ಯಾಕಿಂಗ್ ಅಗತ್ಯವಿರುವ ಕ್ರಿಯೆಗಳು HTML ವಿಷಯವನ್ನು ಉತ್ಪಾದಿಸುವ ಔಟ್‌ಪುಟ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, HTTP ಹೆಡರ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ ಅಥವಾ SQL ಪ್ರಶ್ನೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.

ಪ್ರತಿಧ್ವನಿ, ಕಾರ್ಯನಿರ್ವಾಹಕ, ಒಳಗೊಂಡಿರುವ ಮತ್ತು ಹೆಡರ್‌ನಂತಹ ಕಾರ್ಯಗಳನ್ನು ಬಳಸುವಾಗ ಮೌಲ್ಯೀಕರಣವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ತಪ್ಪಿಸಿಕೊಳ್ಳುವ ಅಗತ್ಯವನ್ನು ವಿಶ್ಲೇಷಿಸುವಾಗ, ಪಠ್ಯದಂತಹ ಡೇಟಾ ಪ್ರಕಾರಗಳು, SQL ನೊಂದಿಗೆ ತಂತಿಗಳು, HTML ಮತ್ತು ಶೆಲ್ ಕೋಡ್, ದೃಢೀಕರಣ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ತಂತಿಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ. ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಅಥವಾ SQL ಪರ್ಯಾಯಕ್ಕೆ ಕಾರಣವಾಗುವ ಕೋಡ್‌ನಲ್ಲಿನ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಪ್ರಸ್ತಾವಿತ ಮೋಡ್ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಹೆಚ್ಚುವರಿಯಾಗಿ, ಇದನ್ನು ಗಮನಿಸಬಹುದು ಪ್ರಾರಂಭಿಸಿ ಹೊಸ PHP 8.0 ಶಾಖೆಯ ಆಲ್ಫಾ ಪರೀಕ್ಷೆ. ನವೆಂಬರ್ 26 ರಂದು ಬಿಡುಗಡೆಯನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ. ಹೊಸ ಶಾಖೆಯಲ್ಲಿ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ: ನಾವೀನ್ಯತೆಗಳು, ಹಾಗೆ:

  • ಪ್ರಾರಂಭಿಸು JIT ಕಂಪೈಲರ್, ಇದರ ಬಳಕೆಯು ಉತ್ಪಾದಕತೆಯನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
  • ಬೆಂಬಲ ಒಕ್ಕೂಟದ ವಿಧಗಳು, ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಪ್ರಕಾರಗಳ ಸಂಗ್ರಹಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು (ಉದಾಹರಣೆಗೆ, “ಸಾರ್ವಜನಿಕ ಕಾರ್ಯ ಫೂ(ಫೂ|ಬಾರ್ $ಇನ್‌ಪುಟ್): ಇಂಟ್|ಫ್ಲೋಟ್;”).
  • ಬೆಂಬಲ ಗುಣಲಕ್ಷಣಗಳು (ಟಿಪ್ಪಣಿಗಳು) ಡಾಕ್‌ಬ್ಲಾಕ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ಬಳಸದೆ ತರಗತಿಗಳಿಗೆ ಮೆಟಾಡೇಟಾವನ್ನು (ಟೈಪ್ ಮಾಹಿತಿಯಂತಹ) ಬಂಧಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
  • ಸಂಕ್ಷಿಪ್ತ ಸಿಂಟ್ಯಾಕ್ಸ್ ವರ್ಗ ವ್ಯಾಖ್ಯಾನಗಳು, ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳ ವ್ಯಾಖ್ಯಾನವನ್ನು ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
  • ಹೊಸ ರಿಟರ್ನ್ ಪ್ರಕಾರ - ಸ್ಥಿರ.
  • ಹೊಸ ಪ್ರಕಾರ - ಮಿಶ್ರ, ಒಂದು ಕಾರ್ಯವು ವಿವಿಧ ಪ್ರಕಾರಗಳ ನಿಯತಾಂಕಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದು.
  • ಅಭಿವ್ಯಕ್ತಿ ಎಸೆಯಿರಿ ವಿನಾಯಿತಿಗಳನ್ನು ನಿರ್ವಹಿಸಲು.
  • ದುರ್ಬಲ ನಕ್ಷೆ ಕಸ ಸಂಗ್ರಹಣೆಯ ಸಮಯದಲ್ಲಿ ತ್ಯಾಗ ಮಾಡಬಹುದಾದ ವಸ್ತುಗಳನ್ನು ರಚಿಸಲು (ಉದಾಹರಣೆಗೆ, ಅನಗತ್ಯ ಸಂಗ್ರಹಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು).
  • ಸಾಮರ್ಥ್ಯ ಆಬ್ಜೆಕ್ಟ್‌ಗಳಿಗಾಗಿ "::class" ಎಂಬ ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಬಳಸುವುದು (ಗೆಟ್_ಕ್ಲಾಸ್() ಎಂದು ಕರೆಯುವುದಕ್ಕೆ ಹೋಲುತ್ತದೆ).
  • ಸಾಮರ್ಥ್ಯ ವೇರಿಯಬಲ್‌ಗಳಿಗೆ ಬದ್ಧವಾಗಿರದ ವಿನಾಯಿತಿಗಳ ಕ್ಯಾಚ್ ಬ್ಲಾಕ್‌ನಲ್ಲಿನ ವ್ಯಾಖ್ಯಾನಗಳು.
  • ಸಾಮರ್ಥ್ಯ ಫಂಕ್ಷನ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಕೊನೆಯ ಅಂಶದ ನಂತರ ಅಲ್ಪವಿರಾಮವನ್ನು ಬಿಡುವುದು.
  • ಹೊಸ ಇಂಟರ್ಫೇಸ್ ಸ್ಟ್ರಿಂಗ್ ಮಾಡಬಹುದಾದ ಸ್ಟ್ರಿಂಗ್‌ಗೆ ಪರಿವರ್ತಿಸಬಹುದಾದ ಯಾವುದೇ ಸ್ಟ್ರಿಂಗ್ ಪ್ರಕಾರಗಳು ಅಥವಾ ಡೇಟಾವನ್ನು ಗುರುತಿಸಲು (ಇದಕ್ಕಾಗಿ __toString() ವಿಧಾನ ಲಭ್ಯವಿದೆ).
  • ನವೀನ ಲಕ್ಷಣಗಳು str_contains(), ಸಬ್‌ಸ್ಟ್ರಿಂಗ್‌ನ ಸಂಭವವನ್ನು ನಿರ್ಧರಿಸಲು strpos ನ ಸರಳೀಕೃತ ಅನಲಾಗ್, ಹಾಗೆಯೇ ಸ್ಟ್ರಿಂಗ್‌ನ ಪ್ರಾರಂಭ ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲು str_starts_with() ಮತ್ತು str_ends_with() ಕಾರ್ಯಗಳು.
  • ಕಾರ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ fdiv(), ಶೂನ್ಯದಿಂದ ಭಾಗಿಸುವಾಗ ದೋಷವನ್ನು ಎಸೆಯದೆ ವಿಭಜನೆಯ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
  • ಬದಲಾಗಿದೆ ಸ್ಟ್ರಿಂಗ್ ಸೇರುವ ತರ್ಕ. ಉದಾಹರಣೆಗೆ, ಪ್ರತಿಧ್ವನಿ "ಮೊತ್ತ:" ಎಂಬ ಅಭಿವ್ಯಕ್ತಿ. $a + $b' ಅನ್ನು ಹಿಂದೆ 'echo ("sum: ". $a) + $b' ಎಂದು ಅರ್ಥೈಸಲಾಗಿತ್ತು ಮತ್ತು PHP 8 ರಲ್ಲಿ 'echo "sum:" ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ($a + $b)'.
  • ಬಿಗಿಗೊಳಿಸಿದೆ ಅಂಕಗಣಿತ ಮತ್ತು ಬಿಟ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು, ಉದಾಹರಣೆಗೆ, "[] % [42]" ಮತ್ತು "$ಆಬ್ಜೆಕ್ಟ್ + 4" ಅಭಿವ್ಯಕ್ತಿಗಳು ದೋಷಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ.
  • ಅಳವಡಿಸಲಾಗಿದೆ ಸ್ಥಿರವಾದ ವಿಂಗಡಣೆ ಅಲ್ಗಾರಿದಮ್, ಇದರಲ್ಲಿ ಒಂದೇ ಮೌಲ್ಯಗಳ ಕ್ರಮವನ್ನು ವಿಭಿನ್ನ ರನ್‌ಗಳಲ್ಲಿ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

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