redhat-developer / redhat-developer/vscode-java
Annotation processor in project incorrectly yields "[Java] <generated type> cannot be resolved to a type"
まだ誰も着手していません。
- 主要言語
- TypeScript
- スター
- 2.3k
- フォーク
- 546
- 平均マージ
- 20時間 1分
- マージ済み PR(30日)
- 11
説明
I have access to a specific (large) project here which makes use of
@SupportedAnnotationTypes({"the.namespace.TheAnnotation"})
@SupportedSourceVersion(SourceVersion.RELEASE_10)
to create an annotation processor
public class TheAnnotationProcessor extends AbstractProcessor {
for an annotation the.namespace.TheAnnotation in that project
public @interface TheAnnotation {
which produces an interface (e.g. GeneratedInterfaceSpecificMapper, see below) with plenty of default. In the very same project, this annotation is also applied to some classes,
@TheAnnotation(Specific.class)
public class SpecificMapper implements GeneratedInterfaceSpecificMapper {
Evidently, maven discovers the annotation, the annotation processor, runs code generation through the processor (files appear in generated-sources/annotations/...) and is able to also compile the source files that make use of the GeneratedInterfaceSpecificMapper.
The vscode plugin flags the type GeneratedInterfaceSpecificMapper as faulty, with "[Java] cannot be resolved to a type". This seems to indicate that the vscode plugin is not aware of the generated artefacts in generated-sources/annotations/...
I have had a look at https://www.baeldung.com/java-annotation-processing-builder to see whether this produces the error - alas, that setup there seems to be too clean / too simplistic to trigger the problem.
Environment
- Operating System: Linux Fedora 28
- JDK version: 10.0.2
- Visual Studio Code version: 1.28.2
- Java extension version: java-0.33.0-1252.vsix
Steps To Reproduce
<large project, will try to find time to reduce>
Current Result
- builds fine in maven
- red squiggles in IDE / syntax check failure
Expected Result
- builds fine in maven
- no red squiggles in IDE
Additional Informations
Not sure whether this related to the issues reported for Lombok - e.g #580 or #458
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
Java 拡張機能のアノテーション処理パスと、レポートで説明されている generated-sources/annotations/... への出力から始め、参照されているアノテーションプロセッサと GeneratedInterfaceSpecificMapper を使用して Maven と IDE の不一致を再現してください。縮小したプロジェクトまたは同等の再現が必要であり、Maven のビルドが引き続き成功し、IDE が生成された型を未解決として報告しなくなれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java, typescript, vscode
- 領域
- developer-experience, devtools
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 30/100