getappmap / getappmap/appmap-java

Labeled methods should always be recorded, even if they match trivial-method filters

オープン
#323 コメント 0 件 リアクション 1 件 担当者 2 名 GitHub で見る

@kgilpin がすでに取り組んでいます。

2026年4月1日 から。

  • #324 @copilot-swe-agent による — オープン
主要言語
Java
スター
88
フォーク
17
平均マージ
2日 2時間
マージ済み PR(30日)
1

説明

Summary

Methods annotated with @Labels(...) from appmap-annotation are not recorded when the agent considers them "trivial" (e.g. simple getter/setter patterns like getFirstName() that just return a field). The agent's trivial-method filter takes precedence over the explicit label annotation.

Expected behavior

If a developer explicitly labels a method with @Labels(...), that method should always be recorded in the AppMap trace, regardless of whether it would otherwise be filtered out as trivial. The label annotation is a deliberate opt-in signal that the method is meaningful for analysis.

Observed behavior

Given a class like:

@Labels("secret")
public String getFirstName() {
    return this.firstName;
}

The method does not appear in the recorded AppMap events or classMap. In contrast, a method with identical logic but a non-getter name is recorded:

@Labels("secret")
public String firstName() {
    return this.firstName;
}

This was confirmed by comparing the recorded events across multiple test runs. Methods like getPet (which has a loop and conditional logic) are recorded normally — the filter appears to target methods based on complexity/pattern, not just the get prefix.

Workaround

Wrap the getter in a non-getter-named method and label that instead:

@Labels("secret")
public String firstName() {
    return this.firstName;
}

public String getFirstName() {
    return firstName();
}

This works but is awkward — it forces users to create redundant wrapper methods just to satisfy the agent's filter.

Environment

  • appmap-agent 1.30.0
  • appmap-annotation 1.28.0
  • Java 23 (OpenJDK)
  • Spring Boot 2.4.5

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。