redhat-developer / redhat-developer/vscode-java

java.completion.importOrder (even the default) takes precedence over checkstyle specs

未关闭
#2,300 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

content-assist
主要语言
TypeScript
星标
2.3k
派生
546
平均合并
20 小时 1 分钟
30 天内合并 PR
11

描述

The java.completion.importOrder property, documented here
https://github.com/redhat-developer/vscode-java/blob/562afa80c0f705613c6ed3148b4d9eac82093b26/package.json#L519-L527
does not play well with checkstyle. If checkstyle specifies a different sort order for imports, the default importOrder setting will always be used instead. An unsatisfactory workaround is to attempt to specify a matching importOrder via this property. However, it's simply not as expressive as what is possible via Checkstyle, so finding an exact match is impossible.

This situation creates the highly likely event of imports being automatically sorted via the editor, and then the resulting code is in violation of checkstyle constraints, so a CI or regular build process will fail.

Here's an example of just such a sad situation: https://github.com/DSpace/DSpace/pull/8088/commits/23e93ff2857b7099ba8005d0b5b6c3b65f052f1c

Environment
  • Operating System: OSX
  • JDK version: openjdk version "11.0.2" 2019-01-15
  • Visual Studio Code version: 1.63.2
  • Java extension version: v1.3.0
Steps To Reproduce
  1. work on a Java project with a checkstyle configuration (one example: DSpace/DSspace)
  2. install a checkstyle plugin
  3. configure the checkstyle plugin to use the project configuration
  4. open a Java file
  5. click the yellow light bulb that appears over the Java file's imports, select 'organize imports'
  6. save the file
  7. validate the project against the custom checkstyle, it will fail, if the checkstyle specification for import order differs from the default value of the java.completion.importOrder property
Current Result

imports are always sorted to match the order specified by java.completion.importOrder

Expected Result

imports are sorted to match the order specified by checkstyle

Additional Informations

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从 package.json 第 519-527 行的 java.completion.importOrder 文档开始,使用带有自定义 Checkstyle 配置的项目复现 organize-imports 的步骤。将生成的 imports 与 Checkstyle 指定的顺序进行比较。当 Checkstyle 指定了不同顺序时,organize-imports 不再无条件应用默认顺序,即视为完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
java, typescript
领域
developer-experience, tooling
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。