heygrc
Manifesto

Twój linter jest ślepy na frameworki.

Lintery i skanery wykrywają defekty i klasy podatności. Zmiana może być idealnym kodem, a mimo to naruszać obowiązek compliance, ponieważ obowiązek nie jest właściwością kodu, lecz właściwością frameworka.

Analiza statyczna jest bardzo dobra w odpowiedzi na konkretne pytanie: czy ten kod jest błędny? Wykrywa odwołania do null, iniekcje, niebezpieczną deserializację, znane złe wzorce. Nie może jednak zadać zupełnie innego pytania: czy ta zmiana narusza obowiązek zawarty w regulacjach?

Dwa różne pytania

Linter rozumuje na podstawie kodu przed nim: typy, przepływ sterowania, zanieczyszczenie, znane sygnatury podatności. Jest ślepy na frameworki z założenia, ponieważ reguły, które egzekwuje, są uniwersalne, takie same w każdym repozytorium na świecie.

Compliance jest odwrotnością. Czy zmiana jest problemem, zależy od faktów, których kod nie zawiera: które frameworki musi spełniać Twoja firma, co uważa się za dane osobowe w Twojej dziedzinie, jak długo wolno je przechowywać, dokąd mogą płynąć. Ten sam diff może być w pełni zgodny w jednej firmie i stanowić znalezisko w innej.

Zmiana, która jest poprawna i niezgodna jednocześnie

Dodaj linię logowania, która rejestruje pełne ciało żądania, aby zdebugować przepływ zamówienia. Kod jest poprawny. Kompiluje się, działa, żaden linter nie protestuje, testy przechodzą. Jednocześnie zapisuje adres e-mail i adres klienta w logach, co to więcej danych osobowych, niż wymaga cel, i to już jest terytorium GDPR Art. 5(1)(c).

Żadne narzędzie oceniające jakość kodu nie zasygnalizuje tego, ponieważ nic w kodzie nie jest niskiej jakości. Problem jest widoczny tylko wtedy, gdy czytasz zmianę w kontekście obowiązków ochrony danych, które firma rzeczywiście ma. To warstwa świadoma frameworków, której lintery nie posiadają.

Brakująca warstwa, a nie zastępstwo

To nie jest argument przeciwko linterom ani skanerom. Zachowaj je; wykrywają rzeczy, których heygrc nigdy nie złapie. To argument, że istnieje cała kategoria ryzyka powyżej nich – obowiązki frameworków – której żadna ilość analizy jakości kodu nie jest w stanie dostrzec.

heygrc to właśnie ta warstwa. Czyta zmianę w kontekście Twoich frameworków i cytuje konkretną kontrolę, dzięki czemu ślepa plama frameworkowa w Twoich obecnych narzędziach otrzymuje dodatkowy zestaw oczu.