ui5-linter icon indicating copy to clipboard operation
ui5-linter copied to clipboard

Add UI5 Linter Results to the VSCode's Report tab

Open d3xter666 opened this issue 1 year ago • 1 comments

Description

Currently, the UI5 Linter outputs results in an ESLint-like style to the console. To make these findings transferrable to the VSCode "Reports" tab, we need to adopt VSCode's formatter style.

Steps to Reproduce

  1. Set up VSCode tasks for the project using the following sample code:

    // .vscode > tasks.json
    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "UI5 version 2.0 check",
                "type": "shell",
                "command": "npx --yes @ui5/linter@latest",
                "problemMatcher": ["$eslint-stylish"]
            }
        ]
    }
    
  2. Run the task on a Windows machine.

Expected Behavior

The VSCode "Reports" tab should correctly parse the output from the UI5 Linter and display all findings.

Actual Behavior

On Windows machines, the output format is not properly parsed, and not all findings are transferred to the "Reports" tab.

Documentation

For more information on configuring VSCode tasks, refer to the documentation: VSCode Tasks Documentation.

Findings & Possible Solution

Currently, on Windows, when a new row is added by the terminal (not programmatically by the linter), it adds some whitespaces. These whitespaces are interpreted by the "problemMatcher": ["$eslint-stylish"] as a data separator, causing the description to be cut off.

We must find a way to make the problemMatcher treat the description as a whole text. Hint: The issue is not related to the chalk module. It does add some ANSI characters, but the issue is reproducible even without it.

A possible solution is to check ESLint's formatter implementation: ESLint Stylish Formatter. The table module used in the implementation orders the data in columns and rows, and the "divider" is a whitespace, which is likely causing the formatting issue on Windows.

d3xter666 avatar Jun 17 '24 11:06 d3xter666

This one seems like a known problem:

  • https://github.com/microsoft/terminal/issues/405
  • https://github.com/microsoft/vscode/issues/81328
  • https://github.com/microsoft/vscode/issues/43664

The core issue seems to be in the Windows terminal, VSCode (actually, a submodule) has tried to do some heuristics to resolve the issue, but without big success: https://github.com/xtermjs/xterm.js/blob/32d6613811e403b3693d004b86c8a664553eaa59/src/WindowsMode.ts#L11-L29

d3xter666 avatar Jul 09 '24 11:07 d3xter666