Translate

[IntelliJ] Fortify Plugin 연동 시 오류 해결방법 - Plugin 'com.hp.fortify.intellij.scan' failed to initialize and will be disabled.




Fortify ver
 - HPE_Security_Fortify_SCA_and_Apps_17.10



증상

Fortify Static Code Analyzer 툴을 설치 후 IntelliJ 에 플러그인을 설치후 Restart 하게 되었을 때 아래와 같은 에러메시지가 발생하며 기동을 하지 않는다.

메시지대로 다시 기동을 하게되면 설치한 Fotify Plugin 이 사용중지로 되어있다.
1004lucifer

Plugin 'com.hp.fortify.intellij.scan' failed to initialize and will be disabled.  Please restart IntelliJ IDEA.

java.lang.NoSuchMethodError: 'com.intellij.idea.IdeaApplication com.intellij.idea.IdeaApplication.getInstance()'
    at com.hp.fortify.ide.idea.scan.AnalysisPlugin.getIdeaArgs(AnalysisPlugin.java:104)
    at com.hp.fortify.ide.idea.scan.AnalysisPlugin.initComponent(AnalysisPlugin.java:55)
    at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:503)
    at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:126)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$load$7(ApplicationImpl.java:414)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:169)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:591)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:537)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:59)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:156)
    at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:414)
    at com.intellij.idea.IdeaApplication.lambda$executeInitAppInEdt$5(IdeaApplication.java:150)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:384)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)








해결방법

Fortify 1.7의 Plugin 은 IntelliJ 2018 버전을 사용해야 한다.
1004lucifer
IntelliJ 2019 버전을 사용 시 위와같은 에러가 발생한다.





원인

로그의 말처럼 IdeaApplication.getInstance() 메소드가 없는지..
PC에 설치된 IntelliJ 의 jar파일을 디컴파일하여 소스를 확인을 해봤는데 정말 없다.






Fortify 1.7 버전이 출시한지 오래되어 현재의 IntelliJ 에서는 없는걸까 싶은 생각이 들었다.

JetBrains 회사가 IntelliJ Community 버전은 오픈소스로 공개했다는 기사가 생각나서 오픈소스를 찾았다.

https://github.com/JetBrains/intellij-community/tree/master/platform/platform-impl/src/com/intellij/idea


현재 master 버전에서는 IdeaApplication.java 파일이 없다..;;





브랜치 버전을 최신에서 조금씩 옛날로 되돌리며 IdeaApplication.java 파일이 있는지 확인을 하고 IdeaApplication.java 안에 getInstance() 메소드가 있는 버전을 찾았다.

https://github.com/JetBrains/intellij-community/tree/183/platform/platform-impl/src/com/intellij/idea


커밋 날짜가 2018.10.04 이니..
IntelliJ 2018 버전을 다운받아 플러그인을 설치해보니 정상적으로 되는것을 확인할 수 있었다.





댓글