{"ref":"artifact:uweku-vise-for-abap","page":"/artifacts/uweku-vise-for-abap","json":"/artifacts/uweku-vise-for-abap.json","generated":"2026-10-30","drafted_with_ai":true,"entity":{"id":"uweku-vise-for-abap","name":"Vise_for_ABAP","artifact_type":"package","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"A characterisation-test helper: `ZCL_VISE=>GRIP` records a field's value once and fails a later run if it has changed.","what_it_solves":"Refactoring legacy ABAP without an existing test suite leaves no way to tell whether behaviour changed. Vise for ABAP addresses this with one call, `ZCL_VISE=>GRIP( ... )`, which stores a field in the database the first time it runs and, on a later call after a refactoring, raises an exception if the value no longer matches. It installs through [abapGit](artifact:abapgit-abapgit); an older SAPLINK version of the same tool is no longer updated."},"links":{"repo":"https://github.com/uweku/Vise_for_ABAP"},"identity":{"license":"Apache-2.0"},"type_properties":{"distribution":{"value":["abapgit"],"sources":[{"url":"https://github.com/uweku/Vise_for_ABAP","title":"uweku/Vise_for_ABAP — README, Installation","checked":"2026-10-19","quote":"Installation via [abapGit](https://abapgit.org/)."}]}},"source_available":true,"provides":[{"capability":"capability:abap-unit-testing","what_it_does":"Records a field's value in the database once and raises an exception on a later call if the value has changed, for characterisation testing during a refactoring.","sources":[{"url":"https://github.com/uweku/Vise_for_ABAP","title":"uweku/Vise_for_ABAP — README","checked":"2026-09-14","quote":"stores a field in the database and ensures, when called a second time after a refactoring, that nothing has changed"}]}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"maintainers":["actor:uweku"],"contributors":["actor:christianguenter2","actor:uweku"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"2 contributors"},{"label":"Repository","tier":"poor","evidence":"pushed 2021-11, 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":"poor","evidence":"README 1 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":4,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-28","npm":"not published under this name","stars":4,"forks":1,"open_issues":1,"archived":false,"pushed_at":"2021-11-22","license_spdx":"Apache-2.0","org_owned":false,"default_branch":"master","created_at":"2013-11-05T11:55:19Z","open_prs":0,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":521,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2013-11-05","last_commit":"2021-11-22","commits":8,"contributors":2,"readme_path":"README.md","readme_sha":"b6b0728763ae85f39fb620d9c6d608878580d8b7","repo_read":"2026-10-28"},"edges":{"maintainers":[{"ref":"actor:uweku","name":"Uwe Kunath","json":"/actors/uweku.json"}],"contributors":[{"ref":"actor:christianguenter2","name":"Christian Günter","json":"/actors/christianguenter2.json"},{"ref":"actor:uweku","name":"Uwe Kunath","json":"/actors/uweku.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}