Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak znależć wszystkie wystąpienia call-time pass-by-reference w kodzie?
Forum PHP.pl > Forum > PHP
NoiseMc
Jedną z opcji byłyby wyrażenia regularne ale to pewnie znajdzie milion innych mylących wyników.

Inna opcja to zestaw standardów do PHP_CodeSniffer
https://github.com/wimg/PHPCompatibility

ale z tego co widzę to są 3 issues niezamknięte od miesiąca także nie jestem pewien czy to mi na pewno wszystko wyłapie.

Są może jakieś inne opcje?
Pyton_000
powinno wystarczyć znalezienie wystąpień =&
Cała reszta jest do przeanalizowania.

Możesz robić to stopniowo. Zacząć właśnie od =& a potem dokładać warunków.
NoiseMc
=& nie wykryje mi niczego.

http://stackoverflow.com/questions/8971261...y-fix-available

Kod
// Right way!
function myFunc(&$arg) { }
myFunc($var);


Kod
// Wrong way!
function myFunc($arg) { }
myFunc(&$arg);


Musiałbym szukać &$ ale tak naprawdę mogę też mieć & $ i tak naprawde wystąpienie tego ciągu nie musi oznaczać call-time pass-by-reference, tutaj zwykły grep nie pomoże bo potem za dużo analizowania ręcznego

PHP_CodeSniffer jest z tego co widzę najlepszym rozwiązaniem tym bardziej, że ta biblioteka standardów napisana jest przez gościa o nazwisku Wim Godden, który jest stałym speakerem na ZendCon, a nawet naszych polskich konferencjach i pisze też częściowo PHPUnit i ZF2

Kod
/usr/local/zend/bin/phpcs -s -n --standard=PHPCompatibility --sniffs=PHPCompatibility.PHP.ForbiddenCallTimePassByReference.NotAllowed --extensions=php app_dir  > incompatibilities-specific.txt


Wypluwa coś takiego:

Kod
FILE: /root/tools/class/class.php
--------------------------------------------------------------------------------
FOUND 3 ERROR(S) AFFECTING 3 LINE(S)
--------------------------------------------------------------------------------
193 | ERROR | Using a call-time pass-by-reference is prohibited since php 5.4
     |       | (PHPCompatibility.PHP.ForbiddenCallTimePassByReference.NotAllowed)
200 | ERROR | Using a call-time pass-by-reference is prohibited since php 5.4
     |       | (PHPCompatibility.PHP.ForbiddenCallTimePassByReference.NotAllowed)
207 | ERROR | Using a call-time pass-by-reference is prohibited since php 5.4
     |       | (PHPCompatibility.PHP.ForbiddenCallTimePassByReference.NotAllowed)
--------------------------------------------------------------------------------


Zastanawiałem się czy jest może jeszcze jakieś fajne rozwiązanie
Pyton_000
Wygląda że to chyba jedyne sensowne rozwiązanie na masową skalę. Chyba że jakieś mega IDE mają taką opcję np. Zend ?
NoiseMc


Zend ni ma, chociaż może się gdzieś ta opcja schowała, zapytam w poniedziałek gościa, który robi ZS biggrin.gif Można w ZS teoretycznie podpiąć PHP_CodeSniffer ale nigdy mi się nie udało tego uruchomić

Jako ciekawostkę dodam, że w Team Zend Studio jest wielu Polaków między innymi pracujących w Polsce
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.