IDEA中feature文件的一个bug

Posted demo杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA中feature文件的一个bug相关的知识,希望对你有一定的参考价值。

描述:

项目使用了Cucumber,对着 feature 文件内部右键运行的时候,有时候会出现右键菜单不可用且无法消除的情况,必须切换窗口来消除这个菜单。

这个不知道是 IDEA 还是它自带的 Gherkin 插件的一个bug,不是一个大问题,但是总是会误操作点出来。

bug复现:

当在 feature(gherkin 语法)文件中,如果对着非 Example 的一个数据右键:

技术图片

就会弹出以下提示,说找到两个Handler,要你选择一个,随便选择,OK 还是 Cancel 也随便:

技术图片

然后又会弹出一次,也随便选:

图:略

然后就会弹出这个右键菜单:

这个菜单是消除不了的,除非你切换程序再切回来,它才会消失。

而且这个菜单你可以点击,但没有高亮提示你当前鼠标是处于哪个选项。

技术图片

解决:

先说怎么解决,这个解决方法治标不治本,除非你去修改 IDEA 的源码。

想给 IDEA 提 Issue,不过好像并不是直接能在 Github 上面提,有点麻烦就暂时算了。

通过对 IDEA 源码远程 Debug 发现这两个 Handler 的作用:

  • GherkinStepRenameHandler 是用来重命名 Step 的

  • GherkinInplaceRenameHandler 是用来重命名 Example 中的变量的

一般重命名都是使用 Shift + F6 操作的,但也支持右键菜单操作。

解决方法就是,把其中一个去掉,就不会弹出确认框,也就不会导致后续菜单卡画面。

只要在 gherkin.jar 中的 plugin.xml 中去掉其中一个即可。

1 找到插件位置

Community 版本:~.IdeaIC2019.2pluginsgherkinlib
or
Ultimate 版本:[IDEA 安装路径]pluginsgherkinlib

注意:两个版本的插件位置是不一样的。

技术图片

2 提取 jar 中的 META-INF/plugin.xml

jar xf gherkin.jar META-INF/plugin.xml

3 修改 META-INF/plugin.xml

删掉其中的一个 Handler:

我平时用不到 Example 的变量重命名,所以就选择删掉 GherkinInplaceRenameHandler。

技术图片

4 将 META-INF/plugin.xml 更新回 jar中

jar uf gherkin.jar META-INF/plugin.xml

注意:这一步需要关闭 IDEA,不然 jar 会被程序占用而导致更新失败。

最好将 gherkin.jar 备份一下。

最后记得删掉提取出来的文件。

5 查看是否解决

对者一个数据右键,可以看到,直接就弹出右键菜单了,并且可以选择和取消:

技术图片

以上是关于IDEA中feature文件的一个bug的主要内容,如果未能解决你的问题,请参考以下文章

GitHub-分支管理02-BUG与Feature分支

idea冲突文件没有merge窗口

Git如何合并分支代码

IDEA关于前端调试的一个小bug

vscode代码片段建议bug

修复 IntelliJ IDEA 中 Cucumber 6.8.1运行找不到类的问题