问题标签 [rubberduck]

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 投票
0 回答
267 浏览

parsing - 将rubyduck VBA语法适应python的麻烦(在java中工作)(antlr4运行时)

我实际上正在尝试调整此处列出的橡皮鸭语法以进行 python 解析。为此,我改变了语法中的语义谓词:

  • 在第 297 和 298 行从{_input.Lt(1).Text.Equals("A")}?{self.input.LT(1).getText().__eq__("A")}?

  • 在第 571 行从{_input.La(-1) == NEWLINE}?{self.input.LA(-1) == NEWLINE}?

然后我使用官方文档给出的标准命令编译语法:antlr4 -Dlanguage=Python2 VBALexer.g4 && antlr4 -Dlanguage=Python2 VBAParser.g4

此语法解析的结果如下:

然后我尝试解析以下简单的 VBA 代码:

使用标准 python 代码:

这给了我以下信息:

如果我打印树,我会得到以下信息:

但是,如果我使用以下方法使语法适应 java:

  • 在第 297 和 298 行从{_input.Lt(1).Text.Equals("A")}?{_input.LT(1).getText().equals("A")}?

  • 在第 571 行从{_input.La(-1) == NEWLINE}?{_input.LA(-1) == NEWLINE}?

然后运行语法解析(获得完全相同的警告)并使用 javac 编译代码,我可以grun在示例上正确运行:

这是我在 python 中的语义谓词中的一个简单的拼写错误吗?或者它可能是一个潜在的 antlr python 运行时错误?在此先感谢您的帮助!

0 投票
2 回答
775 浏览

rubberduck - 哪个版本的 Rubberduck 有有效的源代码控制?

我对使用 Rubberduck 很感兴趣,主要是因为它的 Github 源代码控制功能。但是,通过查看该项目的 Github 站点,我可以看到在最新版本中,该功能不是那么稳定。我的问题是,我应该使用什么版本?现在我真正关心的是拥有最稳定的源代码控制功能。我应该回到 v1.4.3 吗?或者在最近情况变得更糟之前,是否还有另一个更稳定的 2.X 版本?

0 投票
1 回答
411 浏览

rubberduck - 初始刷新时的 RubberDuck 解析错误

我安装了 RubberDuck 并打开了一个 Access 2007 数据库,用作代码测试场。当我单击 RD 工具栏上的刷新时,文本继续说Pending. 几次单击刷新按钮后,我打开Settings并取消选中/重新选中了一个随机复选框并单击Ok。那时我的刷新按钮文本显示Parse Error

然后我关闭了 MS Access 的所有实例并重新打开了数据库。我将最低日志记录级别更改为INFO,然后单击刷新按钮。

我的日志中确实有错误,但刷新按钮仍然显示Pending

橡皮鸭日志.txt:

修订后包含来自 MS Excel 2010 的错误日志:

0 投票
0 回答
288 浏览

vbe - Rubberduck:在 VBE 中不可用,但在加载项管理器中加载

可能类似于安装rubyduck后看不到插件?,但那里的答案(默认安装说明)对我不起作用。

在管理员安装 Rubberduck 2.1.0 或尝试使用 2.1.1.2450-pre 之后,我无法将插件视为菜单项或上下文菜单项。

但是所有预期的东西都在那里(在 Excel、Word、Powerpoint 中)
启动时的 SplashScreen:SplashScreen,Add-in-Manager 中的项目:Add-In-Manager,注册表中的键:Registry
但没有 Rubberduck 的菜单:VBE-Menu

我的系统:Win7 64 Pro(德语),Office 2010 32bit(德语)。

安装 2.0.13 时,在启动屏幕期间出现此异常:Exception_2.0.13但仍然没有日志文件。但在 VBE 中,Rubberduck 菜单项可用

0 投票
2 回答
310 浏览

vba - 我可以更改私有方法的可见性以便对它们进行单元测试吗

我在这个答案中看到,对于 Java,您可以在单元测试中将私有方法的可见性设置为“true”以测试该方法。是否有类似的东西可用于 VBA,以便我可以使用 RD-VBA 对私有方法进行单元测试?

如果不是,并且我有一个类可以在三个私有方法中计算出一些逻辑并将其返回给一个返回值,我是否注定只能给出一个输入值并测试返回值,而无法测试三个私有方法在两者之间做举重?

0 投票
1 回答
93 浏览

vba - 使用新的 MyTestableMacro .Run - 它有什么作用?

我正在关注RubberduckVBA 的教程,并且遇到了这段代码,但不知道它的真正作用:

我曾尝试搜索“With 语句中的新关键字”以及其他一些内容,但没有找到任何相关信息。

这不是我在做 VBA 的一年中看到的代码......

我也尝试过用一个也不起作用MyTestableMacro的方法命名一个类。Run

为了清楚起见,我想知道是什么MyTestableMacro。它是一个类、模块、临时宏吗?它里面有 Run A 方法/函数吗?

0 投票
1 回答
648 浏览

vba - 如何对 VBA 代码进行单元测试?- 两个不同的指针

我正在研究这个优秀的教程,但最后我的第一个测试没有通过,因为我可以清楚地看到我正在创建两个不同的数组(和指针),并试图将它们相互比较。

现在,我所看到的教程省略了我添加的几行代码,这也是我看到问题的地方,但没有这些行,代码甚至不会运行粗糙。

我的所有其他测试方法都与示例相同,除了我创建了以下几行的此方法 - 否则在运行测试时不会发生任何事情。

在这里我可以看到代码向南...

由于 64 位上的数字对于 Long 来说太长了,我不得不将类型从 Long 更改为教程中指向 LongLong 的数组指针。LongPtr 也有效

0 投票
0 回答
51 浏览

excel - 用 Rubberduck 替换函数或对象的路径

我遇到了几个场景,我想要一个健壮的方法来改变路径(blah.blah.blah.myObject)到一个对象或例程,我想知道这是否可以用 Rubberduck

第一种情况:我的代码中有很多例程调用Bar()。我决定使该函数成为类或 addin 的成员Foo。所以我想BarFoo.Bar(). IE

变成

对于一些公开声明的Foo对象


在另一种情况下,我在一个类中声明了以下类型:

呼叫站点如下所示:

我想将类型压缩成这样的单一类型

意味着我的呼叫站点变为


Rubberduck 是否有比简单的查找和替换更强大的方法来添加或删除函数/变量的路径元素?

0 投票
2 回答
484 浏览

vba - Rubberduck VBA:什么会导致解析器错误?

感谢这个问题:Rubberduck UI submenus are disabled,我知道我可能必须点击“刷新按钮”才能使用RubberduckVBA

可能出现的错误之一显然是“解析器错误”。

在此处输入图像描述

可能发生此类解析器错误的不同情况有哪些?

0 投票
2 回答
553 浏览

excel - 测试模块 VBA

我正在尝试编写一个测试模块来测试我在 VBA 中编写的模块之一。具体来说,我有一个 if 语句,我想通过为模块/函数提供错误的初始参数来触发使用测试模块。我想测试的模块/功能是:

我的测试模块是:

但是,当测试脚本到达“actual = ...”时,我收到 r1 变体的错误“Byref 参数类型不匹配”。请帮助我,我不知道我做错了什么。我已经成功安装了 Rubberduck。