{"ref":"artifact:tf-franz-seidl-abapdocs-code-scanner","page":"/artifacts/tf-franz-seidl-abapdocs-code-scanner","json":"/artifacts/tf-franz-seidl-abapdocs-code-scanner.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"tf-franz-seidl-abapdocs-code-scanner","name":"abapdocs-code-scanner","artifact_type":"package","ecosystem":"abap","domain":"learning-and-reference","origin_ring":"independent","description":{"one_line":"Reads the abapDoc comments of a class or interface's public methods and type definitions and returns their text at runtime.","what_it_solves":"`zcl_acs_abapdocs_code_scanner` takes a type description, from `cl_abap_typedescr=>describe_by_data` for a type or `cl_abap_objectdescr=>describe_by_name` for a class or interface, scans the definition for abapDocs, and returns the text of public methods and type definitions through `get_abapdocs_for_child` and `get_description`. For a constant structure the call needs the `absolute_name` as well, because the structure definition points at a dynamic type name and the scanner has to be told which code object holds the abapDocs. The README names two uses: filling fields such as description, enum, minimum, minItems and deprecated in an OpenAPI specification, and building a dynamic search help whose description fields come from the abapDocs. Example code for both is in the unit test class `ltcl_example` of the global class."},"links":{"repo":"https://github.com/tf-Franz-Seidl/abapdocs-code-scanner"},"identity":{"license":"MIT"},"source_available":true,"provides":[{"capability":"capability:documentation","what_it_does":"Scans an ABAP class or interface definition for abapDocs and returns the abapDoc text of its public methods and type definitions.","sources":[{"url":"https://github.com/tf-Franz-Seidl/abapdocs-code-scanner","title":"tf-Franz-Seidl/abapdocs-code-scanner — README","checked":"2026-10-19","quote":"scans class and interface definitions for abapDocs and offers the abapDocs text of public methods and type definitions"}]}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"maintainers":["actor:tf-franz-seidl"],"contributors":["actor:lukas-klausner"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"poor","evidence":"pushed 2024-03, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"fair","evidence":"README 3 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","npm":"not published under this name","stars":3,"forks":1,"open_issues":0,"archived":false,"pushed_at":"2024-03-13","license_spdx":"MIT","org_owned":false,"default_branch":"main","created_at":"2021-12-01T14:38:11Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":2949,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2021-12-01","last_commit":"2024-03-13","commits":6,"contributors":1,"readme_path":"README.md","readme_sha":"abb9e2a6294b816e6b94fcb981d9bc288ae2b967","repo_read":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:tf-franz-seidl","name":"tf-Franz-Seidl","json":"/actors/tf-franz-seidl.json"}],"contributors":[{"ref":"actor:lukas-klausner","name":"lukas-klausner","json":"/actors/lukas-klausner.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}