2017-01-26 33 views
5

Użyłem odbicia, aby wywołać prywatnego konstruktora klasy w celu rozwiązania problemu niewystarczającego pokrycia gałęzi pokazanego w raporcie skanowania sonaru. To jest fragment kodu, nad którym pracowałem:Ulepszaj wysoki: manipulowanie specyfikatorem dostępu przy odbiciu, które jest używane do wywoływania prywatnego konstruktora

// reflection to access a private constructor of a class 
     Constructor<CMISBridgeMaps> c = CMISBridgeMaps.class.getDeclaredConstructor(new Class[0]); 
     c.setAccessible(true); 
     cmisBridgeMaps = c.newInstance(new Object[0]); 

Powyższy kod rozwiązał mój krytyczny problem z skanowaniem sonaru. Ale niestety wzmocnić obecnie pokazując manipulacji specifier Dostęp problem w następujący wiersz:

c.setAccessible(true); 

Jak mogę rozwiązać zarówno wzmocnić i sonarcube problemy? Każda pomoc będzie bardzo ceniona.

Odpowiedz

-2

Jeśli używasz Spring, możesz użyć ReflectionUtils.makeAccessible(field), aby udostępnić to pole. Fortify nie narzeka na tę zmianę.

Możesz przeczytać więcej na ten temat w this article.