CodeAnalysis icon indicating copy to clipboard operation
CodeAnalysis copied to clipboard

提供IDE插件(Jetbrains/VSCode/...)

Open aaaa-j opened this issue 2 years ago • 8 comments

aaaa-j avatar Apr 27 '22 09:04 aaaa-j

@aaaa-j

我能够开发JetBrains平台相关插件,请问有计划实现的feature list吗?

Akitata avatar Apr 27 '22 13:04 Akitata

@aaaa-j

我能够开发JetBrains平台相关插件,请问有计划实现的feature list吗?

@Akitata 感谢您的热心参与!

目前计划实现的feature:

  1. 支持扫描参数配置、启动扫描操作
  2. 扫描完成后,在ide下方区域展示问题列表,点击单个问题,在代码编辑区自动跳转到对应文件的问题所在行(高亮显示)
  3. 在代码编辑区问题所在代码行处展示问题提示信息(类似IDE自带语法告警展示)
  4. 支持对当前打开的文件进行快速扫描,展示当前文件结果
  5. ...

JetBrains 的pylint插件,我们认为是一个比较好的范例,可以参考。 以上是目前的初步计划,如果您有什么好的想法,也欢迎一起探讨,打造一款好用的IDE插件。

bensonhome avatar Apr 27 '22 14:04 bensonhome

@bensonhome

感谢回复,您提出这些功能我评估下来都是可以结合JetBrains现有的api做出实现的。

我的问题是插件应该与CodeAnalysis Server之间的交互该如何处理?

目前看CodeAnalysis是需要依赖于Git/SVN去完成扫描,在IDE中用户可能有以下几种情况:

  1. 项目可能未使用Git/SVN管理项目或未关联remote repository
  2. 用户想要在commit前做一次扫描以发现问题
  3. 对当前打开的文件进行快速扫描,展示当前文件结果(就是您提到的第4条feature)

针对这些情况,应该需要评估一下CodeAnalysis Server能否在当前架构下去新增一种非Git/SVN类型的项目进行扫描。

我认为交互模式可能是需要通过OpenApi去上传一个代码的zip包或者一个代码文件到Server,Server去分发给CodeAnalysis Client节点扫描后,结果上报给Server,插件再去Server获取结果在IDE中完成相应展示逻辑。

另一种可能实现的交互模式是让用户自己在本地装一个CodeAnalysis Client去做一次localscan,但我认为这不是很优雅的方式,毕竟我们不像pylint一样只是个不到2M的小工具,动辄几个G的扫描工具包足以劝退很多用户。

希望各位可以帮忙看下这个问题,谢谢!

Akitata avatar Apr 27 '22 15:04 Akitata

@Akitata 感谢您的思考和宝贵建议!

  1. 对于IDE的用户使用场景上,和我们的想法是一致的。
  2. 对于IDE场景,我们确实也计划(正在排期实现)去支持对非SCM管理的项目进行扫描(也就是并不要求项目与Git/SVN关联)。
  3. 实现方式上,我们计划是通过localscan方式在本地扫描,扫描工具只会在首次进行下载,后续只是检查和更新,并不会增加太多成本。 不建议通过上传代码到远端机器扫描的方式,理由如下: -(1)拷贝和传输代码文件,存在代码安全风险,不是一个好的方式; -(2)远端扫描会增加传输时间和机器资源成本,不如直接在本地扫描; -(3)对于编译型工具,需要依赖本地的编译环境,在本地执行,可以复用本地环境,远端环境不一定能满足扫描。

bensonhome avatar Apr 29 '22 05:04 bensonhome

@Akitata client已经支持扫描非SCM管理的代码(通过quickscan命令扫描),是否有兴趣实现JetBrains插件呢?

bensonhome avatar Jul 11 '22 08:07 bensonhome

@Akitata client已经支持扫描非SCM管理的代码(通过quickscan命令扫描),是否有兴趣实现JetBrains插件呢?

我有兴趣都实现下,两个平台都有插件开发经验,不知是另外开一个仓库还是?(考虑到插件复杂度以及后续问题规模)

tuchg avatar Oct 25 '22 12:10 tuchg

@Akitata client已经支持扫描非SCM管理的代码(通过quickscan命令扫描),是否有兴趣实现JetBrains插件呢?

我有兴趣都实现下,两个平台都有插件开发经验,不知是另外开一个仓库还是?(考虑到插件复杂度以及后续问题规模)

@tuchg 感谢您的参与,可以fork我们的仓库,在plugins/下创建一个插件子目录来开发(类似已有的jenkins插件),后面合入到主仓库

bensonhome avatar Oct 26 '22 03:10 bensonhome

Akitata @bensonhome 我是在想 能否达成一种合作关系,而且 IDE 插件不比 jenkins,目前这个仓库已经够膨胀了 比如你们举例的 pylint 它也是分开的仓库,单独维护会好很多

tuchg avatar Oct 27 '22 10:10 tuchg