Kolejny odcinek z serii „Mój plugin i analiza działania IntelliJ IDEA🙂
🔹 Problem:
Chcę złapać sytuację, gdy w ciele pętli (np. for) pojawia się wywołanie loggera. To dobry kandydat do ostrzeżenia. Logowanie w ciasnej pętli potrafi zabić wydajność.
🔹 PsiStatement:
To każdy pojedynczy statement w kodzie. Coś, co kończy się średnikiem albo jest blokiem {...}. Zatem, każda instrukcja, pętla, if, return. Wszystko to statementy.
Dzięki temu mogę prosić Intelij „przeskanuj mi tylko ciało tej pętli, nie resztę kodu”. Dla IntelliJ pętla for to węzeł PsiForStatement, a jego wnętrze to PsiStatement body.
🔹 PsiMethodCallExpression:
To moment, w którym kod coś wywołuje, np. metodę logger.info().
Mogę więc zapytać: "jaką metodę wywołujesz (info)? I na czym (logger)?”
🔍 Gdy uruchamiam moją inspekcję:
1️⃣ IntelliJ odwiedza każdą pętlę (np. PsiForStatement)
2️⃣ Z jej ciała (PsiStatement) wyciąga wszystkie wywołania metod (PsiMethodCallExpression)
3️⃣ Jeśli znajdzie logowanie (np. INFO), wtedy podkreśla pętlę i mówi „Ziomuś, może to zbyt częste logowanie... skoro tak być musi, to może zmienimy na DEBUG?
Fajnie taką strukturę można podejrzeć używając pluginu PSI Viewer 😉