@nithin554/code-crawler 0.1.61 → 0.1.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -6
- package/dist/config.d.ts +40 -1
- package/dist/config.js +88 -4
- package/dist/config.js.map +1 -1
- package/dist/crawler.js +7 -4
- package/dist/crawler.js.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/parser/languages/java.js +31 -7
- package/dist/parser/languages/java.js.map +1 -1
- package/dist/parser/methodId.d.ts +15 -0
- package/dist/parser/methodId.js +28 -0
- package/dist/parser/methodId.js.map +1 -0
- package/dist/resolver/common.d.ts +22 -8
- package/dist/resolver/common.js +106 -20
- package/dist/resolver/common.js.map +1 -1
- package/dist/resolver/genericResolver.js +7 -18
- package/dist/resolver/genericResolver.js.map +1 -1
- package/dist/resolver/javaResolver.js +14 -17
- package/dist/resolver/javaResolver.js.map +1 -1
- package/package.json +3 -2
- package/skills/code-crawler/SKILL.md +180 -0
- package/skills/code-crawler/reference/edge-semantics.md +110 -0
- package/skills/code-crawler/reference/tools.md +108 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genericResolver.js","sourceRoot":"","sources":["../../src/resolver/genericResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAsB9E,MAAM,UAAU,kBAAkB,CAChC,IAAgB,EAChB,KAAgB,EAChB,OAAO,GAA0B,EAAE;IAEnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,MAAc;IAC7C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,GAAW,EAAE,MAAc;IAC/D,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,OAAO,GAAG,EAAE;QACtB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,GAAG;QACf,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,GAAG;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,IAAc,EACd,IAAgB,EAChB,KAAgB,EAChB,iBAA0B;IAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAE3C,4EAA4E;IAC5E,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,6DAA6D;YAC7D,MAAM,OAAO,GAAG,eAAe,CAC7B,IAAI,EACJ,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,iBAAiB,CACvB,CAAC;YACF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,GAAG,UAAU,SAAS;oBAChC,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,yBAAyB,UAAU,EAAE;iBAC9C,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC/E,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO;wBACL,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,IAAI,CAAC,EAAE;wBACjB,QAAQ,EAAE,IAAI;wBACd,UAAU,EAAE,GAAG;wBACf,MAAM,EAAE,kBAAkB,MAAM,EAAE;qBACnC,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC9B,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,0BAA0B,KAAK,CAAC,CAAC,CAAC,EAAE;aAC7C,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,OAAO,IAAI,GAAG,CAAC;QACvC,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,YAAY,CACjB,IAAI,EACJ,eAAe,EACf,GAAG,IAAI,CAAC,IAAI,0CAA0C,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC;IACnE,CAAC;IAED,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,eAAe,CAC9B,IAAI,EACJ,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,iBAAiB,CACvB,CAAC;IAEF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,iBAAiB;YAC/B,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;YACpC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;YAC3C,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBACjC,MAAM,EAAE,SAAS;oBACf,CAAC,CAAC,GAAG,IAAI,mBAAmB,MAAM,CAAC,MAAM,SAAS,QAAQ,CAAC,MAAM,GAAG;oBACpE,CAAC,CAAC,GAAG,IAAI,gBAAgB,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,GAAG,IAAI,0BAA0B,QAAQ,EAAE;aACpD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,GAAG,IAAI,iCAAiC;iBACjD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,GAAG,QAAQ,SAAS;oBAC9B,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,GAAG,IAAI,uBAAuB;iBACvC,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3E,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC1D,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO;wBACL,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,MAAM;wBAChB,QAAQ,EAAE,IAAI;wBACd,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,GAAG,IAAI,kBAAkB,QAAQ,EAAE;qBAC5C,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1D,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9B,OAAO,YAAY,CACjB,IAAI,EACJ,QAAQ,EACR,GAAG,IAAI,sCAAsC,QAAQ,EAAE,CACxD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,sBAAsB,CAAC,CAAC;QAChG,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,CAAC;QACzF,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7D,IAAI,eAAe;gBACjB,OAAO,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,IAAI,iCAAiC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,sBAAsB,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,iBAAiB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,wBAAwB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAgB,EAChB,KAAgB,EAChB,GAMC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE7D,IAAI,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CACnC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CACzD,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,KAAK;YAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC;QAC/E,OAAO;YACL,QAAQ,EAAE,OAAO,MAAM,IAAI,SAAS,EAAE;YACtC,QAAQ,EAAE,MAAM,IAAI,SAAS;YAC7B,MAAM,EAAE,UAAU,MAAM,cAAc;SACvC,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,QAAQ;gBACV,OAAO,EAAE,QAAQ,EAAE,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,MAAM,cAAc,EAAE,CAAC;QAC3F,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,eAAe,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,MAAM,YAAY,EAAE,CAAC;IACnF,CAAC;IAED,qEAAqE;IACrE,MAAM,QAAQ,GAAG,eAAe,CAC9B,IAAI,EACJ,KAAK,EACL,GAAG,CAAC,QAAQ,IAAI,IAAI,EACpB,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,iBAAiB,CACtB,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ,EAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE;YACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,MAAM;YAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,MAAM,EAAE,EAAE,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,MAAM;YAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,QAAQ,EAAE,EAAE,CAAC;IACvF,CAAC;IACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,SAAS;QAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,MAAM,EAAE,EAAE,CAAC;IACxE,OAAO,EAAE,QAAQ,EAAE,eAAe,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC;AACrF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CACpC,IAAgB,EAChB,KAAgB,EAChB,QAAgB;IAEhB,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC;IAC/D,4EAA4E;IAC5E,iEAAiE;IACjE,OAAO,EAAE,QAAQ,EAAE,cAAc,IAAI,EAAE,EAAE,CAAC;AAC5C,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,mBAAmB,CACjC,IAAgB,EAChB,KAAgB,EAChB,WAAmB,EACnB,QAAgB;IAEhB,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAChE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CACnD,CAAC;QACF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"genericResolver.js","sourceRoot":"","sources":["../../src/resolver/genericResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inferArgumentTypes, pickOverload } from "./common.js";
|
|
1
2
|
import { phantomNodeId } from "./types.js";
|
|
2
3
|
export function resolveJavaFile(file, index, options = {}) {
|
|
3
4
|
const searchInheritance = options.searchInheritance ?? true;
|
|
@@ -21,12 +22,14 @@ function resolveCall(call, file, index, searchInheritance) {
|
|
|
21
22
|
if (types.length === 0) {
|
|
22
23
|
return { ...phantom, reason: `type "${call.name}" not found in project` };
|
|
23
24
|
}
|
|
25
|
+
const argTypes = inferArgumentTypes(call.argumentTexts);
|
|
24
26
|
for (const fqn of types) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
+
const ctors = (index.methodsByFqn.get(fqn) ?? []).filter((m) => m.name === "<init>");
|
|
28
|
+
const match = pickOverload(ctors, call.argumentTexts.length, argTypes);
|
|
29
|
+
if (match) {
|
|
27
30
|
return {
|
|
28
31
|
callSite: call,
|
|
29
|
-
targetId:
|
|
32
|
+
targetId: match.id,
|
|
30
33
|
resolved: true,
|
|
31
34
|
confidence: 1.0,
|
|
32
35
|
reason: `constructor of ${fqn}`,
|
|
@@ -50,8 +53,9 @@ function resolveCall(call, file, index, searchInheritance) {
|
|
|
50
53
|
reason: `could not infer receiver type: ${candidates.how}`,
|
|
51
54
|
};
|
|
52
55
|
}
|
|
56
|
+
const argTypes = inferArgumentTypes(call.argumentTexts);
|
|
53
57
|
for (const typeFqn of candidates.types) {
|
|
54
|
-
const found = findMethod(typeFqn, call.name, call.argumentTexts.length, index, searchInheritance);
|
|
58
|
+
const found = findMethod(typeFqn, call.name, call.argumentTexts.length, argTypes, index, searchInheritance);
|
|
55
59
|
if (found) {
|
|
56
60
|
return {
|
|
57
61
|
callSite: call,
|
|
@@ -149,43 +153,36 @@ function inferVariableType(name, call, file, index) {
|
|
|
149
153
|
return { types: [], how: `unknown variable "${name}"` };
|
|
150
154
|
}
|
|
151
155
|
/** Find a method on a type or (optionally) its ancestors, matching arity. */
|
|
152
|
-
function findMethod(typeFqn, methodName, argCount, index, searchInheritance) {
|
|
156
|
+
function findMethod(typeFqn, methodName, argCount, argTypes, index, searchInheritance) {
|
|
153
157
|
const direct = (index.methodsByFqn.get(typeFqn) ?? []).filter((m) => m.name === methodName);
|
|
154
|
-
const match = pickOverload(direct, argCount);
|
|
158
|
+
const match = pickOverload(direct, argCount, argTypes);
|
|
155
159
|
if (match)
|
|
156
160
|
return { method: { id: match.id }, confidence: 1.0, inherited: false };
|
|
157
161
|
if (searchInheritance) {
|
|
158
|
-
const inherited = findInherited(typeFqn, methodName, argCount, index, new Set(), 0);
|
|
162
|
+
const inherited = findInherited(typeFqn, methodName, argCount, argTypes, index, new Set(), 0);
|
|
159
163
|
if (inherited)
|
|
160
164
|
return inherited;
|
|
161
165
|
}
|
|
162
166
|
return null;
|
|
163
167
|
}
|
|
164
|
-
function findInherited(typeFqn, methodName, argCount, index, visited, depth) {
|
|
168
|
+
function findInherited(typeFqn, methodName, argCount, argTypes, index, visited, depth) {
|
|
165
169
|
if (depth > 10 || visited.has(typeFqn))
|
|
166
170
|
return null;
|
|
167
171
|
visited.add(typeFqn);
|
|
168
172
|
for (const parentName of index.parentsByFqn.get(typeFqn) ?? []) {
|
|
169
173
|
for (const parent of index.resolveType(parentName)) {
|
|
170
174
|
const candidates = (index.methodsByFqn.get(parent) ?? []).filter((m) => m.name === methodName);
|
|
171
|
-
const match = pickOverload(candidates, argCount);
|
|
175
|
+
const match = pickOverload(candidates, argCount, argTypes);
|
|
172
176
|
if (match) {
|
|
173
177
|
return { method: { id: match.id }, confidence: 0.9, inherited: true };
|
|
174
178
|
}
|
|
175
|
-
const deeper = findInherited(parent, methodName, argCount, index, visited, depth + 1);
|
|
179
|
+
const deeper = findInherited(parent, methodName, argCount, argTypes, index, visited, depth + 1);
|
|
176
180
|
if (deeper)
|
|
177
181
|
return deeper;
|
|
178
182
|
}
|
|
179
183
|
}
|
|
180
184
|
return null;
|
|
181
185
|
}
|
|
182
|
-
/** Pick the overload with matching arity; fall back to the first candidate. */
|
|
183
|
-
function pickOverload(methods, argCount) {
|
|
184
|
-
const exact = methods.find((m) => m.params.length === argCount);
|
|
185
|
-
if (exact)
|
|
186
|
-
return exact;
|
|
187
|
-
return methods[0] ?? null;
|
|
188
|
-
}
|
|
189
186
|
/** Enclosing type + all ancestors, deduped, in order. */
|
|
190
187
|
function enclosingAndAncestors(typeFqn, index) {
|
|
191
188
|
const seen = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javaResolver.js","sourceRoot":"","sources":["../../src/resolver/javaResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAqB9E,MAAM,UAAU,eAAe,CAC7B,IAAoB,EACpB,KAAgB,EAChB,OAAO,GAAmB,EAAE;IAE5B,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;IAC5D,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAClB,IAA8B,EAC9B,IAAoB,EACpB,KAAgB,EAChB,iBAA0B;IAE1B,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC;QAC7B,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,6EAA6E;IAC7E,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI,wBAAwB,EAAE,CAAC;QAC5E,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"javaResolver.js","sourceRoot":"","sources":["../../src/resolver/javaResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAqB9E,MAAM,UAAU,eAAe,CAC7B,IAAoB,EACpB,KAAgB,EAChB,OAAO,GAAmB,EAAE;IAE5B,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;IAC5D,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAClB,IAA8B,EAC9B,IAAoB,EACpB,KAAgB,EAChB,iBAA0B;IAE1B,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC;QAC7B,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,6EAA6E;IAC7E,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI,wBAAwB,EAAE,CAAC;QAC5E,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACrF,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAClB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,kBAAkB,GAAG,EAAE;iBAChC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,sEAAsE;QACtE,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9B,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,0BAA0B,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7C,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,GAAG,OAAO;YACV,MAAM,EAAE,kCAAkC,UAAU,CAAC,GAAG,EAAE;SAC3D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CACtB,OAAO,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,aAAa,CAAC,MAAM,EACzB,QAAQ,EACR,KAAK,EACL,iBAAiB,CAClB,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;gBACzB,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU;gBACzD,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG;aAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,aAAa,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,aAAa,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,GAAG,GAAG;KAC3H,CAAC;AACJ,CAAC;AAOD;;GAEG;AACH,SAAS,kBAAkB,CACzB,IAA8B,EAC9B,IAAoB,EACpB,KAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,6EAA6E;IAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;YACzD,GAAG,EAAE,gBAAgB,IAAI,CAAC,eAAe,EAAE;SAC5C,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,QAAQ,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACxE,CAAC;QACD,OAAO;YACL,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;YACzD,GAAG,EAAE,gBAAgB,IAAI,CAAC,eAAe,EAAE;SAC5C,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC;YAClD,GAAG,EAAE,mBAAmB,IAAI,CAAC,eAAe,EAAE;SAC/C,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,4BAA4B,QAAQ,EAAE,EAAE,CAAC;IACxE,CAAC;IAED,6EAA6E;IAC7E,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;IACjD,CAAC;IAED,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,4BAA4B,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,kCAAkC,QAAQ,GAAG,EAAE,CAAC;AAC3E,CAAC;AAED,4EAA4E;AAC5E,SAAS,iBAAiB,CACxB,IAAY,EACZ,IAA8B,EAC9B,IAAoB,EACpB,KAAgB;IAEhB,iCAAiC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,IAAI,KAAK,SAAS,EAAE,EAAE,CAAC;IAChG,CAAC;IACD,qCAAqC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC1D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAClG,CAAC;IACD,+BAA+B;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5F,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAClG,CAAC;IACD,4DAA4D;IAC5D,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC9E,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;gBACL,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;gBAClD,GAAG,EAAE,SAAS,IAAI,mBAAmB,GAAG,EAAE;aAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,qBAAqB,IAAI,GAAG,EAAE,CAAC;AAC1D,CAAC;AAQD,6EAA6E;AAC7E,SAAS,UAAU,CACjB,OAAe,EACf,UAAkB,EAClB,QAAgB,EAChB,QAA2B,EAC3B,KAAgB,EAChB,iBAA0B;IAE1B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAElF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9F,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,UAAkB,EAClB,QAAgB,EAChB,QAA2B,EAC3B,KAAgB,EAChB,OAAoB,EACpB,KAAa;IAEb,IAAI,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YACnD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAC7B,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACxE,CAAC;YACD,MAAM,MAAM,GAAG,aAAa,CAC1B,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,OAAO,EACP,KAAK,GAAG,CAAC,CACV,CAAC;YACF,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yDAAyD;AACzD,SAAS,qBAAqB,CAAC,OAAe,EAAE,KAAgB;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,KAAgB;IACvD,OAAO,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,IAAoB,EAAE,KAAgB;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD,2BAA2B;IAC3B,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,OAAO,EAAE,CAAC;QAAE,OAAO,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IAEjF,eAAe;IACf,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,oEAAoE;AACpE,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,yCAAyC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,cAAc,CAAC,UAAwB;IAC9C,QAAQ,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,KAAK,OAAO,CAAC;QACb,KAAK,uBAAuB,CAAC;QAC7B,KAAK,OAAO;YACV,OAAO,GAAG,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,IAAI,CAAC;QACd,KAAK,UAAU;YACb,OAAO,IAAI,CAAC;QACd;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nithin554/code-crawler",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.63",
|
|
4
4
|
"mcpName": "io.github.nithin554/code-crawler",
|
|
5
5
|
"description": "Static and dynamic call tracing MCP server backed by a SQLite property graph of your codebase",
|
|
6
6
|
"type": "module",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"codecrawler": "dist/index.js"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"dist"
|
|
16
|
+
"dist",
|
|
17
|
+
"skills"
|
|
17
18
|
],
|
|
18
19
|
"engines": {
|
|
19
20
|
"node": ">=22.12"
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-crawler
|
|
3
|
+
description: Answer questions about code relationships in an indexed repository - callers, callees, impact, entry points, routes, DI wiring, dead code, cycles - using the code-crawler MCP server's SQLite property graph. Use when the question is about how symbols connect (who calls this, what breaks if I change it, where does a request enter, is this reachable) rather than about text you can find by searching. Do not crawl a repository just to answer a question about a single file you already have open.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Crawler
|
|
7
|
+
|
|
8
|
+
A SQLite property graph of a codebase, exposed as 27 MCP tools. The graph is built
|
|
9
|
+
once by a crawl, then queried cheaply many times.
|
|
10
|
+
|
|
11
|
+
## Getting the tools
|
|
12
|
+
|
|
13
|
+
**Check first.** If no `code-crawler` tools appear in your tool list, the server is not
|
|
14
|
+
registered and nothing else in this skill will run. Say so instead of falling back to
|
|
15
|
+
`grep` — and ask before editing a client config file, which is the user's machine
|
|
16
|
+
state, not yours.
|
|
17
|
+
|
|
18
|
+
Installing the *skill* does not install the *server*: `npx skills add nithin554/code-crawler`
|
|
19
|
+
delivers these instructions, and `npx add-mcp @nithin554/code-crawler` — or the config
|
|
20
|
+
below — registers the server that delivers the tools. Both are needed, and they are
|
|
21
|
+
independent.
|
|
22
|
+
|
|
23
|
+
The server is the npm package `@nithin554/code-crawler` and needs Node.js ≥ 22.12. Every
|
|
24
|
+
stdio MCP client takes the same command/args/env triple:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"mcpServers": {
|
|
29
|
+
"code-crawler": {
|
|
30
|
+
"command": "npx",
|
|
31
|
+
"args": ["-y", "@nithin554/code-crawler", "serve"],
|
|
32
|
+
"env": { "CODECRAWLER_DB": "/absolute/path/to/index.db" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`npx -y` needs no prior install. If the package is already installed globally, use
|
|
39
|
+
`"command": "codecrawler"` with `"args": ["serve"]`. From a source checkout, point
|
|
40
|
+
`"command": "node"` at `dist/index.js`, keeping `"args": ["serve"]`. `serve` is the default
|
|
41
|
+
subcommand, so `args` may omit it.
|
|
42
|
+
|
|
43
|
+
Writing that JSON by hand is the slow way. `add-mcp` fills it in for whichever client you
|
|
44
|
+
name. Run it from inside the repository you want indexed:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx add-mcp @nithin554/code-crawler --args serve -a cursor
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
It derives the server name `code-crawler` from the package, so no `--name` is needed. `-a`
|
|
51
|
+
accepts `claude-code`, `cursor`, `vscode`, `claude-desktop`, `codex`, `opencode`, `zed` and
|
|
52
|
+
about twenty more — `npx add-mcp list-agents` prints the list. Without `-g` the entry lives
|
|
53
|
+
in the project (`.mcp.json`, `.cursor/mcp.json`, `.vscode/mcp.json`); `-g` writes user-level
|
|
54
|
+
config. Repeat `--args` and `--env` once per value.
|
|
55
|
+
|
|
56
|
+
`--env CODECRAWLER_DB` is optional: the server indexes into `<project>/.code-crawler/index.db`
|
|
57
|
+
by default. Pin it — `--env CODECRAWLER_DB=/absolute/path/index.db` — when you want the file
|
|
58
|
+
elsewhere, or when the client's working directory is not the project.
|
|
59
|
+
|
|
60
|
+
Three things decide whether the graph is usable:
|
|
61
|
+
|
|
62
|
+
- **`CODECRAWLER_DB`** is the SQLite file holding the graph. The default needs no
|
|
63
|
+
configuration: the server walks up from its working directory to the nearest project root
|
|
64
|
+
(`.git`, `package.json`, `pom.xml`, `build.gradle`, `pyproject.toml`, `setup.py`,
|
|
65
|
+
`requirements.txt`, `go.mod`, `Cargo.toml`) and uses `<project>/.code-crawler/index.db`, so
|
|
66
|
+
**each repository gets its own file**. With no enclosing project it falls back to
|
|
67
|
+
`~/.code-crawler/index.db`. That home file is the fallback and nothing more, never an
|
|
68
|
+
enclosing project, so an unmarked folder under `~` gets its own file rather than sharing
|
|
69
|
+
it. A database still holds exactly one project — crawling a
|
|
70
|
+
different path into one is refused before anything is written; give that project its own
|
|
71
|
+
database (its own registration), or run `clear_index` to replace the existing index.
|
|
72
|
+
- **One server per project.** A process opens one database at startup and a database holds
|
|
73
|
+
one project, so register the server once per repository (project-scoped config, above)
|
|
74
|
+
rather than once globally for all of them. `crawl` resolves the same way, so crawling a
|
|
75
|
+
subdirectory such as `repo/src` shares `repo`'s file instead of growing a second one.
|
|
76
|
+
- **Never share one `CODECRAWLER_DB` across repositories.** Do that and the second project's
|
|
77
|
+
crawl hits the one-project error above.
|
|
78
|
+
- **Use absolute paths.** Clients launch servers from an unpredictable working directory,
|
|
79
|
+
so a relative `CODECRAWLER_DB` or a relative project root lands somewhere unexpected —
|
|
80
|
+
and the default resolution follows the cwd you may not have chosen.
|
|
81
|
+
- **Config is all environment variables**, identical for the CLI and the client:
|
|
82
|
+
`CODECRAWLER_DB`, `CODECRAWLER_EXCLUDE_DIRS`, `CODECRAWLER_DEFAULT_LIMIT`,
|
|
83
|
+
`CODECRAWLER_MAX_DEPTH`, `CODECRAWLER_MAX_FILE_BYTES`, `CODECRAWLER_RESPECT_GITIGNORE`,
|
|
84
|
+
`CODECRAWLER_HELPFUL_ERRORS`. Invalid values are clamped and warned about, never fatal.
|
|
85
|
+
|
|
86
|
+
Some clients namespace tool names with the server key — `code-crawler-search_symbols`
|
|
87
|
+
rather than `search_symbols`. Same tools, so match on the suffix if the exact name is
|
|
88
|
+
missing.
|
|
89
|
+
|
|
90
|
+
Once the tools appear, call `index_status` to confirm the server answers, then follow the
|
|
91
|
+
bootstrap below. The CLI shares the database, so `npx -y @nithin554/code-crawler crawl
|
|
92
|
+
/path/to/repo` warms the index ahead of time if you would rather not spend a turn on it.
|
|
93
|
+
|
|
94
|
+
## When to reach for it
|
|
95
|
+
|
|
96
|
+
The graph answers **relationship** questions. Text search answers **location** questions.
|
|
97
|
+
Picking the wrong one wastes the most time of anything in this skill.
|
|
98
|
+
|
|
99
|
+
| Question | Use |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| Who calls this method? | `get_callers` |
|
|
102
|
+
| What does this method call? | `get_callees` |
|
|
103
|
+
| What breaks if I change this? | `impact_analysis` |
|
|
104
|
+
| Where does a request enter this system? | `find_entry_points`, `find_routes` |
|
|
105
|
+
| Which implementation handles this interface? | `find_implementations` |
|
|
106
|
+
| Is this method reachable at all? | `find_dead_code`, `find_hotspots` |
|
|
107
|
+
| How does this request reach that handler? | `trace_path`, `trace_execution` |
|
|
108
|
+
| What is wired in by DI or annotations? | `find_injections`, `find_annotated`, `get_decorators` |
|
|
109
|
+
| What third-party code is actually used? | `find_external_dependencies` |
|
|
110
|
+
| Where is `ThingFactory` defined? | **plain search** - do not crawl |
|
|
111
|
+
| Show me the body of this function | **plain file read** - do not crawl |
|
|
112
|
+
|
|
113
|
+
Crawling is not free: it parses every file in the project. Do it when you intend to ask
|
|
114
|
+
several relationship questions, or when one relationship question has no cheaper answer.
|
|
115
|
+
For a single-file question you already have open, reading the file beats crawling the repo.
|
|
116
|
+
|
|
117
|
+
## Bootstrap
|
|
118
|
+
|
|
119
|
+
1. `index_status` first. If it reports files and a recent crawl, the index is already
|
|
120
|
+
warm and you can skip step 2.
|
|
121
|
+
2. `crawl_project` with the project root. It is idempotent and incremental - unchanged
|
|
122
|
+
files are skipped via a content manifest, so a second crawl is cheap.
|
|
123
|
+
3. Only then run the query tools.
|
|
124
|
+
|
|
125
|
+
**Never trust a stale index.** Call `index_status` before concluding "there are no
|
|
126
|
+
callers". An empty result from an empty or stale index is indistinguishable from a true
|
|
127
|
+
negative, and that is the single most common way this tool misleads.
|
|
128
|
+
|
|
129
|
+
Re-index with the `force` option when the working tree changed underneath the index:
|
|
130
|
+
|
|
131
|
+
- after a rebase, merge, or `git reset` that rewrote history
|
|
132
|
+
- after switching branches with a large diff
|
|
133
|
+
- after `git stash pop`
|
|
134
|
+
|
|
135
|
+
An incremental crawl keys off file content and mtime, which is enough for ordinary
|
|
136
|
+
editing but not for a history rewrite. `force: true` bypasses the manifest.
|
|
137
|
+
|
|
138
|
+
## Reading the results
|
|
139
|
+
|
|
140
|
+
Two fields decide whether a result means what you think: `confidence` and `external`.
|
|
141
|
+
Phantom nodes mark the third trap. See
|
|
142
|
+
[reference/edge-semantics.md](reference/edge-semantics.md) before reasoning about
|
|
143
|
+
"unreachable" or "no callers".
|
|
144
|
+
|
|
145
|
+
Short version:
|
|
146
|
+
|
|
147
|
+
- `confidence` is not a probability. It is a band: `1.0` resolved by construction,
|
|
148
|
+
`0.9`/`0.85` strong static evidence, `0.8` inherited or external, `0.5` heuristics,
|
|
149
|
+
`0` phantom.
|
|
150
|
+
- `external: true` means the target is outside the project. It is *not* dead code and
|
|
151
|
+
*not* unresolved.
|
|
152
|
+
- `__phantom__:` / `__reflect__:` / `__inject__:` targets mark something the resolver
|
|
153
|
+
could not bind. They are inventory, not findings.
|
|
154
|
+
|
|
155
|
+
## Reference
|
|
156
|
+
|
|
157
|
+
- [reference/tools.md](reference/tools.md) - all 27 tools, grouped by the question they
|
|
158
|
+
answer, with the argument that matters most for each.
|
|
159
|
+
- [reference/edge-semantics.md](reference/edge-semantics.md) - `confidence`, `external`,
|
|
160
|
+
phantom nodes, and the ways a "missing" edge is legitimate.
|
|
161
|
+
|
|
162
|
+
## Budget discipline
|
|
163
|
+
|
|
164
|
+
Every list-returning tool accepts `max_tokens` (100-200000) and `cursor`. The response
|
|
165
|
+
then carries a `page` block with `totalCount`, `truncated`, and `nextCursor`.
|
|
166
|
+
|
|
167
|
+
Start with a small `max_tokens` and widen only if the answer is genuinely incomplete.
|
|
168
|
+
Reading one page of `get_callers` and reporting the shape is almost always better than
|
|
169
|
+
paging through all of them. Prefer `explain_symbol` over chaining `get_node` +
|
|
170
|
+
`get_callers` + `get_callees` + `get_decorators` when you want a digest rather than a
|
|
171
|
+
specific list.
|
|
172
|
+
|
|
173
|
+
## Do not
|
|
174
|
+
|
|
175
|
+
- Crawl a monorepo to answer a question about one file.
|
|
176
|
+
- Report "no callers" or "dead code" without checking `confidence` and `external` on the
|
|
177
|
+
edges you did get.
|
|
178
|
+
- Treat `find_unresolved` as a bug list. It is a coverage report; some entries are
|
|
179
|
+
dynamic dispatch that cannot be resolved statically.
|
|
180
|
+
- Page through an entire result set to count things. Use `totalCount` from the first page.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Edge semantics
|
|
2
|
+
|
|
3
|
+
Three things cause most misreads of this graph: `confidence`, `external`, and phantom
|
|
4
|
+
nodes. Read this before reporting "no callers", "dead code", or "unresolved".
|
|
5
|
+
|
|
6
|
+
## Edge kinds
|
|
7
|
+
|
|
8
|
+
| Kind | Means |
|
|
9
|
+
| --- | --- |
|
|
10
|
+
| `CALLS` | A statically resolved call |
|
|
11
|
+
| `DYNAMIC_DISPATCH` | A call that reaches an implementation through an interface or superclass |
|
|
12
|
+
| `ADVISES` | Around/before/after advice intercepting a method |
|
|
13
|
+
| `DECLARED_IN` | Symbol to its containing type |
|
|
14
|
+
| `CONTAINS` | Type to its members, module to its declarations |
|
|
15
|
+
| `IMPLEMENTS` | Type to the interface it implements |
|
|
16
|
+
| `EXTENDS` | Type to its superclass |
|
|
17
|
+
| `IMPORTS` | File to the module it imports |
|
|
18
|
+
| `ANNOTATED_WITH` | Symbol to an annotation or decorator |
|
|
19
|
+
| `REFERENCES` | A non-call reference, such as a field or type use |
|
|
20
|
+
| `REFLECTS` | A runtime lookup that may reach a symbol |
|
|
21
|
+
| `INJECTS` | A DI-supplied dependency |
|
|
22
|
+
| `ROUTES` | An HTTP route to its handler |
|
|
23
|
+
|
|
24
|
+
A method reached only by `DYNAMIC_DISPATCH`, `ADVISES`, or `ROUTES` **is still called**.
|
|
25
|
+
When asking "who calls this", look at all inbound edge kinds, not just `CALLS`.
|
|
26
|
+
|
|
27
|
+
## `confidence` is a band, not a probability
|
|
28
|
+
|
|
29
|
+
Do not average it, threshold it, or present it as certainty. It is a coarse label telling
|
|
30
|
+
you *what kind of evidence* produced the edge.
|
|
31
|
+
|
|
32
|
+
| Value | Evidence |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| `1.0` | Resolved by construction - a constructor or overload matched exactly |
|
|
35
|
+
| `0.9` | Same-module declaration, typed local, or default constructor |
|
|
36
|
+
| `0.85` | Imported from a named module |
|
|
37
|
+
| `0.8` | Inherited from a supertype, or an external target |
|
|
38
|
+
| `0.75` | Call to an imported class resolved through its import |
|
|
39
|
+
| `0.6` | Pointcut `args(...)` matched on arity only |
|
|
40
|
+
| `0.55` | Pointcut primitive matched by static approximation |
|
|
41
|
+
| `0.3` | Empty pointcut - the advice matches everything |
|
|
42
|
+
| `0` | Phantom - nothing was resolved |
|
|
43
|
+
|
|
44
|
+
Practical rule: `>= 0.75` is safe to report as fact, `0.5`-`0.7` deserves a hedge, and `0`
|
|
45
|
+
carries no information about the target at all.
|
|
46
|
+
|
|
47
|
+
## `external` means outside the project
|
|
48
|
+
|
|
49
|
+
An edge with `external: true` points at a node like `ext:axios` or `ext:fastapi`, and its
|
|
50
|
+
`externalModule` names the package.
|
|
51
|
+
|
|
52
|
+
Consequences that are easy to get wrong:
|
|
53
|
+
|
|
54
|
+
- An external target is **not** dead code. It is a real dependency you do not index.
|
|
55
|
+
- An external target is **not** an unresolved call. It was resolved, just to the boundary.
|
|
56
|
+
- `find_dead_code` ignores external targets, so a method whose only caller is external can
|
|
57
|
+
still look dead. Cross-check `find_external_dependencies`.
|
|
58
|
+
|
|
59
|
+
## Phantom nodes
|
|
60
|
+
|
|
61
|
+
A phantom target means the resolver saw a call but could not name its destination. Phantoms
|
|
62
|
+
carry `confidence: 0` and `resolved: false`, and their ids are prefixed:
|
|
63
|
+
|
|
64
|
+
| Prefix | Origin |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| `__phantom__:` | A call site with no resolvable target |
|
|
67
|
+
| `__reflect__:` | A runtime lookup whose type or method was not found |
|
|
68
|
+
| `__inject__:` | An injection marker that named neither a type nor a package |
|
|
69
|
+
|
|
70
|
+
Phantoms are **inventory, not findings**. A phantom is a statement about the analyser, not
|
|
71
|
+
about the code. Never report one as "calls something unknown" without reading its `reason` -
|
|
72
|
+
that field says which lookup step failed.
|
|
73
|
+
|
|
74
|
+
## Why "no callers" can be legitimate and wrong at the same time
|
|
75
|
+
|
|
76
|
+
Five ways a real caller produces no inbound `CALLS` edge:
|
|
77
|
+
|
|
78
|
+
1. **The index is stale.** Always `index_status` first. This is the most common cause.
|
|
79
|
+
2. **Dynamic dispatch.** The call goes through an interface; look for
|
|
80
|
+
`DYNAMIC_DISPATCH` inbound edges and use `find_implementations`.
|
|
81
|
+
3. **Framework invocation.** Routes, listeners, schedulers, and tests are entry points,
|
|
82
|
+
not calls. Check `find_entry_points` and `find_routes`.
|
|
83
|
+
4. **Reflection.** `Class.forName`, `getattr`, `importlib`, and dynamic `import()` produce
|
|
84
|
+
`REFLECTS` edges, not `CALLS`. Check `find_reflections`.
|
|
85
|
+
5. **The caller is external.** Only in-project call edges are recorded. Check
|
|
86
|
+
`find_external_dependencies`.
|
|
87
|
+
|
|
88
|
+
So the correct phrasing is "no in-project static callers", not "unused".
|
|
89
|
+
|
|
90
|
+
## Stale indexes and `force`
|
|
91
|
+
|
|
92
|
+
Incremental crawls compare file content and mtime against a manifest. That covers normal
|
|
93
|
+
editing. It does **not** cover the working tree changing underneath the index:
|
|
94
|
+
|
|
95
|
+
- after a rebase, merge, or `git reset` that rewrote history
|
|
96
|
+
- after switching branches with a large diff
|
|
97
|
+
- after `git stash pop`
|
|
98
|
+
|
|
99
|
+
A file whose content changed but whose mtime was reset can be skipped, leaving edges that
|
|
100
|
+
point at declarations that no longer exist. Pass `force: true` to `crawl_project` in those
|
|
101
|
+
cases. If results look impossible, forcing a re-index is cheaper than debugging the graph.
|
|
102
|
+
|
|
103
|
+
## Token budgeting
|
|
104
|
+
|
|
105
|
+
List-returning tools accept `max_tokens` and `cursor`, adding a `page` block with
|
|
106
|
+
`totalCount`, `returnedCount`, `truncated`, `estimatedTokens`, and `nextCursor`.
|
|
107
|
+
|
|
108
|
+
Truncation is reported, never silent: if `truncated` is true the answer is incomplete and
|
|
109
|
+
you should either widen `max_tokens` or say so. Paging never returns an empty page while
|
|
110
|
+
items remain, so a continuation loop terminates.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Tool reference
|
|
2
|
+
|
|
3
|
+
All 27 tools, grouped by the question they answer. Run `index_status` before trusting any
|
|
4
|
+
result, and `crawl_project` before that if the index is empty.
|
|
5
|
+
|
|
6
|
+
## Orientation
|
|
7
|
+
|
|
8
|
+
Call these to establish what the index contains, not to answer questions about code.
|
|
9
|
+
|
|
10
|
+
| Tool | Use it when | Key argument |
|
|
11
|
+
| --- | --- | --- |
|
|
12
|
+
| `crawl_project` | The index is empty, or files changed on disk | `path` (root), `force` |
|
|
13
|
+
| `index_status` | Before every session, and before believing a negative result | none |
|
|
14
|
+
| `get_schema` | You need the node/edge vocabulary or property names | none |
|
|
15
|
+
| `clear_index` | A crawl was rooted at the wrong directory and the graph is unusable | none |
|
|
16
|
+
|
|
17
|
+
`crawl_project` is incremental by default. Pass `force: true` only after a history rewrite,
|
|
18
|
+
branch switch, or stash pop - see [edge-semantics.md](edge-semantics.md) for why.
|
|
19
|
+
|
|
20
|
+
## Find a symbol
|
|
21
|
+
|
|
22
|
+
| Tool | Use it when | Key argument |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| `search_symbols` | You have a name fragment but not a node id | `query`, `kind` |
|
|
25
|
+
| `get_node` | You have a node id and want its metadata and source location | `id` |
|
|
26
|
+
| `explain_symbol` | You want one digest instead of four separate calls | `id` or `name` |
|
|
27
|
+
|
|
28
|
+
`explain_symbol` returns members, decorators, callers, callees, and framework wiring in one
|
|
29
|
+
payload. Reach for it first when exploring an unfamiliar symbol; drop to `get_callers` or
|
|
30
|
+
`get_callees` when you need the full list rather than a summary.
|
|
31
|
+
|
|
32
|
+
## Relationships
|
|
33
|
+
|
|
34
|
+
| Tool | Use it when | Key argument |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `get_callers` | "Who calls this?" - direct or transitive | `id`, `depth` |
|
|
37
|
+
| `get_callees` | "What does this call?" - direct or transitive | `id`, `depth` |
|
|
38
|
+
| `trace_path` | "How does execution get from A to B?" | `from`, `to` |
|
|
39
|
+
| `trace_execution` | You need dynamic dispatch and woven advice, not just static calls | `id` |
|
|
40
|
+
| `get_subgraph` | You want the neighbourhood as data for a diagram | `id`, `radius`, `limit` |
|
|
41
|
+
| `export_graph` | You want Mermaid or Graphviz text you can paste | `id`, `format` |
|
|
42
|
+
|
|
43
|
+
`get_callers`/`get_callees` take `depth` - keep it at 1 unless the question is explicitly
|
|
44
|
+
transitive, because depth 3 on a hub method returns most of the repository.
|
|
45
|
+
|
|
46
|
+
`get_subgraph` is bounded by `radius`/`limit` rather than `max_tokens`, because its `nodes`
|
|
47
|
+
and `edges` are two views of one slice and cutting one list leaves dangling references.
|
|
48
|
+
|
|
49
|
+
## Impact and risk
|
|
50
|
+
|
|
51
|
+
| Tool | Use it when | Key argument |
|
|
52
|
+
| --- | --- | --- |
|
|
53
|
+
| `impact_analysis` | "What breaks if I change this?" - the one call to prefer | `id` |
|
|
54
|
+
| `find_implementations` | You have an interface and need its implementers | `id` |
|
|
55
|
+
| `find_cycles` | You suspect mutual recursion or a dependency knot | none |
|
|
56
|
+
| `find_dead_code` | You want methods with no incoming edges at all | none |
|
|
57
|
+
| `find_hotspots` | You want the highest fan-in/fan-out methods ranked | `limit` |
|
|
58
|
+
|
|
59
|
+
`impact_analysis` bundles callers, entry points, routes, overrides, and a risk band. Prefer
|
|
60
|
+
it over assembling the same answer from four calls.
|
|
61
|
+
|
|
62
|
+
`find_dead_code` reports *no incoming call, dispatch, or advice edge*. Treat that as a
|
|
63
|
+
candidate list: a method invoked purely by reflection or by an external framework will
|
|
64
|
+
appear here. Cross-check with `find_reflections` and `find_entry_points` before deleting
|
|
65
|
+
anything.
|
|
66
|
+
|
|
67
|
+
## Framework wiring
|
|
68
|
+
|
|
69
|
+
These tools exist because the call graph alone cannot see how a framework invokes code.
|
|
70
|
+
|
|
71
|
+
| Tool | Use it when | Key argument |
|
|
72
|
+
| --- | --- | --- |
|
|
73
|
+
| `find_entry_points` | "Where does this system begin?" | `kind` |
|
|
74
|
+
| `find_routes` | You want HTTP route to handler mappings | `framework` |
|
|
75
|
+
| `find_injections` | You want DI-supplied dependencies | `framework` |
|
|
76
|
+
| `find_annotated` | You want every symbol carrying one annotation | `annotation` |
|
|
77
|
+
| `get_decorators` | You want the decorators on one symbol | `id`, `includeMembers` |
|
|
78
|
+
| `find_aspects` | You want aspects, advice kinds, and intercepted methods | none |
|
|
79
|
+
| `find_reflections` | You want runtime lookups (`Class.forName`, `getattr`, `import()`) | none |
|
|
80
|
+
|
|
81
|
+
Entry-point kinds include HTTP routes, listeners, schedulers, CLI mains, and tests. If a
|
|
82
|
+
method looks dead but is plausibly framework-invoked, check `find_entry_points` and
|
|
83
|
+
`find_reflections` before concluding it is unreachable.
|
|
84
|
+
|
|
85
|
+
## Coverage and dependencies
|
|
86
|
+
|
|
87
|
+
| Tool | Use it when | Key argument |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| `find_unresolved` | You need to know how much of the graph failed to bind | none |
|
|
90
|
+
| `find_external_dependencies` | You want the third-party packages actually referenced | none |
|
|
91
|
+
|
|
92
|
+
`find_unresolved` is grouped by failure reason, which is the useful part: a cluster of one
|
|
93
|
+
reason usually means one modelling gap, not many broken call sites.
|
|
94
|
+
|
|
95
|
+
`find_external_dependencies` lists packages with reference and file counts. Use it to answer
|
|
96
|
+
"do we actually use this dependency?" - an empty result for a package in `package.json` means
|
|
97
|
+
nothing in the indexed code references it.
|
|
98
|
+
|
|
99
|
+
## Budgeting
|
|
100
|
+
|
|
101
|
+
Every list-returning tool accepts `max_tokens` and `cursor`; passing either adds a `page`
|
|
102
|
+
block with `totalCount`, `returnedCount`, `truncated`, `estimatedTokens`, and `nextCursor`.
|
|
103
|
+
Omit both and the response shape is unchanged.
|
|
104
|
+
|
|
105
|
+
Aggregate tools (`impact_analysis`, `explain_symbol`, `export_graph`) and single-object
|
|
106
|
+
tools (`get_node`, `index_status`, `get_schema`) return one object and take no budget.
|
|
107
|
+
|
|
108
|
+
Use `totalCount` from the first page instead of paging to count.
|