Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP]Jak sprawnie i szybko wykonać analizę kodu PHP?
Malinaa
post 27.01.2020, 19:30:31
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Mam pytanie jak w temacie.

Jak sprawnie i szybko wykonać code review czyli analizę kodu PHP?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
vokiel
post 27.01.2020, 20:32:49
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Masz na myśli automatycznie - skrypty, czy chodzi o techniki manualnego code review?


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 27.01.2020, 20:40:45
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Codacy, SonarQube i wiele innych
Go to the top of the page
+Quote Post
Malinaa
post 27.01.2020, 23:05:17
Post #4





Grupa: Zarejestrowani
Postów: 518
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Mam kod: KOD PHP

Gdzie do wykonania jest code review, czyli analiza kodu PHP
oraz przesłanie uwag o błędach i sugerowanych zmianach do naniesienia.


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 28.01.2020, 09:55:41
Post #5





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Jesli uzywasz github - to w githbu
Jesli uzywasz gitlab - to w gitlab
Jesli uzywasz czegos innego - to w tym czyms innym
Jesli nie uzywasz nic to wysylasz kod mailem do osob, ktore ci to sprawdza a one odpisuja


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 28.01.2020, 10:00:06
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Code review robi się zazwyczaj według standardów przyjętych przez wszystkich pracowników w firmie. Zależy też od polityki pisania testów np podejście nie testujemy dopóki to czegoś nie udowadnia.
Może pomóc: https://endler.dev/awesome-static-analysis/#php


--------------------
Go to the top of the page
+Quote Post
Malinaa
post 28.01.2020, 11:42:03
Post #7





Grupa: Zarejestrowani
Postów: 518
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 28.01.2020, 09:55:41 ) *
Jesli uzywasz github - to w githbu
Jesli uzywasz gitlab - to w gitlab
Jesli uzywasz czegos innego - to w tym czyms innym
Jesli nie uzywasz nic to wysylasz kod mailem do osob, ktore ci to sprawdza a one odpisuja


Nie używam Git'a (github) - jak go użyć do takiego "kawałka" kodu (z kosmosu)?
Stąd prośba nospor sprawdź mi ten kod.

viking Dzięki za info.


Ten post edytował Malinaa 28.01.2020, 11:43:10


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 28.01.2020, 12:05:23
Post #8





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004






Uzywaj === a nie ==
Ten kod: (float) str_replace(',', '.', powinien poleciec do funkcji bo jest odpalany 1000 razy

Warunki z tak kobylastych IFow
if (numberOfDigitsAfterComma($data['clientDayRate']) > 6 || numberOfDigitsAfterComma($data['clientOver50Rate']) > 6 || numberOfDigitsAfterComma($data['clientOver100Rate']) > 6 || numberOfDigitsAfterComma($data['clientNightRate']) > 6 || numberOfDigitsAfterComma($data['clientOvernightRate']) > 6 || numberOfDigitsAfterComma($data['clientMonthRate']) > 6 || numberOfDigitsAfterComma($data['clientPieceRate']) > 6 || numberOfDigitsAfterComma($data['workerDayRate']) > 2 || numberOfDigitsAfterComma($data['workerMonthRate']) > 2 || numberOfDigitsAfterComma($data['workerPieceRate']) > 2
powinny poleciec do funcji


if (!empty($errors)) {
return $errors;
} else {

Ten ELSE jest zbedny. Unikaj zbednych zagniezdzen. To powinno byc tak:
if (!empty($errors)) {
return $errors;
}
// a tu kod co byl w ELSE


$idRate = $this->database->lastInsertId();
$rowID = $this->database->query('SELECT id_rate_labour
FROM rate_labour
ORDER BY id_rate_labour
DESC
LIMIT 1');
$rowID = $rowID->fetch();

PO co takie kombinacje? lastInsertId przeciez zwraca ci ostatnie ID. Po co jeszcze raz wyciagasz je zapytaniem?

Rzutuj wartosci do typow jakimi sa
$rowID = (int) $rowID->fetch();

NIe array() a []

Baza danych nie powinna byc inicjalizowana w tym serwisie, tylko do niego ewentualnei juz przekazana

czemu tak?
$rateData = [];
$rateData['client_day'] = $clientDayRate;
$rateData['client_night'] = $clientNightRate;
$rateData['client_other'] = $clientOtherRate;
$rateData['worker_day'] = $workerDayRate;
$rateData['worker_night'] = $workerNightRate;
$rateData['worker_other'] = $workerOtherRate;
$rateData['valid_start'] = $data['validStart'];
$rateData['valid_end'] = $data['validEnd'];

Nie lepiej
$rateData = [
'client_day' => $clientDayRate,
//.....
];

Cytat
Nie używam Git'a (github)
Czas najwyzszy zaczac. Krzywde sobie robisz bez tego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 28.01.2020, 12:26:31
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


phpstan i php-cs-fixer też pomogą
Go to the top of the page
+Quote Post
Malinaa
post 28.01.2020, 12:47:52
Post #10





Grupa: Zarejestrowani
Postów: 518
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


nospor Jak Ty to zrobiłeś? Naucz!
Próbowałem ręcznie, ale np. przy array() a [] stwierdziłem, że to jest to samo. Nie jest?
Po godzinie kombinacji stwierdziłem, że nie da się zrobić dobrze takiej analizy bez odpowiednich narzędzi.
Potrzebne korepetycje z Git'a wink.gif


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 28.01.2020, 12:55:31
Post #11





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Próbowałem ręcznie, ale np. przy array() a [] stwierdziłem, że to jest to samo. Nie jest?

Dla php to bez roznicy. CHodzi o to,ze teraz poprostu uzywa sie wersji skroconej [] i juz smile.gif


Cytat
nospor Jak Ty to zrobiłeś? Naucz!

To i tak tylko pare rzeczy poprawilem. Prawdziwe fachury kazaly by ci to poprostu przepisac wink.gif
Tak czy siak chodzi o praktyke i posiadanie kogos lepszego od siebie, kto sprawdzi kod.
Poczytaj tez ksiazle "Clean Code" - przyklady odnosnie Java, ale wszystko praktycznie da sie przeniesc na php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 28.01.2020, 13:32:23
Post #12





Grupa: Zarejestrowani
Postów: 518
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Używałeś do tej analizy jakiś narzędzi, czy popatrzyłeś na kod (praktyka) i to wszystko? Jak z tym Git'em?
Jeśli tylko praktyka to niestety nie mam takiej, bo z każdą linią kodu coraz głębiej zakopywałem się.
W zasadzie na tyle dawno nie siedziałem w PHP, że dla mnie array() a [] to to samo, a używa się wersji skróconej.
Dzięki, że mnie wyciągnąłeś smile.gif


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 28.01.2020, 15:17:55
Post #13





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Narzedzi do analize tego kodu tutaj? Nie, wszystko bylo widac na gole oko.

Poprzednicy podali tutaj pare fajnych narzedzi. Zainteresuj sie nimi a na pewno pomoga

edit: z rzeczy ktore latwo zmienic a nie wiedziec czemu dopiero teraz zauwazylem to brak typowania. uzywasz php7? zacznij wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 29.01.2020, 13:41:25
Post #14





Grupa: Zarejestrowani
Postów: 518
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Chcę zapytać o:
Cytat
Baza danych nie powinna byc inicjalizowana w tym serwisie, tylko do niego ewentualnei juz przekazana


Jak się domyślam mowa tutaj o tym (jaki serwis, co masz na myśli)?

  1. public $database;
  2. public function saveNew($data, $idUser = 1) {
  3. $this->database = new PDO([
  4. 'pdo' => CRM::getDatabase(),
  5. 'host' => DATABASE_HOSTNAME,
  6. 'dbname' => DATABASE_BASENAME,
  7. 'user' => DATABASE_USERNAME,
  8. 'password' => DATABASE_PASSWORD,
  9. ]);


Nie wiem, czy ten kod masz na myśli, ale na moje oko od początku mi to nie pasuje.
Zastanawiam się, tzn. mam pytanie jak zrobić to dobrze?
Dawno klas nie pisałem, a tutaj jest i PHP obiektowe itd., nie znam takiego zapisu:
'pdo' => CRM::getDatabase(), co to jest?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
Lord
post 29.01.2020, 14:14:46
Post #15





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Cytat(Malinaa @ 29.01.2020, 14:41:25 ) *
Chcę zapytać o:


Jak się domyślam mowa tutaj o tym (jaki serwis, co masz na myśli)?

  1. public $database;
  2. public function saveNew($data, $idUser = 1) {
  3. $this->database = new PDO([
  4. 'pdo' => CRM::getDatabase(),
  5. 'host' => DATABASE_HOSTNAME,
  6. 'dbname' => DATABASE_BASENAME,
  7. 'user' => DATABASE_USERNAME,
  8. 'password' => DATABASE_PASSWORD,
  9. ]);


Nie wiem, czy ten kod masz na myśli, ale na moje oko od początku mi to nie pasuje.
Zastanawiam się, tzn. mam pytanie jak zrobić to dobrze?
Dawno klas nie pisałem, a tutaj jest i PHP obiektowe itd., nie znam takiego zapisu:
'pdo' => CRM::getDatabase(), co to jest?


https://lukasz-socha.pl/php/wzorce-projekto...ency-injection/

nie najlepszy może przykład, ale to juź wpisz i poszukaj dependency injection w google
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 21:17