Często mam zadanie debugowania aplikacji w mojej pracy. Jest to aplikacja BI, którą wdrażamy w firmach, która obejmuje środowisko testowe i środowisko produkcyjne. Zastanawiam się, czy istnieją jakieś aplikacje / narzędzia / metody, które ludzie mogą sugerować na podstawie tych ograniczeń:
Debugera nie można używać na stronie klienta ani lokalnie, ponieważ oprogramowanie zależy od niestandardowych aplikacji innych firm, dla których nie mamy środowisk testowych. (EDYCJA: aby być uczciwym, w niektórych przypadkach możliwe jest lokalne debugowanie. Jeśli użyjemy tylko kodu podstawowego. Znaczna część problematycznego kodu znajduje się w bibliotece DLL, która zawiera komunikację specyficzną dla strony trzeciej: gniazda, potoki przetwarzania, wywołania mydła, niestandardowa logika, która zmienia zachowanie kodu podstawowego. Zwykle podczas implementacji lub rozszerzenia dla klienta pisalibyśmy nowy kod w tym obszarze).
W naszych aplikacjach praktycznie nie jest rejestrowane. Nie ma testów jednostkowych.
Kontrola wersji ma tylko 1 wersję pełnego rozwiązania (przy użyciu bezpiecznego źródła 2005). Nie można więc uzyskać poprzedniej wersji całego rozwiązania, a jedynie pojedyncze pliki. (Chyba że ktoś wie, jak to obejść).
Nie można odtworzyć lokalnie, często nie można odtworzyć w środowisku testowym (wysokie prawdopodobieństwo, że testy i produkcja nie są tą samą wersją).
Istnieje duża szansa, że wersja, której używa klient, różni się od wersji bezpiecznej dla źródła. Jest tak, ponieważ poszczególne pliki są aktualizowane, które mają wbudowaną niestandardową logikę dla tego konkretnego klienta. Często zdarza się, że aktualizuje się plik binarny, co wymaga zmian w kilku innych plikach binarnych, ale po dokonaniu zatwierdzenia nikt nie ma na ten temat żadnego zapisu ani wiedzy. Dość częstym błędem, jaki widzę, jest „Nie znaleziono funkcji / metody” lub „Wywołanie metody ma za dużo / za mało określonych parametrów” w środowisku klienta.
To jest rozwiązanie .NET VB
Nie można zainstalować żadnego oprogramowania na stronach klienckich, ale można lokalnie
Nasza aplikacja jest niezwykle konfigurowalna, ale niestety logika dostosowywania jest rozłożona na wszystkie klasy i pliki, od interfejsu użytkownika aż po warstwę danych, w tym niestandardowe zmiany w bazie danych dla poszczególnych klientów.
W kodzie nie ma praktycznie żadnych komentarzy. Brak dokumentacji dotyczącej architektury. Brak dokumentacji dotyczącej interfejsu API. Jedyne, co mamy, to setki setek łańcuchów e-mail, które nieco wyjaśniają, co się dzieje. Jedyni ludzie, którzy znają kod, to ci, którzy go napisali, ale nie są już programistami, więc nie angażują się zbytnio.
I zanim to powiesz ... tak, wiem; Ja też chcę się zastrzelić. To nie pomaga, że jest kod spaghetti, setki ostrzeżeń kompilatora i zepsuty polimorfizm, który NAPRAWDĘ powinien zostać naprawiony, ale nie mam w tym nic do powiedzenia.
Najczęstsze rodzaje błędów, na które natrafiam, to błędy odniesienia o wartości zerowej, niepoprawne rzutowania i brak zgodności funkcji / podpisów funkcji. Czasami mam szczęście, a przeglądarka zdarzeń rejestruje komunikat o klasie, metodzie i wyjątku. To nie jest najbardziej pomocne, ale wciąż coś. Najgorsze są błędy, które nie mają śladu, żadnych kroków repro oprócz zrzutu ekranu i są ogólnymi komunikatami o błędach, jak te wspomniane powyżej. Czasami nie można dowiedzieć się, dlaczego się wydarzyły, tylko modlić się, aby środowisko nie było odpowiednio skonfigurowane i że zniknie później.
Wiem, że to brzmi jak grzeczność i do pewnego stopnia tak jest. Ale desperacko szukam opcji. Czy mogę użyć innych metod / narzędzi?