All skills
secondsky avatar

/sapui5-linter

@620a19a
by Eddiesecondsky/sap-skills456 stars
120

Use this skill when working with the UI5 Linter (@ui5/linter) for static code analysis of SAPUI5/OpenUI5 applications and libraries. Covers setup, configuring linting rules, running the linter to detect deprecated APIs, global variable usage, CSP violations, and manifest issues. Supports autofix for deprecated API usage, global references, event handlers, and manifest properties. Includes CI/CD integration, pre-commit hooks, and UI5 2.x migration preparation.

Use this Skill: https://skilld.dev/gh/secondsky/sap-skills/sapui5-linter

This session only. Nothing lands on disk.

referencescli-options.md

≈3.3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

UI5 Linter - CLI Options Complete Reference

Source: https://github.com/UI5/linter/blob/main/README.md Last Updated: 2025-11-21 UI5 Linter Version: 1.22.0


Command Structure

ui5lint [files...] [options]

Description: Static code analysis tool for UI5 applications and libraries.

Basic Usage:

# Lint entire project
ui5lint

# Lint specific files
ui5lint "webapp/**/*.js"

# Lint multiple patterns
ui5lint "webapp/**/*.js" "webapp/**/*.xml"

Output & Formatting Options

--details

Description: Display comprehensive information about findings.

Default: false (shows summary only)

Usage:

ui5lint --details

Output Difference:

# Without --details:
webapp/controller/Main.controller.js
  Line 45: Deprecated API: sap.ui.getCore()

# With --details:
webapp/controller/Main.controller.js
  Line 45: Deprecated API: sap.ui.getCore()
    Details: sap.ui.getCore() is deprecated since UI5 1.118
    Replacement: Use sap/ui/core/Core module instead
    Severity: Warning
    Rule: no-deprecated-api

--format <type>

Description: Output format selection.

Options: stylish | json | markdown | html

Default: stylish

Usage:

# Human-readable console output (default)
ui5lint --format stylish

# Machine-parseable JSON
ui5lint --format json

# Documentation-friendly Markdown
ui5lint --format markdown

# Browser-viewable HTML
ui5lint --format html

Output Examples:

stylish (default):

webapp/controller/Main.controller.js
  45:12  warning  Deprecated API: sap.ui.getCore()  no-deprecated-api

✖ 1 problem (0 errors, 1 warning)

json:

[
  {
    "filePath": "webapp/controller/Main.controller.js",
    "messages": [
      {
        "ruleId": "no-deprecated-api",
        "severity": 1,
        "message": "Deprecated API: sap.ui.getCore()",
        "line": 45,
        "column": 12
      }
    ],
    "errorCount": 0,
    "warningCount": 1
  }
]

markdown:

## webapp/controller/Main.controller.js

| Line | Column | Severity | Message | Rule |
|------|--------|----------|---------|------|
| 45 | 12 | warning | Deprecated API: sap.ui.getCore() | no-deprecated-api |

**1 problem (0 errors, 1 warning)**

html: Generates a styled HTML report with filtering capabilities.

Redirecting Output:

# Save to file
ui5lint --format markdown > lint-report.md
ui5lint --format json > lint-results.json
ui5lint --format html > lint-report.html

--quiet

Description: Show only errors, suppress warnings.

Default: false (shows both errors and warnings)

Added in: v1.14.0

Usage:

ui5lint --quiet

Use Cases:

  • CI/CD pipelines where only errors should fail the build
  • Focusing on critical issues first
  • Gradual migration (fix errors, then warnings)

Example:

# Without --quiet: Shows 5 errors, 20 warnings
ui5lint
# Exit code: 1 (errors found)

# With --quiet: Shows only 5 errors
ui5lint --quiet
# Exit code: 1 (errors found)

File Management Options

--fix

Description: Automatically correct specific issues.

Default: false

Usage:

# Fix all auto-fixable issues
ui5lint --fix

# Fix specific files
ui5lint --fix "webapp/controller/**/*.js"

# Preview fixes without applying (dry-run)
UI5LINT_FIX_DRY_RUN=true ui5lint --fix

Supported Rules with Autofix:

  • no-globals: Replace global references with module imports
  • no-deprecated-api: Fix supported deprecated APIs (limited)
  • no-ambiguous-event-handler: Update event handler notation
  • no-removed-manifest-property: Remove incompatible manifest properties

Important:

  • ⚠️ Creates a backup before modifying files
  • ⚠️ Not all issues can be auto-fixed (see autofix-complete.md)
  • ⚠️ Always review changes before committing
  • ⚠️ Use dry-run mode to preview changes first

Example Workflow:

# 1. Preview changes
UI5LINT_FIX_DRY_RUN=true ui5lint --fix

# 2. Apply fixes
ui5lint --fix

# 3. Review changes
git diff

# 4. Test
npm test

--ignore-pattern <pattern>

Description: Exclude specific files or directories from analysis.

Default: None (lints all files)

Usage:

# Ignore single directory
ui5lint --ignore-pattern "webapp/thirdparty/**"

# Ignore multiple patterns
ui5lint --ignore-pattern "**/*.test.js" --ignore-pattern "webapp/vendor/**"

# Ignore specific files
ui5lint --ignore-pattern "webapp/libs/legacy.js"

Pattern Syntax:

  • Uses glob patterns (same as config file)
  • Patterns are relative to project root
  • Supports ** for recursive matching
  • Supports * for single-level matching
  • Supports ! prefix for negation

Common Patterns:

# Ignore all test files
ui5lint --ignore-pattern "**/*.test.js" --ignore-pattern "**/*.spec.js"

# Ignore third-party libraries
ui5lint --ignore-pattern "webapp/thirdparty/**" --ignore-pattern "webapp/vendor/**"

# Ignore generated files
ui5lint --ignore-pattern "dist/**" --ignore-pattern "build/**"

# Ignore specific directories
ui5lint --ignore-pattern "webapp/localService/**"

Note: Config file ignores option is generally preferred over CLI flag for persistent ignores.


--config <path>

Description: Specify a custom configuration file path.

Default: Searches for ui5lint.config.{js,mjs,cjs} in project root

Usage:

# Use custom config location
ui5lint --config config/custom-lint.config.js

# Use different config for CI
ui5lint --config .ui5lint.ci.config.js

Config File Formats:

  • .js - CommonJS or ESM (based on package.json type)
  • .mjs - ES Module
  • .cjs - CommonJS

Example:

// custom-lint.config.js
export default {
  ignores: ["webapp/thirdparty/**"],
  files: ["webapp/**/*.js", "webapp/**/*.xml"]
};

--ui5-config <path>

Description: Specify UI5 YAML configuration path.

Default: Searches for ui5.yaml or ui5-*.yaml in project root

Usage:

# Use custom UI5 config
ui5lint --ui5-config config/ui5-dev.yaml

# Use environment-specific config
ui5lint --ui5-config ui5-production.yaml

When to Use:

  • Multi-config UI5 projects
  • Different configs for dev/prod
  • Custom UI5 tooling configurations

Logging & Diagnostic Options

--log-level <level>

Description: Set logging verbosity.

Options: silent | error | warn | info | perf | verbose | silly

Default: info

Usage:

# Show only errors
ui5lint --log-level error

# Show detailed information
ui5lint --log-level verbose

# Show everything including internal details
ui5lint --log-level silly

# Silent (no logs, only results)
ui5lint --log-level silent

Log Level Hierarchy (each level includes all above):

silent   → No logging
error    → Critical errors only
warn     → Warnings and errors
info     → Informational messages (default)
perf     → Performance metrics
verbose  → Detailed processing information
silly    → Debug information and internals

Use Cases:

  • error: CI/CD pipelines
  • warn: Production environments
  • info: Normal development
  • verbose: Troubleshooting issues
  • silly: Debugging linter itself

--verbose

Description: Enable detailed logging output.

Default: false

Usage:

ui5lint --verbose

Equivalent to: --log-level verbose

Output Includes:

  • File processing progress
  • Rule execution details
  • Configuration loading information
  • Module resolution paths

Example Output:

ui5lint --verbose

verbose Loading configuration from /project/ui5lint.config.js
verbose Processing webapp/controller/Main.controller.js
verbose Running rule: no-deprecated-api
verbose Running rule: no-globals
verbose Found 2 issues in webapp/controller/Main.controller.js
verbose Processing webapp/view/Main.view.xml
...

--perf

Description: Display performance measurements.

Default: false

Usage:

ui5lint --perf

Output Example:

ui5lint --perf

Performance Metrics:
  Configuration Loading: 45ms
  File Discovery: 120ms
  Parsing: 1,245ms
  Rule Execution: 2,340ms
  Reporting: 67ms
  Total: 3,817ms

Files Processed: 156
Rules Executed: 19
Issues Found: 23

Use Cases:

  • Performance optimization
  • Identifying slow rules
  • Benchmarking
  • Large codebase analysis

Combine with --verbose:

ui5lint --perf --verbose
# Shows detailed per-file performance

--silent

Description: Disable all log output.

Default: false

Usage:

ui5lint --silent

Equivalent to: --log-level silent

Output: Only linting results, no progress or diagnostic information

Use Cases:

  • Scripting and automation
  • Parsing JSON output without noise
  • CI/CD where only exit code matters

Example:

# Only show JSON results, no logs
ui5lint --format json --silent > results.json

# Use exit code only
ui5lint --silent
if [ $? -eq 0 ]; then
  echo "No issues found"
fi

Information Options

--version

Description: Display version information.

Usage:

ui5lint --version

Output:

1.22.0

Use Cases:

  • Verify installed version
  • CI/CD version checks
  • Debugging environment issues

Script Example:

#!/bin/bash
REQUIRED_VERSION="1.20.0"
CURRENT_VERSION=$(ui5lint --version)

if [ "$CURRENT_VERSION" != "$REQUIRED_VERSION" ]; then
  echo "Wrong UI5 Linter version: $CURRENT_VERSION (expected $REQUIRED_VERSION)"
  exit 1
fi

--help

Description: Display help information.

Usage:

ui5lint --help

Output: Lists all available options with descriptions.


File Patterns (Positional Arguments)

Basic Patterns

# Lint specific directory
ui5lint webapp/

# Lint specific file type
ui5lint "**/*.js"

# Lint multiple patterns
ui5lint "webapp/**/*.js" "webapp/**/*.xml"

Advanced Patterns

# Lint controllers only
ui5lint "webapp/controller/**/*.js"

# Lint views and fragments
ui5lint "webapp/view/**/*.xml" "webapp/fragment/**/*.xml"

# Exclude test files
ui5lint "webapp/**/*.js" "!webapp/test/**"

# Lint specific files
ui5lint webapp/Component.js webapp/manifest.json

Pattern Syntax

Glob Patterns:

  • * - Matches any characters except /
  • ** - Matches any characters including / (recursive)
  • ? - Matches single character
  • [abc] - Matches any character in brackets
  • {a,b} - Matches either a or b
  • ! - Negation (exclude pattern)

File Types Supported:

  • .js - JavaScript
  • .ts - TypeScript
  • .xml - XML views/fragments
  • .json - JSON (manifest.json, etc.)
  • .html - HTML
  • .yaml - YAML (ui5.yaml, etc.)

Common Option Combinations

Development Workflow

# Quick check with details
ui5lint --details

# Focus on errors only
ui5lint --quiet

# Verbose output for troubleshooting
ui5lint --verbose --details

CI/CD Pipeline

# Fail on errors only, JSON output
ui5lint --quiet --format json --silent > lint-results.json

# Performance tracking
ui5lint --perf --format json > perf-report.json

Autofix Workflow

# Preview fixes
UI5LINT_FIX_DRY_RUN=true ui5lint --fix --verbose

# Apply fixes to specific files
ui5lint --fix "webapp/controller/**/*.js" --details

# Fix with detailed reporting
ui5lint --fix --verbose --perf

Large Codebase

# Lint with performance monitoring
ui5lint --perf --quiet

# Lint specific directories only
ui5lint "webapp/controller/" "webapp/view/" --ignore-pattern "**/*.test.js"

# Detailed analysis of specific area
ui5lint "webapp/controller/" --details --verbose

Generate Reports

# Markdown report for documentation
ui5lint --format markdown --details > LINT_REPORT.md

# HTML report for team review
ui5lint --format html --details > lint-report.html

# JSON for programmatic analysis
ui5lint --format json --silent > results.json

Exit Codes

Code Meaning
0 No errors or warnings found
1 Errors found (or warnings if not using --quiet)
2 Internal error or invalid usage

Examples:

# Success - no issues
ui5lint
echo $? # Output: 0

# Warnings found (without --quiet)
ui5lint
echo $? # Output: 1

# Errors found
ui5lint --quiet
echo $? # Output: 1

# Invalid option
ui5lint --invalid-flag
echo $? # Output: 2

Environment Variables

UI5LINT_FIX_DRY_RUN

Description: Preview autofix changes without applying them.

Values: true | false

Default: false

Usage:

UI5LINT_FIX_DRY_RUN=true ui5lint --fix

Output: Shows what would be changed without modifying files.


Further Reading


Document Version: 1.0 Last Verified: 2025-11-21 Next Review: 2026-02-21

Source: SKILL.md on GitHub

No alerts16d3 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill is a comprehensive documentation and template resource for integrating and using the SAPUI5/OpenUI5 Linter (@ui5/linter). It contains no executable scripts or malicious content and adheres to safe development practices.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

Signed by skilld at 620a19a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Activeupdated 2 months ago
Other metadata
metadata
{
  "maintainer": "Eduard Jiglau",
  "maintainer_email": "hello@sap-ai-skills.com",
  "website": "https://sap-ai-skills.com",
  "version": "2.4.1",
  "last_verified": "2026-06-14",
  "ui5_linter_version": "1.22.0",
  "source": "https://github.com/UI5/linter",
  "documentation": "https://github.com/UI5/linter/blob/main/README.md",
  "keywords": [
    "SAPUI5",
    "OpenUI5",
    "UI5 Linter",
    "@ui5/linter",
    "static analysis",
    "deprecated APIs",
    "global variables",
    "CSP",
    "manifest.json",
    "ui5.yaml",
    "ESLint",
    "pre-commit hooks",
    "GitHub Actions",
    "CI/CD",
    "Node.js",
    "TypeScript",
    "XML",
    "JSON",
    "HTML",
    "YAML",
    "OData v2/v4",
    "async",
    "event handlers",
    "jQuery",
    "autofix",
    "performance optimization",
    "19 linting rules",
    "no-deprecated-api",
    "no-globals",
    "no-async-component-flags",
    "manifest-v2",
    "UI5 2.x migration"
  ]
}

README badge

README badge for secondsky/sap-skills/sapui5-linter