gpt4 book ai didi

java - 将静态代码分析从单独的进程转移到 Eclipse 插件

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:23 24 4
gpt4 key购买 nike

我目前正在开发静态代码分析器的 Eclipse 插件。该分析器是用 Java 编写的。到目前为止,Eclipse 插件使用自己的启动配置类型以及 JavaLaunchDelegate 的子类在单独的进程中执行代码分析器。 Eclipse 插件和代码分析器通过新进程的 stdin 和 stdout 进行通信。这是相当难看的:-P

现在,我们的目标是清理这个问题。首先,我们将代码分析器转换为不仅仅是一个jar文件,而且还是一个Eclipse插件。其次,我们用适当的 Java 接口(interface)替换了基于 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 的启动委托(delegate)一起使用时,它们有意义吗?

最后,我不知道仍然使用启动配置是否是一个好主意。这是因为我们实际上并没有启动额外的进程,而是在 Eclipse 进程中执行的操作。对于此用例使用启动配置是否合适?此外,我们目前使用 AbstractLaunchConfigurationTabGroup 的子类来配置分析的参数。是否有替代自己的启动配置类型,允许我们在 Eclipse 进程中启动一个操作并通过 GUI 为该操作提供参数?

问题摘要

  1. 我们可以用简单的 LaunchConfigurationDelegate 替换 JavaLaunchDelegate 吗?
  2. 我们可以从自己的启动配置类型声明中删除 sourceLocatorIdsourcePathComputerId 属性吗?
  3. 使用启动配置来执行在 Eclipse 进程中运行的静态代码分析是否合适?
  4. 如果不是,是否有替代自己的启动配置类型的方法,允许我们在 Eclipse 进程中启动操作并通过 GUI 为该操作提供参数?

最佳答案

我们现在使用一个简单的 LaunchConfigurationDelegate ,并从自己的启动配置类型声明中删除了 sourceLocatorIdsourcePathComputerId 属性。这确实避免了不必要的过程。此外,我们没有注意到调试有任何问题。因此,我认为问题1和2已经解决。关于问题 3 和 4:简单的启动配置现在对我们来说效果很好,所以我们坚持使用它。

关于java - 将静态代码分析从单独的进程转移到 Eclipse 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38352069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com