问题标签 [compilationunit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5025 浏览

java - Eclipse 抽象语法树差异

给定 Eclipse 中的以下代码:

您如何使用 Eclipse 比较 API (org.eclipse.compare) 找到 AST 差异?(这可以在插件之外完成吗?)

我正在查看以下 API

http://kickjava.com/src/org/eclipse/compare/structuremergeviewer/Differencer.java.htm http://kickjava.com/src/org/eclipse/jdt/internal/ui/compare/JavaStructureCreator.java.htm http://kickjava.com/src/org/eclipse/compare/CompareUI.java.htm

任何人都可以指向示例代码(或 API - 但首选代码)。

0 投票
1 回答
2186 浏览

java - Eclipse Java 编译器警告作为 ant 任务

我希望将 Eclipse Java 编译器警告作为 ant 任务(即没有 Eclipse)提供 - 理想情况下作为 ant 插件 - 但如果出现 Eclipse 警告,我希望巡航控制 ant 任务失败。对于以下警告

  • 对静态成员的非静态访问

  • 具有构造函数名称的方法

  • 没有 serialVersionUID 的可序列化类

  • 赋值无效

  • finally 没有正常完成

  • 在字符串连接中使用 char 数组

  • 隐藏的捕获块

  • 可变参数的不精确类型匹配

  • 空指针访问

  • 类型参数隐藏另一种类型

  • 方法不覆盖包可见方法

  • 接口方法与受保护的“对象”方法冲突

  • 从不读取局部变量

  • 未使用的本地或私有成员

  • 未经检查的泛型类型操作

  • 原始类型的使用

  • 使用最终类型绑定声明的泛型类型参数

  • 注解用作超级接口

我认为这意味着必须使用 eclipse 抽象语法树 - 并且必须创建一个 eclipse 编译单元。

问题是:(1)这已经完成了吗?(2) 如果没有 - 那么给出一个

object - 你如何(即在代码示例中)从这个 CompilationUnit 中获得警告?

(我知道 PMD、checkstyle 等 - 这些都不完全符合 eclipse 的编码风格偏好。我想要一个与 eclipse 编码风格完全匹配的 ant 任务)

0 投票
2 回答
773 浏览

java - 从 Eclipse 的 CompilationUnit 生成字节码

不是在做一个 Eclipse 插件项目;但是,我使用生成 org.eclipse.jdt.core.dom.CompilationUnit 实例的外部库。有没有办法从中生成 Java 字节码?

一些搜索显示,CompilationUnit 通常是通过为 Eclipse 项目注册一个自定义构建器,然后让 eclipse 调用它来构建的……但我找不到任何方法来利用它来构建独立的应用程序。

0 投票
1 回答
444 浏览

delegates - 如何从 IEditorActionDelegate 获取 IResource

我写了一个 IEditorActionDelegate 从 CompilationUnitEditor 的上下文菜单中触发。从那里我想在所选文本的起始行创建一个标记。我有一个 ITextSelection 和一个 IEditorPart 对象。如何从那些获取 IResource 以便调用 resource.createMarker()?

谢谢

0 投票
3 回答
4646 浏览

package - 艾达,看看我的包裹。(“预期的编译单元”?)

我已经摆脱了所有其他编译时错误,除了“预期的编译单元”,它在我的导入语句之后开始。我猜我需要创建一个包?如果是这样,我该怎么做?我有几个函数都存在于同一个 .ADB 文件中。

编辑:所以我试了一下......

查看我的包裹:

但是 gcc 在看到 MyPackage 时会尖叫:

马克西姆斯

0 投票
1 回答
433 浏览

eclipse - 为什么我在从 ASTParser.createASTs() 返回的 CompilationUnit 实例中得到 NullPointerException

我正在开发一个需要解析大量源文件的 Eclipse JDT 插件,因此我希望使用批处理方法 ASTParser.createASTs()。解析执行没有错误,但在它生成的 CompilationUnit 实例中,许多org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding实例的scope字段设置为null. 此设置为 null 发生在CompilationUnitDeclaration.cleanUp()方法中,这些方法在与我的插件代码无关的工作线程上调用(即,我的插件的类不会出现在cleanUp()方法调用堆栈上)。

我的解析代码如下所示(都rawSources在同一个项目中):

或者,我可以这样执行解析,不会出现这样的问题:

Helios 和 Indigo(最新版本构建)中都会出现此问题。我在 Eclipse Bugzilla 中提交了一个错误,但如果有人知道解决此问题的方法——或者我使用的 API 错误——我将非常感谢您的帮助。

拜伦

0 投票
2 回答
548 浏览

c++ - 编译单元之间不同的内联成员函数会破坏二进制兼容性吗?

我在一个大项目中有很多代码,它有两种通用类型的代码,一些以很好的 C++ 风格完成,并且已经过 C++ 专家的代码审查,而另一些则没有,也没有。没有大量 for 循环和未经检查的数组(堆)访问的代码包括读取和写入。幸运的是,所有这些对堆的访问都是通过一个类完成的。为了论证的缘故,我们称它为CArray

CArray完全在头文件中定义,因为它是模板化的。大致定义如下(仅显示相关部分):

(请假设构造函数、析构函数、复制构造函数、赋值运算符和相应的右值引用版本都做对了。基本上假设类的用户正确使用这个类所需的一切。

现在的问题是,如果我有一些编译单元(.cpp文件)定义CARRAY_BOUNDARY_DEBUGGING然后包含这个类(需要代码改进/审查的),但其他没有(坚如磐石的):

  1. 如果类经常通过复制、引用和右值引用(仅限 C++11)在 C++03 的编译单元边界上传递,这是否保证可以并且不会引入问题?C++11?

  2. 有没有更好的方法来尝试做到这一点?

编辑:澄清。我知道非inline函数必须遵守 C++03 标准第 3.2 节中所述的单一定义规则,但这是内联的。ODR 是否仍然适用,或者这里还有其他有效的东西?此外,C++03 标准规定“内联函数应在使用它的每个翻译单元中定义。”

0 投票
1 回答
5172 浏览

java - Eclipse 从 .java 文件创建 CompilationUnit

如何将 .java 文件加载到 CompilationUnit 中?例如,假设我当前的项目中有一个 A.java 文件。我想将它加载到 CompilationUnit 中,然后将其传递给 ASTParser。仅将其作为纯文本加载不是一个选项,因为在这种情况下,我似乎不会在 AST 中获得绑定信息。

0 投票
3 回答
1170 浏览

c++ - 当(执行时间)>>>(编译时间)时,多个编译单元仍然值得吗?

根据我的理解,创建具有多个编译单元的程序的主要好处是组件的可重用性和合并小更改时的编译时间更短。

我还认为(可能是错误的)与此相关的惩罚是,在它们自己的编译单元中定义的函数不能声明为“内联”。
[我认识到这个关键字实际上并不强制编译器内联扩展函数,但我的理解是它为编译器提供了更大的优化灵活性,因此值得尽可能包括在内。]

到目前为止,一切都很好?

我真正的问题是,当程序解决复杂的建模问题时,成本/收益分析是否仍然有利于多个编译单元,并且需要在集群上迭代其主循环数月才能生成有用的输出。

假设一个多编译单元程序需要几分钟来编译,而重新配置为单个编译单元的同一程序需要几个小时来编译......如果单个编译单元将所有函数声明为内联,从而提供更多优化机会,对我来说,期望执行时间可以减少几个百分点似乎是合理的,而不是弥补额外的编译时间。

对于这种情况,是否有好的经验法则,或者它是否严重依赖于情况?

0 投票
1 回答
106 浏览

gwt - GWT 编译器 - 编译单元和接口

这个问题是基于我收到的另一个问题的答案:https ://stackoverflow.com/a/3060233/323357

我的理解是在我的服务中使用接口声明返回类型和参数类型会迫使编译器生成多个编译单元,这会增加我的编译时间和生成文件的大小。

我不认为是这种情况,但最新版本的 gwt 编译器(2.4 - 2.5)是否有办法检测不必要的编译单元......

  • 对于局部变量和参数?

    /li>
  • 最终成员?

    /li>
  • 返回类型?

    /li>
  • 在服务?

    /li>