簡體   English   中英

將靜態代碼分析從單獨的進程移動到Eclipse插件

[英]Moving static code analysis from a separate process to an Eclipse plug-in

我目前正在開發一個用於靜態代碼分析器的Eclipse插件。 分析器是用Java編寫的。 到目前為止,Eclipse插件使用自己的啟動配置類型以及JavaLaunchDelegate的子類來在單獨的進程中執行代碼分析器。 Eclipse插件和代碼分析器通過新進程的stdin和stdout進行通信。 這很難看:-P

現在,我們的目標是清理它。 首先,我們將代碼分析器轉換為jar文件,而不僅僅是Eclipse插件。 其次,我們用適當的Java接口替換了基於stdio的通信:代碼分析器為Eclipse插件提供了一個API。 一切正常。

但是,Eclipse插件仍然使用自己的啟動配置類型及其子類JavaLaunchDelegate來運行分析。 這意味着,由於代碼分析器本身現在是一個Eclipse插件,因此分析在同一個過程中完成。 但是,Eclipse插件仍然使用代碼分析器啟動額外的進程而不使用它。

舊設置我們還需要什么?

我很確定,我們可以將JavaLaunchDelegate轉換為簡單的LaunchConfigurationDelegate 這應該可以防止Eclipse插件啟動無用的進程。

接下來,在plugin.xml ,我們聲明自己的啟動配置類型,如下所示:

 <extension
       point="org.eclipse.debug.core.launchConfigurationTypes">
    <launchConfigurationType
          delegate="com.example.LaunchDelegate"
          id="com.example.launch.config"
          modes="run,debug"
          name="Launch"
          sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
          sourcePathComputerId="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer">
    </launchConfigurationType>
 </extension>

在這里,我不確定是否可以刪除sourceLocatorIdsourcePathComputerId屬性:啟動配置仍然啟動Java代碼,但不再在單獨的進程中啟動。 當這些屬性與不是JavaLaunchDelegate的啟動委托一起使用時,這些屬性是否有意義?

最后,我不知道是否仍然使用啟動配置是一個好主意。 這是因為我們並沒有真正啟動額外的進程,而是在Eclipse進程中執行的操作。 是否適合在此用例中使用啟動配置? 此外,我們當前使用AbstractLaunchConfigurationTabGroup的子類來配置分析的參數。 是否有替代自己的啟動配置類型,允許我們在Eclipse進程中啟動操作並通過GUI為此操作提供參數?

問題摘要

  1. 我們可以更換的JavaLaunchDelegate用一個簡單的LaunchConfigurationDelegate
  2. 我們可以從自己的啟動配置類型聲明中刪除sourceLocatorIdsourcePathComputerId屬性嗎?
  3. 是否適合使用啟動配置來執行在Eclipse進程中運行的靜態代碼分析?
  4. 如果不是,是否有自己的啟動配置類型的替代方法允許我們在Eclipse進程中啟動操作並通過GUI為此操作提供參數?

我們現在使用一個簡單的LaunchConfigurationDelegate ,我們從自己的啟動配置類型聲明中刪除了sourceLocatorIdsourcePathComputerId屬性。 這確實可以防止不必要的過程。 此外,我們沒有注意到調試的任何問題。 因此,我認為問題1和2已經解決了。 關於問題3和4:簡單的啟動配置現在對我們來說很好,所以我們堅持下去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM