[inne][PHP]Jak sprawnie i szybko wykonać analizę kodu PHP? |
[inne][PHP]Jak sprawnie i szybko wykonać analizę kodu PHP? |
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
|
|
|
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?
-------------------- |
|
|
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
|
|
|
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
|
|
|
28.01.2020, 09:55:41
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 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 |
|
|
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 -------------------- |
|
|
28.01.2020, 11:42:03
Post
#7
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 6 Dołączył: 21.07.2008 Ostrzeżenie: (0%) |
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
|
|
|
28.01.2020, 12:05:23
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 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 |
|
|
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ą
|
|
|
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 -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
28.01.2020, 12:55:31
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 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 Cytat nospor Jak Ty to zrobiłeś? Naucz! To i tak tylko pare rzeczy poprawilem. Prawdziwe fachury kazaly by ci to poprostu przepisac 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 |
|
|
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ś -------------------- I welcome you on the Internet >>> Design by Malina
|
|
|
28.01.2020, 15:17:55
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 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 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
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)?
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
|
|
|
29.01.2020, 14:14:46
Post
#15
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 32 Dołączył: 10.03.2004 Ostrzeżenie: (10%) |
Chcę zapytać o: Jak się domyślam mowa tutaj o tym (jaki serwis, co masz na myśli)?
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 |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 18:37 |