Statische analyse is heel goed geworden in het beantwoorden van een specifieke vraag: is deze code fout? Het vindt de null-dereferentie, de injectie, de onveilige deserialisatie, het bekende slechte patroon. Wat het niet kan vragen, is een heel andere vraag: schendt deze wijziging een verplichting die in een regelgeving staat?
Twee verschillende vragen
Een linter redeneert over de code die voor hem ligt: typen, controleflow, taint, bekende kwetsbaarheidshandtekeningen. Het is per ontwerp framework-blind, omdat de regels die het afdwingt universeel zijn, dezelfde in elke repo ter wereld.
Compliance is het tegenovergestelde. Of een wijziging een probleem is, hangt af van feiten die de code niet bevat: welke frameworks jouw bedrijf moet nakomen, wat in jouw domein als persoonsgegevens geldt, hoe lang je deze mag bewaren, waar deze naartoe mogen stromen. Dezelfde diff kan in het ene bedrijf volledig compliant zijn en in het andere een bevinding.
De wijziging die correct en niet-compliant is tegelijkertijd
Voeg een logregel toe die het volledige verzoeklichaam registreert om een checkoutstroom te debuggen. De code is correct. Het compileert, het draait, geen linter protesteert, de tests slagen. Het schrijft ook een klant-e-mail en -adres naar je logs, wat meer persoonsgegevens zijn dan het doel vereist, en dat valt onder GDPR Art. 5(1)(c).
Geen tool die over codekwaliteit redeneert, zal dit markeren, omdat er niets mis is met de code. Het probleem is alleen zichtbaar als je de wijziging afzet tegen de gegevensbeschermingsverplichtingen die het bedrijf daadwerkelijk heeft. Dat is de framework-aware laag die linters niet hebben.
De ontbrekende laag, geen vervanging
Dit is geen argument tegen linters of scanners. Houd ze; ze vangen dingen die heygrc nooit zal vangen. Het is een argument dat er een hele categorie risico bovenop zit, frameworkverplichtingen, die geen hoeveelheid codekwaliteitsanalyse kan zien.
heygrc is die laag. Het leest de wijziging af tegen je frameworks en citeert de specifieke controle, zodat de framework-blind spot in je bestaande tooling een set ogen krijgt.