question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

How to use the ESLint annotations?

See original GitHub issue

It’s my first time using the annotations feature, so please forgive me if this issue is irrelevant.

I’m trying to have annotations in the PR, however all I can get is a simple annotation in the actions screen with irrelevant information. I’m guessing that’s a problem of mine, and since there’s not a lot documentation (that I could find) about this might as well ask.

Screenshot 2019-12-18 at 09 39 49

That’s the output of a failing eslint job. The current configuration is:

  quality:
    needs: [build]

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1

      - uses: actions/setup-node@v1
        with:
          node-version: "12.x"

      - name: Cache node modules
        id: cache
        uses: actions/cache@v1
        with:
          path: node_modules # npm cache files are stored in `~/.npm` on Linux/macOS
          key: ${{ runner.os }}-node_modules-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-

      - name: Install Dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: npm ci

      - name: Prettier
        run: npm run fmt:check

      - name: ESlint
        run: npm run eslint:github-action

where my package.json looks like:

  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^2.12.0",
    "@typescript-eslint/parser": "^2.12.0",
    "eslint": "^6.7.2",
    "eslint-config-prettier": "^6.7.0",
    "prettier": "^1.19.1",
    "serverless-dynamodb-local": "^0.2.38",
    "serverless-offline": "^5.12.1",
    "serverless-plugin-typescript": "^1.1.9",
    "typescript": "^3.7.3"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "lint": "eslint functions/**.ts",
    "eslint:github-action": "eslint functions/**",
    "fmt": "prettier --write ./**.{json,js,ts,yml,md}",
    "fmt:check": "prettier --check ./**.{json,js,ts,yml,md}"
  },

I expected that the following error would actually appear in the annotation, and hopefully in the PR too.

 /home/runner/work/utom.is/utom.is/functions/a.ts
  1:0  error  Parsing error: Declaration or statement expected

but as you can get the from screenshot, all I have is that the process completed with error 1.

Is my expectation wrong? Or do I have something misconfigured?

Thanks

Issue Analytics

  • State:open
  • Created 4 years ago
  • Reactions:9
  • Comments:7 (1 by maintainers)

github_iconTop GitHub Comments

5reactions
Coutocommented, Aug 5, 2021

I might be wrong, but as a consequence of this, this action doesn’t create annotations for typescript/* and react-hooks/* ESLint warning/errors.

Which means that it doesn’t annotate around 80% of real-world linting messages.

3reactions
Coutocommented, Dec 22, 2019

After some investigation:

Currently the error matchers require that ESLint errors have an error code in them:

{
  "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$",
  "file": 1,
  "line": 2,
  "column": 3,
  "severity": 4,
  "message": 5,
  "code": 6
}

However, not all ESLint error messages have associated codes, specially if it’s invalid JavaScript like:

const a = (a: number, b: number): number => a + b;

export const handler = () => {
  make javascript fail again
  async function foo(things) {
    const results = [];
    for (const thing of things) {
      // Bad: each loop iteration is delayed until the entire asynchronous operation completes
      results.push(await bar(thing));
    }
    return baz(results);
  }
};

The script above will result in the following error message:

> @1.0.0 eslint /home/runner/work/
> eslint --format=compact functions/**.ts

/home/runner/work/functions/a.ts: line 4, col 7, Error - Parsing error: ';' expected.

1 problem
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! utom.is@1.0.0 eslint: `eslint --format=compact functions/**.ts`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the utom.is@1.0.0 eslint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/runner/.npm/_logs/2019-12-22T21_43_16_956Z-debug.log
##[error]Process completed with exit code 1.

While it has line and column, it has no error code associated.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Configuring ESLint - ESLint - Pluggable JavaScript Linter
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
Read more >
How to use ESLint and Prettier for code analysis and formatting
You can use the search box to search for the ESLint and Prettier extensions you installed. It should be fine to leave the...
Read more >
eslint-formatter-github-annotations - npm
An ESLint formatter to report as GitHub Checks annotations. Latest version: 0.1.0, last published: a year ago. Start using ...
Read more >
How to use ESLint with TypeScript | Khalil Stemmler
Rules. There are three modes for a rule in eslint: off , warn , and error .
Read more >
ESLint | IntelliJ IDEA Documentation - JetBrains
Configure ESLint manually ... With manual configuration, you can use a custom ESLint package, configuration file, and working directories, as ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found