跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • idea 插件开发
未分類
2 12 月 2020

idea 插件开发

idea 插件开发

資深大佬 : Aresxue 2

idea 插件开发的文档太贫瘠了,这里想解析 BeanUtils.copyproperties 这样的属性 copy 的字段的引用,大致就是点击字段然后展示 copy 或者被 copy 的地方,现在遇到瓶颈了,就是我拿到这个字段所在的类 PsiClass 和 BeanUtils.copyproperties 这个方法的 PsiReference 后不知道怎么把这两个结合在一起,有懂的朋友请帮助

大佬有話說 (4)

  • 資深大佬 : retanoj

    我觉得我能解决,因为我写了个
    https://plugins.jetbrains.com/plugin/15120-momo-code-sec-inspector-java-

    但是我实在没看懂主的描述需求

  • 主 資深大佬 : Aresxue

    @retanoj 那就纯粹需求描述,现在代码里有很多 BeanUtils.copyproperties (或其他的)属性 copy 操作,但对于这种 copy 点击 idea 中的 field,是无法展示该字段的 usages 的,在查看代码时变量的修改就非常难以追踪,现在我想完成一个插件点击 field 就展示 BeanUtils.copyproperties 的地方,之前的实现思路是按照 java 反射那套思路来的(获取 field 所在 Class,找到该 class 的对象, 当这个对象被 BeanUtils.copyproperties 时,假设是 source,就获取 target 的 class,在那个 class 中按照 field 的 name 和 type 寻找,找到了就说明匹配上了,这个 BeanUtils.copyproperties 就被展现出来)

  • 資深大佬 : retanoj

    @Aresxue
    听起来可行,但应该需要多次应用 Usages of 查询
    1. 从 field 找到当前 PsiClass
    2. 从当前 PsiClass 调用 Usages of 找到使用点(应该是找 New Instance creation 吧)
    3. 从 New Instance 在 PsiNewXXXX 上拿到变量名称(或者 Reference ?)
    4. 从这个 Reference 调用 Usages of 找到 BeanUtils.copyProperties()使用点
    5. 如果为 source,则拿到 dest 的变量 PsiReference
    6. 从 dest 的 PsiReference 能找到变量定义点,接下来就再看怎么用了

    Usages of 这个功能应该与 FindUsagesManager 和 FindUsagesHandler 有关,具体用法还得再看下

  • 資深大佬 : retanoj

    @Aresxue
    Usages of 的用法,我简单试了一下,仅供参考
    “`
    PsiLocalVariable localVariable; // 假如要从一个 localVariable 开始找

    FindUsagesHandler handler =
    JavaFindUsagesHandlerFactory.getInstance(project).createFindUsagesHandler(localVariable, false);

    Collection<PsiReference> referenceCollection =
    handler.findReferencesToHighlight(localVariable, localVariable.getUseScope());
    “`

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具