{"ref":"artifact:qualiture-hana-linter","page":"/artifacts/qualiture-hana-linter","json":"/artifacts/qualiture-hana-linter.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"qualiture-hana-linter","name":"hana-linter","artifact_type":"cli","ecosystem":"cap","domain":"developer-experience","secondary_domains":["data-and-persistence"],"origin_ring":"independent","use_as":"dependency","description":{"one_line":"A command line that checks the names of the native SAP HANA artifact files in a CAP project, and the identifiers inside them, against regex rules the project keeps in a config file.","short":"Regex naming rules for SAP HANA artifacts in a CAP project","what_it_solves":"Lints the `.hdb*` files under a CAP project's `rootDir` against naming rules the project keeps in `.hana-linter.json`: regex patterns grouped per file extension, as `groups.all` where every rule must match or `groups.any` where one is enough, plus an optional `folderName` that fixes which folder matching files sit in. Content rules reach inside the files for identifiers a parser extracts, such as the columns of a `.hdbtable` or the input parameters of a `.hdbprocedure`, read out by Chevrotain lexers for the SQL DDL formats and by fast-xml-parser for the XML of `.hdbcalculationview`. It either scans `rootDir` recursively or validates only the file paths it is given, which is the mode the README wires to lint-staged and a husky pre-commit hook, and it exits 1 when it finds violations. Naming is the whole of it: every rule is a regex over a name, and the README marks the project as work in progress, with configuration options and supported artifact types able to change between releases.","when_not_to_use":"Everything it checks is a name: a file name under `rootDir`, or an identifier a parser extracted from a file, so a convention that cannot be written as a regex over one name has no rule shape here. Content rules targeting `.hdbanalyticalprivilege` or `.hdbconstraint` return no results, which the README states as not yet implemented, so conventions centred on those two artifact types go unchecked.","to_build_on_it":"Content extraction is per artifact type, and the Parser Status table names the two types that have no extractor yet, `.hdbanalyticalprivilege` and `.hdbconstraint`. A check that needs more than a pattern over a single extracted identifier would mean a rule shape beyond the `pattern` and `flags` pair the config defines. The README invites issues and pull requests."},"links":{"npm":"https://www.npmjs.com/package/hana-linter","repo":"https://github.com/qualiture/hana-linter"},"compat":{"runtimes":["build-time"]},"provides":[{"capability":"capability:linting","what_it_does":"Validates SAP HANA artifact file names and the identifiers extracted from the files against configurable regex rules declared per file extension, and exits 1 when a rule fails, so the same command runs locally, in a pre-commit hook and in a pipeline. Content rules for `.hdbanalyticalprivilege` and `.hdbconstraint` are documented as not yet implemented.","sources":[{"url":"https://github.com/qualiture/hana-linter","title":"qualiture/hana-linter README","checked":"2026-10-26","quote":"Lint SAP HANA artifact file names and content identifiers in CAP projects using configurable regex-based naming rules."},{"url":"https://github.com/qualiture/hana-linter","title":"qualiture/hana-linter README — How It Works","checked":"2026-10-26","quote":"hana-linter reads a `.hana-linter.json` file and validates artifact file names against rules grouped by extension."},{"url":"https://github.com/qualiture/hana-linter","title":"qualiture/hana-linter README — Exit Codes","checked":"2026-10-26","quote":"This makes the CLI suitable for CI pipelines."},{"url":"https://github.com/qualiture/hana-linter","title":"qualiture/hana-linter README — Parser Status","checked":"2026-10-26","quote":"`contentRuleSets` targeting `.hdbanalyticalprivilege` or `.hdbconstraint` will silently return no results — no identifiers are extracted and no content issues are raised."}]}],"provenance":{"discovered_via":[{"source":"source:npm"}],"first_seen":"2026-10-26"},"drafted_with_ai":true,"maintainers":["actor:qualiture"],"contributors":["actor:qualiture"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"fair","evidence":"4 months since release"},{"label":"Continuity","tier":"fair","evidence":"2 contributors, 1 publisher"},{"label":"Repository","tier":"good","evidence":"pushed 2026-06, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"poor","evidence":"no release since @sap/cds 10 shipped (July 2026)"},{"label":"Maintainer's CI","tier":"good","evidence":"Publish NPM Package green, 2026-06-22"}],"practice":[{"label":"Tests","tier":"good","evidence":"12 test files, npm test"},{"label":"Docs","tier":"good","evidence":"docs/ with 22 pages, README 17 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":11,"unit":"installs/week"},{"value":0,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"1.4.0","majors":{"1":{"version":"1.0.0","date":"2026-06-19"},"0.1":{"version":"0.1.1","date":"2026-06-18"},"0.2":{"version":"0.2.0","date":"2026-06-18"}},"license":"MIT","first_release":"2026-06-18","last_release":"2026-06-22","releases":11,"cadence_days":0,"maintainers":1,"repository":"git+https://github.com/qualiture/hana-linter.git","repository_directory":null,"peer_cds":null,"dependencies":2,"node_engine":null,"test_script":true,"types":true,"downloads_weekly":11,"downloads_monthly":118,"stars":0,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-06-22","license_spdx":null,"org_owned":false,"default_branch":"main","created_at":"2026-06-18T13:11:11Z","open_prs":0,"tree_truncated":false,"test_files":12,"workflows":1,"other_ci":false,"readme_bytes":17296,"docs_files":22,"changelog":true,"license_file":false,"dts_files":0,"first_commit":"2026-06-18","last_commit":"2026-06-22","commits":37,"contributors":2,"ci_status":"success","ci_run_at":"2026-06-22","ci_workflow":"Publish NPM Package","ci_event":"push","readme_path":"README.md","readme_sha":"b37da744e727bd37ca2248c3ee56cea65024c77b","months_since_release":4,"dormant":false,"repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:qualiture","name":"Robin van het Hof","json":"/actors/qualiture.json"}],"contributors":[{"ref":"actor:qualiture","name":"Robin van het Hof","json":"/actors/qualiture.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}