@ui5/linter
SAP's static analysis tool for UI5 projects: it scans JavaScript, TypeScript, XML, JSON and other files for deprecated APIs, global variables and possible CSP violations, and fixes part of them with --fix.
UI5 2.x no longer has anything that was deprecated with or before UI5 1.136, so a project that still uses those APIs breaks on the next major release. ui5lint scans the project and reports deprecated UI5 libraries and framework APIs, global variables, possible CSP violations and deprecated component and manifest configuration; it finds deprecations by giving the TypeScript compiler the SAPUI5 type definitions and asking it whether a symbol is deprecated. ui5lint --fix rewrites part of the findings, among them UI5 globals into module imports, the tap event of sap/m/Button into press, some deprecated sap.ui.getCore() calls and the deprecated attributes of the bootstrap script in HTML files, and then lints once more for what is left. It is not complete: its README says it is "not yet covering all aspects and best practices for UI5 2.x", that a project still needs testing on UI5 2.x, and that not every finding can be fixed automatically. ui5con-2026-ui5-linter-workshopui5con-2026-ui5-linter-workshopSAP's UI5con hands-on workshop that takes a legacy UI5 app, seeded with deprecated APIs and inline scripts, from its first UI5 linter report to a clean, CSP-compliant one.sap official, ui5 takes a legacy app from its first report to a clean one, and @ui5/mcp-server@ui5/mcp-serverSAP's MCP server for UI5 development: ten tools that scaffold an app or a card, read the project in front of the agent, and run the linter and the manifest validator against it.sap official, ui5 runs it for an agent.
Facts
Where it sits
Who is behind it
In the atlas: maintains 8@UI5maintainerAjinkya PatilContributes to this
In the atlas: contributes to 112@ajinkyapatil8190Frank WeigelContributes to this
In the atlas: contributes to 10@codeworriorYavor IvanovContributes to this
In the atlas: contributes to 17@d3xter666Guilherme DellagustinContributes to this
In the atlas: contributes to 27@dellagustin-sapFlorian VogtContributes to this
In the atlas: contributes to 50, wrote 2@flovogtJustin WilabyContributes to this
In the atlas: contributes to 1@justinwilabyMarian ZeisContributes to this
In the atlas: maintains 35, contributes to 86, wrote 25@marianfooMatthias OßwaldContributes to this
In the atlas: contributes to 29@matz3Max ReichmannContributes to this
In the atlas: contributes to 10@maxreichmannOpenUI5 BotContributes to this
In the atlas: contributes to 5@openui5bot14 contributors
What it declares
Every artifact
- Type
- CLI
- Origin
- By SAP
- Runtime
- Node.js
As a CLI
- Distributed through
- npm
Connections
Catching problems in code, models and configuration by rules
Rule-based checker for SAPUI5 and OpenUI5 projects
Download
Install
npm add @ui5/linterDerived from the package name. No recipe recorded; the README has the configuration.
README
quoted from UI5/linter under Apache-2.0, read
UI5 Linter
A static code analysis tool for UI5
- UI5 Linter
Description
UI5 linter is a static code analysis tool for UI5 projects. It checks JavaScript, TypeScript, XML, JSON, and other files in your project and reports findings.
Features
UI5 linter scans your UI5 project and detects issues that might interfere with its smooth running with UI5 2.x. In particular, note that all APIs and features that were deprecated with or before UI5 1.136 are no longer available in UI5 version 2.x. The hints and fixes provided by UI5 linter therefore target a UI5 runtime of version 1.136 or newer. UI5 linter reports findings for deprecations in the following areas:
- Usage of deprecated UI5 libraries
- Usage of deprecated UI5 framework APIs
- Usage of global variables
- Possible CSP violations
- Deprecated component and manifest configurations
Note
While UI5 linter already provides many detection features, it is not yet covering all aspects and best practices for UI5 2.x. The intention of UI5 linter is to detect as many issues as possible that a project running with UI5 2.x might be facing. However, you'll still need to test your UI5 project with UI5 2.x as soon as it is made available. To reveal additional issues, the UI5 team plans to release more versions of UI5 linter over the next months.
Rules
UI5 linter comes with a set of predefined rules that are enabled by default. You can disable specific rules in the code via Directives.
A list of all available rules can be found on the Rules page.
Requirements
Installation
Install the CLI using the npm package manager:
# Global
npm install --global @ui5/linter
# In your project
npm install --save-dev @ui5/linter
Usage
Run the ui5lint [files...] command in your project root folder
> ui5lint
UI5 linter report:
/application/webapp/controller/App.controller.js
10:4 error Call to deprecated function 'attachTap' of class 'Button' no-deprecated-api
/application/webapp/manifest.json
81:17 error Use of deprecated model type 'sap.ui5/models/odata/type="sap.ui.model.odata.ODataModel"' no-deprecated-api
/application/webapp/test/unit/unitTests.qunit.js
6:1 error Call to deprecated function 'attachInit' of class 'Core' no-deprecated-api
6:1 error Call to deprecated function 'getCore' (sap.ui.getCore) no-deprecated-api
6:1 error Access of global variable 'sap' (sap.ui.getCore) no-globals
/application/webapp/view/Main.view.xml
16:39 error Import of deprecated module 'sap/m/MessagePage' no-deprecated-api
22:5 error Use of deprecated property 'blocked' of class 'Button' no-deprecated-api
7 problems (7 errors, 0 warnings)
Note: Use "ui5lint --details" to show more information about the findings
You can provide multiple glob patterns as arguments after the ui5lint command to filter and narrow down the linting results.
Note: This option does not permit you to include files that normally wouldn't be checked (e.g. files outside of the webapp folder in application projects).
Note: Only POSIX separators are allowed, regardless of the target platform.
> ui5lint "webapp/**/*.xml"
UI5 linter report:
/application/webapp/view/Main.view.xml
16:39 error Import of deprecated module 'sap/m/MessagePage' no-deprecated-api
22:5 error Use of deprecated property 'blocked' of class 'Button' no-deprecated-api
2 problems (2 errors, 0 warnings)
Note: Use "ui5lint --details" to show more information about the findings
Options
--details
Show more information about the findings and how to fix them.
Example:
ui5lint --details
--format
Choose the output format. Currently, stylish (default), json, markdown, and html are supported.
Example:
ui5lint --format json
To save the output to a file, use the > operator (works on macOS, Linux, and Windows):
Save to File:
ui5lint --format markdown > ui5-linter-findings.md
--fix
Attempt to automatically correct certain findings.
Example::
ui5lint --fix
Currently, issues of the following rules are fixable:
- no-globals: Usage of globals that are part of UI5 (e.g.
sap.m.Button) are replaced by the corresponding module import (in JS files) - no-deprecated-api: Usage of deprecated APIs
- Usages of some deprecated APIs on
sap.ui.getCore().getConfiguration()a.k.a. "Configuration Facade" are replaced by the corresponding recommended APIs (in JS files) - Usages of some deprecated APIs on
sap.ui.getCore()a.k.a. "Core Facade" are replaced by the corresponding recommended APIs (in JS files) - Usages of the deprecated
tapevent handler onsap/m/Buttonare replaced by the recommendedpressevent handler (in JS and XML files). Also, the associated event handler methodsattachTapanddettachTapare replaced by the correspondingattachPressanddetachPressmethods. - Usages of the deprecated
useExportToExcelproperty onsap/ui/comp/smarttable/SmartTableare replaced by theenableExportproperty (in JS and XML files) - Usages of the deprecated
synchronizationModeproperty onsap/ui/model/odata/v4/ODataModelare removed (in JS files) - Usages of the deprecated
minWidthproperty onsap/ui/layout/form/SimpleFormare removed (in JS and XML files) - Usages of deprecated attributes in a UI5 bootstrap script are replaced by the corresponding recommended attributes (in HTML files)
- Usages of some deprecated APIs on
After applying fixes, the linter runs another pass to detect any remaining issues. Not all findings may be fixable, so those issues may need to be addressed manually. See Scope of Autofix for examples of APIs that cannot be migrated automatically. Note that this list is not exhaustive; there are more APIs that are currently not supported by the Autofix.
Dry Run Mode
To preview the results without modifying any files, set the UI5LINT_FIX_DRY_RUN environment variable:
UI5LINT_FIX_DRY_RUN=true ui5lint --fix
In this mode, the linter will show the messages after the fixes would have been applied but will not actually change the files.
--quiet
Report errors only, hiding warnings. Similar to ESLint's --quiet option.
Example:
ui5lint --quiet
--ignore-pattern
Pattern/files that will be ignored during linting. Can also be defined in ui5lint.config.js.
Example:
ui5lint --ignore-pattern "webapp/thirdparty/**" "webapp/test/e2e/**"
--config
Load a custom config by relative file path (default: ./ui5lint.config.js).
Example:
ui5lint --config ./ui5lint-custom.config.js
--ui5-config
Set a path for the desired UI5 yaml config file (default: ./ui5.yaml).
Example:
ui5lint --ui5-config ./configs/ui5-custom.yaml
--log-level
Set the logging level (default: info).
Possible values are: silent, error, warn, info, perf, verbose, silly
Example:
ui5lint --log-level=warn
--verbose
Enable verbose logging.
Example:
ui5lint --verbose
--perf
Enable performance measurements and related logging.
Example:
ui5lint --perf
--silent
Disable all log output.
Example:
ui5lint --silent
--version
Prints the current version and CLI script location.
Example:
ui5lint --version
Configuration
UI5 linter can easily be configured with an external configuration file, allowing you to customize how the linter behaves. For example, you can tell it to ignore specific files or directories.
Configuration File Location
The configuration file must be placed in the root directory of your project, alongside the ui5.yaml and package.json files. The linter will automatically detect and load the file when it runs.
Supported Configuration File Names
You can name your configuration file using one of the following formats:
ui5lint.config.jsui5lint.config.mjsui5lint.config.cjs
If you need to specify a custom configuration file, you can provide it using the --config parameter via the command line.
Configuration File Format
ESM (ECMAScript Modules):
export default {
ignores: [
"webapp/thirdparty/**",
"webapp/test/**",
"!webapp/test/integration/**",
],
};
CommonJS:
module.exports = {
ignores: [
"webapp/thirdparty/**",
"webapp/test/**",
"!webapp/test/integration/**",
],
};
Configuration Options
-
ignores: This option allows you to define glob patterns to ignore specific files or directories during linting. Patterns are relative to the root of the project. You can also un-ignore specific files by using the
!prefix. The order of the patterns matters; later patterns override earlier ones.Example:
ignores: [ "webapp/test/**", // Ignore all files in the test folder "!webapp/test/integration/**", // Un-ignore files in a specific subdirectory ];In this way, you can control which files UI5 linter should process and which it should ignore.
-
files: This option allows you to specify glob patterns to target particular files or directories for linting. However, it does not enable you to include files that are typically excluded from the process (e.g., files outside the
webappdirectory in application projects). Only POSIX path separators (/) are supported, irrespective of the platform you're using.Note: This option corresponds to the CLI command
ui5lint [files...]. If CLI's[files...]are provided, the configuration gets ignored.Example:
files: [ "webapp/index.html", "webapp/**/*", // Lint all files and subdirectories within "webapp/" ];
Directives
UI5 linter supports directives similar to ESLint's configuration comments, allowing you to control linting rules in specific sections of your code.
- ui5lint-disable: Disables all linting rules from the position of the comment
- ui5lint-enable: Re-enables linting rules that were disabled by ui5lint-disable
- ui5lint-disable-line: Disables all linting rules for the current line
- ui5lint-disable-next-line: Disables all linting rules for the next line
Specifying Rules
JavaScript / TypeScript
You can disable specific rules by listing them after the directive. Rules must be separated by commas if several are given:
/* ui5lint-disable no-deprecated-api *//* ui5lint-disable no-deprecated-api, no-deprecated-library */// ui5lint-disable-line no-deprecated-api
An explanation why a rule is disabled can be added after the rule name; it must be separated from the preceding text by two dashes:
// ui5lint-disable-next-line no-deprecated-api -- explanation
XML / HTML
<!-- ui5lint-disable no-deprecated-api --><!-- ui5lint-disable-next-line --><Text tap=".onTap"/> <!-- ui5lint-disable-line no-deprecated-api -->
In XML and HTML files, depending on your browser runtime, the use of a double-hyphen -- is usually not allowed, making it impossible to append an explanation to your directive in the same way as shown above for JavaScript / TypeScript files. You need to insert a separate comment statement in the same line of code for this purpose:
<!-- ui5lint-disable-next-line no-deprecated-api --> <!-- explanation -->
Also, since comments can't be placed inside XML and HTML tags, you might need to use ui5lint-disable and ui5lint-enable directives outside of the tags instead of ui5lint-disable-line or ui5lint-disable-next-line.
<!-- ui5lint-disable no-deprecated-api -->
<Text
tap=".onTap"
/>
<!-- ui5lint-enable no-deprecated-api -->
YAML
# ui5lint-disable no-deprecated-api# ui5lint-disable-next-line
Scope
Directives are currently supported in JavaScript and TypeScript files as well as XML, HTML and YAML files.
Node.js API
ui5lint
The ui5lint function is the main entry point for the UI5 linter. It resolves with an array of LinterResult objects, identical to the CLI output with the --format json option.
See the src/index.ts file for the available options.
import {ui5lint} from "@ui5/linter";
// Run the linter with default options
await ui5lint();
// Run the linter with custom options
await ui5lint({
filePatterns: ["webapp/**/*.xml"],
ignorePatterns: ["webapp/thirdparty/"],
details: true,
fix: true,
config: "ui5lint-foo.config.mjs",
noConfig: true,
coverage: true,
ui5Config: "ui5-lint.yaml",
rootDir: "/path/to/project",
});
UI5LinterEngine
The UI5LinterEngine class can be used to run ui5lint multiple times with different options while reusing and caching common parts to improve performance.
Note: The lint method can only be called once at a time. If you want to lint multiple projects in parallel, use worker threads or separate processes. The linting process is CPU-heavy and there is no benefit in parallelizing within the same Node.js process (single-threaded).
import {UI5LinterEngine} from "@ui5/linter";
const linterEngine = new UI5LinterEngine();
// Run the linter with default options
await linterEngine.lint();
// Run the linter with custom options
await linterEngine.lint({
filePatterns: ["webapp/**/*.xml"],
ignorePatterns: ["webapp/thirdparty/"],
details: true,
fix: true,
config: "ui5lint-foo.config.mjs",
noConfig: true,
coverage: true,
ui5Config: "ui5-lint.yaml",
rootDir: "/path/to/project",
});
Internals
UI5 linter makes use of the TypeScript compiler to parse and analyze the source code (both JavaScript and TypesScript) of a UI5 project. This allows for a decent level of accuracy and performance.
For this purpose, UI5 linter provides the TypeScript compiler with the SAPUI5 type definitions. The compiler can then infer the usage of UI5 classes and modules in the code. UI5 linter only needs to ask the compiler whether a given function or property is deprecated, and the compiler will provide this information with the full deprecation text.
In some cases, UI5 linter will transpile source files before analyzing them. For example, the sap.ui.require syntax is transpiled to import statements (basically ESM), so that the TypeScript compiler can understand them.
Similarly, UI5 XML views are transpiled to a JavaScript representation that can be analyzed in the same way as regular JavaScript code. In both cases, source maps are used to map any findings back to the correct line and column position in the original source code.
There are additional checks built on top of the compiler API. This applies, for example, to the usage of global variables provided by the UI5 framework (e.g. sap.m.Button), or to the correct usage of asynchronous component initialization.
For some checks, however, the TypeScript compiler approach is insufficient. In some of those cases, an extract of the data structure that powers the UI5 SDK is used (the so-called "api.json"). In other cases, the checks are hard-coded in the linter itself. For example for checks in manifest.json and HTML files.
Support, Feedback, Contributing
This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.
You can also chat with us in the #tooling channel of the OpenUI5 Community Slack. For public Q&A, use the ui5-tooling tag on Stack Overflow.
Security / Disclosure
If you find any bug that may be a security problem, please follow our instructions at in our security policy on how to report it. Please do not create GitHub issues for security-related doubts or problems.
Code of Conduct
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.
Licensing
Copyright 2026 SAP SE or an SAP affiliate company and contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.
History
Dependencies 4
Notes
Dependencies 9
Notes
Dependencies
- Bump @sapui5/types from 1.136.21 to 1.136.22 (7f77ca8)
- Bump fast-xml-parser from 5.10.1 to 5.11.0 (d80ca22)
- Bump globals from 17.10.0 to 17.11.0 (48c4a84)
- Bump globals from 17.9.0 to 17.10.0 (3f8d48a)
- Bump magic-string from 1.1.0 to 1.2.0 (#1120) (6529e98)
- lockfile: In-range update of npm dependencies (d4966b3)
- lockfile: In-range update of npm dependencies (f3357dc)
- lockfile: In-range update of npm dependencies (b8f76bb)
- lockfile: In-range update of npm dependencies (18e428e)
Dependencies 7
Notes
Dependencies
- Bump @sapui5/types from 1.136.19 to 1.136.20 (6f37252)
- Bump magic-string from 0.30.21 to 1.0.0 (1a79748)
- lockfile: In-range update of npm dependencies (7e6d394)
- lockfile: In-range update of npm dependencies (d8a7d2b)
- lockfile: In-range update of npm dependencies (8c08c37)
- lockfile: In-range update of npm dependencies (7963016)
- lockfile: In-range update of npm dependencies (c68ba3b)
Features 1, Fixes 1, Dependencies 4
Notes
Dependencies 5
Features 1, Dependencies 5
Notes
Dependencies 5
Notes
Fixes 1, Dependencies 6
Notes
Features 1, Fixes 1, Dependencies 5
Notes
Features
Bug Fixes
Dependencies
Features 3, Dependencies 1
Notes
Features 2, Dependencies 12
Notes
Features
- autofix: Fix UI5 Bootstrap Parameters in HTML (#779) (ee05a3a)
- Offer autofix for deprecated sap/ui/base/Object.isA API (#796) (315e334)
Dependencies
- Bump @jridgewell/sourcemap-codec from 1.5.4 to 1.5.5 (101e0f5)
- Bump @jridgewell/trace-mapping from 0.3.29 to 0.3.30 (fe6638c)
- Bump @sapui5/types from 1.136.3 to 1.136.6 (6d295d3)
- Bump chalk from 5.4.1 to 5.5.0 (33450ad)
- Bump chalk from 5.5.0 to 5.6.0 (94df61f)
- Bump sax-wasm from 3.0.10 to 3.0.11 (d4025d8)
- Bump sax-wasm from 3.0.11 to 3.0.12 (9eaeea3)
- Bump sax-wasm from 3.0.12 to 3.1.0 (c34bc53)
- Bump sax-wasm from 3.0.8 to 3.0.9 (4b45c03)
- Bump sax-wasm from 3.0.9 to 3.0.10 (9c11249)
- Bump sax-wasm from 3.1.0 to 3.1.1 (ca7cb9d)
- Bump typescript from 5.8.3 to 5.9.2 (d234126)
Features 2, Fixes 1, Dependencies 6
Notes
Features
- autofix: Fix deprecated module import for 'sap/ui/core/Configuration' (007d42b)
- autofix: Fix global 'sap.ui.getCore()' (7caa612)
Bug Fixes
- Show plural form for fatal errors only in case more than 1 fatal error occurs (a13240e)
Dependencies
- Bump @jridgewell/sourcemap-codec from 1.5.0 to 1.5.1 (e4f0460)
- Bump @jridgewell/sourcemap-codec from 1.5.1 to 1.5.3 (aca80c3)
- Bump @jridgewell/trace-mapping from 0.3.25 to 0.3.26 (071fb17)
- Bump @jridgewell/trace-mapping from 0.3.26 to 0.3.28 (c115c94)
- Bump @jridgewell/trace-mapping from 0.3.28 to 0.3.29 (4c761be)
- Bump globals from 16.2.0 to 16.3.0 (6aeeeec)
Features 5, Fixes 3, Dependencies 3
Notes
Features
- autofix: Fix deprecated sap/ui/core/Core APIs
- autofix: Fix deprecated sap/ui/core/Configuration APIs (372d80b)
- autofix: Fix deprecated jQuery.sap APIs
- autofix: Fix deprecated property assignments (#711)
- cli: Add 'quiet' option to report errors only (#629) (6c94b01)
Bug Fixes
- autofix: Prevent invalid delete expressions (3f3c720)
- SourceFileLinter: Remove double quote (e7cabcb)
- TypeScript error "Cannot find module './MessageArgs.js'" (08ff3e5)
Dependencies
Features 1, Fixes 3, Performance 1, Dependencies 1
Notes
Features
Bug Fixes
- Cannot read properties of undefined (reading 'map') (28ab574)
- Detect outdated notation for bootstrap attribute log-level (#603) (4fb76f8)
- Suppress eslint finding (93acfff)
Performance Improvements
- Prevent unnecessary TypeScript libReplacement lookup (dac9f88)
Dependencies
- Bump typescript from 5.7.3 to 5.8.2 (ed84349)
Features 1, Fixes 5
Notes
Features 1, Fixes 4, Dependencies 1
Notes
Features
Bug Fixes
- Check bindings of all ManagedObject subclasses (5435623)
- False-positives for requestCurrencyCodes/requestUnitsOfMeasure (24f6ea7)
- Improve deprecation detection (f1719f0)
- Valid Js syntax after XML transpilation (#552) (98b89d5)
Dependencies
- Bump sax-wasm from 3.0.4 to 3.0.5 (79e0549)
Features 6, Fixes 3, Dependencies 1
Notes
Features
- Add global detection for XML Templating (45729a0)
- binding: Add detection for composite bindings (parts) (#541) (561d482)
- Check event handlers in XML views/fragments (57d8251)
- Detect inline XML fragments & views (#519) (e85ad26)
- Detect legacy template:require (space-separated list) (76394f8)
- OData implicit globals detection (JS/TS) (#533) (257d005)
Bug Fixes
- formatter: Remove duplicate findings (d240b4a)
- Handle relative imports within framework libs (b063e4d)
- Prevent false-positive "prefer-test-starter" in testsuite (follow-up) (45edfe0)
Dependencies
- Bump @sapui5/types to 1.120.26 (fbb5016)
Features 5, Fixes 7, Dependencies 1
Notes
Features
- binding: Detect global formatter notation in bindings (0845caf)
- binding: Detect more globals in property- and aggregation bindings (406f6f5)
- Detection for UI5 Model Data Types (#480) (572db29)
- Formatter: Detect globals and strings of formatters in bindings (JS/TS) (#499) (291ffed)
- OData implicit globals detection (#510) (daff87b)
Bug Fixes
- binding: Resolve 'Bad name' error on tab (1466abb)
- CodeQL scan (#509) (67e86d8)
- Improve overall code detection (#489) (af6dbd4)
- Prevent false-positive "prefer-test-starter" in testsuite (2e733d2)
- Provide check for alternative names of the properties (#506) (8d2ad2f)
- XML: Do not fail on empty core:require attribute (4efb2d7)
- xmlTemplate: Fix column position off-by-one (07169f6)
Dependencies
Features 5, Fixes 3, Dependencies 1
Notes
Features
- Detect deprecated 'type' in
Controller#loadFragment(61fa2c2) - Detect deprecated 'type' in
Fragment.load/<core:Fragment>(16e3f94) - Detect deprecated 'type' in
View.create/<mvc:View>(14667aa) - Detect usage of non exported values by library.js (#468) (be2cbb7)
- Improve deprecation detection of property accesses (42fb8a5)
Bug Fixes
- amdTranspiler: Handle NewExpression (4988013)
- API: Remove ui5Config parameter defaulting (e31d89e)
- parsing-error: Failed to map back to source (2876f35)
Dependencies
- Bump typescript from 5.7.2 to 5.7.3 (d3f0471)
- Detect deprecated 'type' in
Features 3, Fixes 3, Dependencies 2
Notes
Features
- Add further deprecated configuration option detection (#357) (28e60a0)
- Detect non-Test Starter test setups (#448) (8d7442f)
- linter: Extend project initialization fallbacks (f9b0f96)
Bug Fixes
- Allow renderer v4 (#443) (2e2d8d2)
- ConfigManager: Resolve ESM import exception on Windows (87c21e6)
- messages: Remove superfluous quotes and comma around message details (49ff2f8)
Dependencies
Features 2, Fixes 4, Dependencies 1
Features 4, Fixes 2, Dependencies 1
Notes
Features
- Add ui5lint-disable directives (#327) (3c29e52)
- Detect deprecated themes set by Theming.setTheme() API (#389) (83b295f)
- Node API in ui5 linter (#400) (626f022)
- Test Starter: Detect deprecations in 'theme' property of test configuration (#387) (619457f)
Bug Fixes
Dependencies
- Bump @sapui5/types to 1.120.23 (96b46ca)
Fixes 6, Dependencies 1
Notes
Bug Fixes
- Check unmatched patterns (#334) (329f2cd)
- Consider config patterns in root level reader (#346) (b54f553)
- html: False positive for global function name in on-init bootstrap param (2495cc0)
- html: False positive for multiple bootstrap script tags (74ad824)
- html: Superfluous whitespace around deprecated library name (cf8b99b)
- Update texts + test samples & the respective test snapshots (#344) (5639a2f)
Dependencies
Features 4, Other 5
Notes
General
- Usage of deprecated UI5 libraries
- Usage of deprecated UI5 framework APIs
- Usage of global variables
- Possible CSP violations
- Deprecated component and manifest configurations
New Features in this release
Breaking 1, Features 2, Changed 1, Fixes 8, Dependencies 2
Notes
⚠ BREAKING CHANGES
- messages: Drop 'ui5-linter-' prefix from rule names
Features
- Allow excluding files from UI5 Linter checks (#264) (7181a94)
- Detect partially deprecated APIs (#286) (dc66f91)
Bug Fixes
- asyncComponentFlags: Fix detection of manifest: 'json' (single quotes) (8a6af93)
- Bad formatting (996e160)
- Ensure that results are in deterministic order (5cd8757)
- Eslint findings (9d67098)
- Eslint findings (f72109c)
- linter/html: Fix glob pattern to match HTML files (18d80af)
- NoGlobals: Fix false-positives for ElementAccessExpressions and some built-in globals (db0a057)
- Remove moduleResolution CompilerHost setting (1f1dbf8)
Dependencies
Code Refactoring
- messages: Drop 'ui5-linter-' prefix from rule names (119b61a)
Breaking 1, Features 2, Fixes 1, Dependencies 8
Notes
⚠ BREAKING CHANGES
- Support for older Node.js has been dropped. Only Node.js 20.11.x and >=22.0.0 as well as npm v8 or higher are supported.
Features
Bug Fixes
- Consider allowed globals when they're accessed via globalThis (d370803)
Dependencies
- Bump @jridgewell/sourcemap-codec from 1.4.15 to 1.5.0 (191620e)
- Bump @sapui5/types to 1.120.18 (f6f0e07)
- Bump @ui5/fs from 3.0.5 to 4.0.0 (6cb5130)
- Bump @ui5/logger from 3.0.0 to 4.0.1 (d650e1d)
- Bump @ui5/project from 3.9.2 to 4.0.0 (3834655)
- Bump typescript from 5.5.2 to 5.5.3 (d8ad2ee)
- Bump typescript from 5.5.3 to 5.5.4 (3f911a3)
- Bump update-notifier from 7.0.0 to 7.1.0 (b798d53)
Features 4, Fixes 2, Dependencies 2
Notes
Features
- Alerts for new ui5lint version in console (#57) (9b17887)
- Check script tags for inline JS (#48) (70b719a)
- Detect deprecations in ui5.yaml (in root directory) (#39) (db118b1)
- Detect pseudo modules (#60) (508d81d)
Bug Fixes
- amdTranspiler: Fix substiute for sap.ui.require errbacks (c52b53f)
- Respect src attribute for script tags and include module type for checks (#70) (2b28e5f)
Dependencies
Breaking 1, Features 2, Fixes 1, Performance 1, Dependencies 1
Notes
⚠ BREAKING CHANGES
- cli: Depending on how UI5 linter is being used, this change might change the behavior of that particular scenario. For example a build script might abort further processing, if any linting errors are detected.
Features
- Analyze sap.ui.core.Lib.init() call (#33) (6d5bcdb)
- cli: In case of errors, exit with code 1 (96331fc)
Bug Fixes
Performance Improvements
Dependencies
- Bump @sapui5/types to 1.120.11 (9cbdf1d)
Features 1, Fixes 2, Performance 1
Others providing
Compare all 11 on the Linting page →- @cbs-consulting/cds-eslint@cbs-consulting/cds-eslintAn ESLint plugin for CDS files carrying one consultancy's own rules, published so that the consultancy's projects lint their CDS models the same way.independent, capESLint plugin with one consultancy's rules for CDS filesfrom CAP
- @cbs-consulting/tools@cbs-consulting/toolsShared ESLint configuration for SAPUI5 and CAP projects, the config rather than the rules, so a team adopts a house style by adding one dependency.independent, capShared ESLint configuration for SAPUI5 and CAP projectsfrom CAP
- ui5plugin-linterui5plugin-linterA command-line linter for UI5 projects, run as ui5linter, that checks JavaScript and TypeScript classes, XML views and fragments, and i18n properties files.independent, ui5Command-line linter for UI5 classes, XML views and i18n filesfrom UI5
- ui5pluginui5pluginThe SAPUI5 Extension for Visual Studio Code: completion, definitions, CodeLens, diagnostics, code actions, hover and an XML formatter for UI5 views, controllers and manifest.json.independent, ui5SAPUI5 extension for Visual Studio Codefrom UI5
- eslint-plugin-better-cap-configeslint-plugin-better-cap-configA set of ESLint rules that read CAP configuration and flag the cds settings that have since been deprecated, putting that check in the linter a project already runs, with no dependencies of its own.independent, capESLint rules flagging deprecated CAP configurationfrom CAP
- hana-linterhana-linterA 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.independent, capRegex naming rules for SAP HANA artifacts in a CAP projectfrom CAP
- @sap/eslint-plugin-cds@sap/eslint-plugin-cdsSAP's ESLint plugin for CDS, carrying the model and environment rules capire calls best practice and universal for every CAP project.sap official, capSAP's ESLint plugin for CDSfrom CAP
- @sap-ux/eslint-plugin-fiori-tools@sap-ux/eslint-plugin-fiori-toolsESLint rules from the Fiori tools team, aimed at the parts of a project their generators produce.sap official, capESLint rules for projects the Fiori tools generators producefrom CAP
- vscode-ui5-language-assistantvscode-ui5-language-assistantSAP's VS Code extension for SAPUI5 and OpenUI5: completion, validation, hover tooltips, go to definition, quick fix and formatting for XML views, and completion and validation for manifest.json.sap official, ui5VS Code extension for SAPUI5 and OpenUI5 XML views and manifestfrom UI5
- @satiroglu/kaev@satiroglu/kaevA command line that runs rule-based checks over a SAPUI5 or OpenUI5 project, reporting each finding with a rule id, a category, a severity, a confidence and the file it sits in.independent, ui5Rule-based checker for SAPUI5 and OpenUI5 projectsfrom UI5
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
Contributors
History in the atlas
- First seen.
For your agent
- Ref
artifact:ui5-linter- JSON
- /artifacts/ui5-linter.json
- MCP
- Connecting an agent