PHPstan 1.0 ಬಿಡುಗಡೆ, PHP ಕೋಡ್‌ಗಾಗಿ ಸ್ಥಿರ ವಿಶ್ಲೇಷಕ

ಆರು ವರ್ಷಗಳ ಅಭಿವೃದ್ಧಿಯ ನಂತರ, ಸ್ಥಾಯೀ ವಿಶ್ಲೇಷಕ PHPStan 1.0 ನ ಮೊದಲ ಸ್ಥಿರ ಬಿಡುಗಡೆಯು ನಡೆಯಿತು, ಇದು PHP ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸದೆ ಮತ್ತು ಘಟಕ ಪರೀಕ್ಷೆಗಳನ್ನು ಬಳಸದೆ ದೋಷಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಯೋಜನೆಯ ಕೋಡ್ ಅನ್ನು PHP ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಿತರಿಸಲಾಗಿದೆ.

ವಿಶ್ಲೇಷಕವು 10 ಹಂತದ ತಪಾಸಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ ಪ್ರತಿ ನಂತರದ ಹಂತವು ಹಿಂದಿನ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚು ಕಠಿಣ ಪರಿಶೀಲನೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ:

  • ಮೂಲಭೂತ ಪರಿಶೀಲನೆಗಳು, ಅಜ್ಞಾತ ತರಗತಿಗಳು, ಕಾರ್ಯಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ($ಇದು), ವಿವರಿಸಲಾಗದ ಅಸ್ಥಿರಗಳು ಮತ್ತು ತಪ್ಪು ಸಂಖ್ಯೆಯ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ರವಾನಿಸುವುದು.
  • __call ಮತ್ತು __get ನೊಂದಿಗೆ ಪ್ರಾಯಶಃ ವ್ಯಾಖ್ಯಾನಿಸದ ಅಸ್ಥಿರಗಳು, ಅಜ್ಞಾತ ಮ್ಯಾಜಿಕ್ ವಿಧಾನಗಳು ಮತ್ತು ವರ್ಗಗಳ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಗುರುತಿಸುವುದು.
  • ಎಲ್ಲಾ ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲಿ ಅಜ್ಞಾತ ವಿಧಾನಗಳ ಪತ್ತೆ, $ ಈ ಮೂಲಕ ಕರೆಗಳಿಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ. PHPDocs ಅನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ.
  • ರಿಟರ್ನ್ ಪ್ರಕಾರಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಪ್ರಕಾರಗಳನ್ನು ನಿಯೋಜಿಸುವುದು.
  • "ಸತ್ತ" (ಎಂದಿಗೂ ಕರೆಯಲ್ಪಡದ) ಕೋಡ್‌ನ ಮೂಲ ಗುರುತಿಸುವಿಕೆ. ಯಾವಾಗಲೂ ತಪ್ಪಾಗಿ ಹಿಂತಿರುಗುವ ಕರೆಗಳ ನಿದರ್ಶನಗಳನ್ನು ಗುರುತಿಸಿ, ಎಂದಿಗೂ ಬೆಂಕಿಯಿಡದ "ಬೇರೆ" ಬ್ಲಾಕ್‌ಗಳು ಮತ್ತು ಹಿಂದಿರುಗಿದ ನಂತರ ಕೋಡ್ ಮಾಡಿ.
  • ವಿಧಾನಗಳು ಮತ್ತು ಕಾರ್ಯಗಳಿಗೆ ರವಾನಿಸಲಾದ ವಾದಗಳ ಪ್ರಕಾರಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ.
  • ಕಾಣೆಯಾದ ಪ್ರಕಾರದ ಮಾಹಿತಿ ಟಿಪ್ಪಣಿಗಳ ಕುರಿತು ಎಚ್ಚರಿಕೆ.
  • ಎರಡು ಅಥವಾ ಹೆಚ್ಚಿನ ಪ್ರಕಾರಗಳ ಸಂಗ್ರಹಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ತಪ್ಪಾದ ಯೂನಿಯನ್ ಪ್ರಕಾರಗಳ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆ.
  • "ಶೂನ್ಯಗೊಳಿಸಬಹುದಾದ" ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಕರೆ ಮಾಡುವ ವಿಧಾನಗಳು ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವ ಕುರಿತು ಎಚ್ಚರಿಕೆ.
  • "ಮಿಶ್ರ" ಪ್ರಕಾರದ ಬಳಕೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ.

    ಗುರುತಿಸಲಾದ ಆಧಾರವಾಗಿರುವ ಸಮಸ್ಯೆಗಳ ಉದಾಹರಣೆಗಳು:

    • ಉದಾಹರಣೆಗೆ, ಕ್ಯಾಚ್, ಟೈಪ್‌ಹಿಂಟ್‌ಗಳು ಮತ್ತು ಇತರ ಭಾಷಾ ರಚನೆಗಳಲ್ಲಿ ಬಳಸಲಾಗುವ ವರ್ಗಗಳ ಅಸ್ತಿತ್ವ.
    • ಎಂಬ ವಿಧಾನಗಳು ಮತ್ತು ಕಾರ್ಯಗಳ ಅಸ್ತಿತ್ವ ಮತ್ತು ಲಭ್ಯತೆ, ಹಾಗೆಯೇ ರವಾನಿಸಲಾದ ವಾದಗಳ ಸಂಖ್ಯೆ.
    • ರಿಟರ್ನ್ ಎಕ್ಸ್‌ಪ್ರೆಶನ್‌ನಲ್ಲಿ ವಿವರಿಸಿದಂತೆ ಅದೇ ಪ್ರಕಾರದೊಂದಿಗೆ ವಿಧಾನವು ಡೇಟಾವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಎಂದು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ.
    • ಪ್ರವೇಶಿಸಿದ ಗುಣಲಕ್ಷಣಗಳ ಅಸ್ತಿತ್ವ ಮತ್ತು ಗೋಚರತೆ ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳಲ್ಲಿ ಬಳಸಲಾದ ಘೋಷಿತ ಮತ್ತು ನಿಜವಾದ ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು.
    • ಸ್ಟ್ರಿಂಗ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಬ್ಲಾಕ್‌ನಲ್ಲಿ sprintf/printf ಕರೆಗಳಿಗೆ ರವಾನಿಸಲಾದ ನಿಯತಾಂಕಗಳ ಸಂಖ್ಯೆ ಸರಿಯಾಗಿದೆ.
    • ಕವಲೊಡೆಯುವ ಆಪರೇಟರ್‌ಗಳು ಮತ್ತು ಲೂಪ್‌ಗಳಿಂದ ರೂಪುಗೊಂಡ ಬ್ಲಾಕ್‌ಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು ವೇರಿಯಬಲ್‌ಗಳ ಅಸ್ತಿತ್ವ.
    • ಅನುಪಯುಕ್ತ ಪ್ರಕಾರದ ಕ್ಯಾಸ್ಟ್‌ಗಳು (ಉದಾ. "(ಸ್ಟ್ರಿಂಗ್) 'ಫೂ'") ಮತ್ತು ಕಟ್ಟುನಿಟ್ಟಾದ ಪರೀಕ್ಷೆಗಳು ("===" ಮತ್ತು "!==") ವಿವಿಧ ಪ್ರಕಾರಗಳು ಮತ್ತು ಒಪೆರಾಂಡ್‌ಗಳೊಂದಿಗೆ ಯಾವಾಗಲೂ ತಪ್ಪಾಗಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

    PHPStan 1.0 ನಲ್ಲಿ ಪ್ರಮುಖ ಆವಿಷ್ಕಾರಗಳು:

    • "9" ಚೆಕ್ ಮಟ್ಟವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ, ಇದು "ಮಿಶ್ರ" ಪ್ರಕಾರದ ಬಳಕೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ, ವಿವಿಧ ಪ್ರಕಾರಗಳೊಂದಿಗೆ ನಿಯತಾಂಕಗಳ ಕಾರ್ಯದ ಸ್ವಾಗತವನ್ನು ಆಯೋಜಿಸಲು ಉದ್ದೇಶಿಸಲಾಗಿದೆ. ಹಂತ XNUMX "ಮಿಶ್ರ" ದ ಅಸುರಕ್ಷಿತ ಬಳಕೆಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ "ಮಿಶ್ರ" ಪ್ರಕಾರದ ಮೌಲ್ಯಗಳನ್ನು ಮತ್ತೊಂದು ಪ್ರಕಾರಕ್ಕೆ ರವಾನಿಸುವುದು, ಪ್ರಕಾರದ ವಿಧಾನಗಳನ್ನು "ಮಿಶ್ರ" ಎಂದು ಕರೆಯುವುದು ಮತ್ತು ಅದರ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿರಬಹುದು.
    • @phpstan-pure ಮತ್ತು @phpstan-impure ಟಿಪ್ಪಣಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದೇ ರೀತಿಯ ಕಾರ್ಯ ಕರೆಗಳಿಗೆ ಹಿಂತಿರುಗಿಸುವ ಮೌಲ್ಯಗಳು ಒಂದೇ ಆಗಿವೆಯೇ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಿ.
    • @throws ಟಿಪ್ಪಣಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಟ್ರೈ-ಕ್ಯಾಚ್-ಫೈನಲಿ ಕನ್‌ಸ್ಟ್ರಕ್ಟ್‌ಗಳಲ್ಲಿ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಟೈಪ್ ಮಾಡಿ.
    • ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಆದರೆ ಬಳಕೆಯಾಗದ ಆಂತರಿಕ (ಖಾಸಗಿ) ಗುಣಲಕ್ಷಣಗಳು, ವಿಧಾನಗಳು ಮತ್ತು ಸ್ಥಿರಾಂಕಗಳ ಗುರುತಿಸುವಿಕೆ.
    • array_map ಮತ್ತು usort ನಂತಹ ಅರೇ ಕಾರ್ಯಗಳಿಗೆ ಹೊಂದಾಣಿಕೆಯಾಗದ ಕಾಲ್‌ಬ್ಯಾಕ್‌ಗಳನ್ನು ರವಾನಿಸುವುದು.
    • ಕಾಣೆಯಾದ ಟೈಪ್‌ಹಿಂಟ್ ಟಿಪ್ಪಣಿಗಳಿಗಾಗಿ ಟೈಪ್ ತಪಾಸಣೆ.
    • PHPDocs ನೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯ ರೀತಿಯ ಘೋಷಣೆಗಳನ್ನು ಮಾಡಲಾಗಿದೆ, PHPDocs ನಲ್ಲಿ ದೋಷ ಸಂದೇಶಗಳ ಪ್ರಕಾರಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ.

    ಮೂಲ: opennet.ru

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