query find calls --class with a dotted Java FQCN returns nothing; slash form matches
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 70/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- java, typescript
- Domain
- cli
Research direction
Start in packages/cli/src/cmds/query/lib/scope.ts, reading parseClassRef and classFilterClauses, where the dotted name is kept whole and the defined_class fallback is gated on code_object_id IS NULL. Run the two repro commands against a spring-petclinic appmap directory to confirm the dotted form returns no rows. Done means the dotted FQCN returns the same rows as the slash form, and an empty result prints the same diagnostic.hint the MCP tool gives.
Written by the indexing model from the issue text.
Description
Summary
appmap query find calls --class <dotted Java FQCN> returns an empty table for a class that is in the index; the slash-separated form returns rows. For a coverage question, silently answering "never reached" for reached code is the worst available failure, and it is the form Java/Python users will type.
CLI 3.203.0, index of spring-petclinic recordings (Java agent 1.30.1).
Repro
appmap query find calls --appmap-dir tmp/appmap \
--class org.springframework.samples.petclinic.owner.OwnerRepository
# -> header only
appmap query find calls --appmap-dir tmp/appmap \
--class org/springframework/samples/petclinic/owner/OwnerRepository
# -> 17 rows, e.g. org/.../owner/OwnerRepository#findById
Cause
In packages/cli/src/cmds/query/lib/scope.ts, parseClassRef treats input without / as short form and keeps dots whole ("Java/Python dot-form class names match the defined_class fallback"). But in classFilterClauses that fallback is gated on code_object_id IS NULL. Java rows are linked to code objects, so matching runs against the normalized columns, where leaf_class is OwnerRepository and the package is slash-separated; the dotted FQCN equals neither and the LIKE '%…%' on leaf_class cannot match it either.
Expected
Normalize . to / for inputs that look like a package path, or let the defined_class fallback run for linked rows. The MCP tool already handles the empty case with suggestSimilarFunctionIds and a diagnostic.hint; the CLI should print the same hint.
- Dominant language
- TypeScript
- Stars
- 55
- Forks
- 18
- Avg merge
- 4d 8h
- Merged PRs (30d)
- 3
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from getappmap/appmap-js
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 4/5 3-5 days Newbie friendliness 58/100
-
secret-in-log is unreliable against sanitized gold tracesMay be free again @kgilpin claimed this 47 days ago, and no pull request is open. Open
-
Difficulty 3/5 1-2 days Newbie friendliness 38/100
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
All issues in getappmap/appmap-js
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Merit-Systems/x402scan#1312 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Native Web
Difficulty 1/5 Under an hour Newbie friendliness 80/100
digitalfabrik/integreat-app#4517 ·
Maintainers usually reply within 2 days
-
TLS guide repeats certs/ in the certificate directoryPossibly taken @maheshrijal claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
prometheus/docs#3156 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
medusajs/dtc-starter#90 ·
Maintainers usually reply within 1 day