Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linter not available #1533

Closed
isaacabraham opened this issue Apr 30, 2021 · 10 comments · Fixed by ionide/FsAutoComplete#799
Closed

Linter not available #1533

isaacabraham opened this issue Apr 30, 2021 · 10 comments · Fixed by ionide/FsAutoComplete#799

Comments

@isaacabraham
Copy link
Contributor

isaacabraham commented Apr 30, 2021

Describe the bug

The FSLint integration appears to be broken. No lint warnings appear, although I have ensured that the linter is turned on.

Steps to reproduce

  1. Create an FSX (or FS) file.
  2. Make a lint warning e.g. let x = [ 1 .. 10 ] |> List.map id |> List.map id
  3. A lint warning should appear, but nothing does.

I've tested with the dotnet FS Lint tool and that still works.

Machine info

  • OS: Windows
  • .NET SDK version: 5.0.202
  • Ionide version: 5.5.3
@open-collective-bot
Copy link

Hey @isaacabraham 👋,

Thanks for backing our project. If possible, We will handle your
issue with priority support. To make sure we don't forget how special
you are, we added a backer label to your issue.

Thanks again for backing us 🎉!

@baronfel
Copy link
Contributor

Yep! Fsharplint integration has been disabled for about a month now, because that project is behind in its support for FCS 39. There is an open PR, but it has languished for a bit. It's the same root problem as with FAKE: tight integrations require upkeep, and if we can't keep those integrations up to date it's a judgement call if it's worth keeping the entire application (including FCS perf/bugfixes/etc) held back for that.

@baronfel
Copy link
Contributor

Longer term, it would be ideal to have these sorts of integrations as an out-of-process model, and we might look in that direction with fantomas leading the way, but out-of-process also implies another, not-shared FSharpChecker instance which could have negative impacts on memory usage.

@faldor20
Copy link
Contributor

faldor20 commented May 17, 2021

@baronfel I think there is an argument to be made for being very conservative as far as removing large features. This effects a huge number of people very negatively. If I was just coming to F# and I discovered it's primary IDE plugin didn't even have linting..... well I'd use C# and never look back.

@baronfel
Copy link
Contributor

baronfel commented May 17, 2021

That certainly an option! The difference here as issues to C# primary comes down to linting and this tooling being OSS only, not MS-backed as they are for C#. That naturally means that available effort is limited. As such, I have to prioritize remaining compatible with language features as they are released, or stagnating.

I choose to stay up to date with new compiler releases, while sending what updates I can to projects I do not directly control for external features. This strikes the best balance in my opinion, using the limited resources at my disposal.

@faldor20
Copy link
Contributor

AHH I wasn't aware there had been a significant change to the language spec. I agree that not supporting current language features is a serious issue in its own right.

I am very sorry for my undue criticism. You clearly have a difficult choice to make and I very much thank you for making it :). Keep up the great work :)

Would it maybe be worth looking at https://github.com/fsprojects/fsharp-language-server which does have working (though less sophisticated) linting or at least mentioning it somewhere along with a acknowledgment that linting is broken?

@MangelMaxime
Copy link
Contributor

@faldor20 I think fsharp language server kind of offer the same level of linting as Ionide as it is not using FSharpLint in it. They display the hint coming from the F# compiler.

Also, fsharp language server is a bit behind Ionide in term of language features. There is a PR open fsprojects/fsharp-language-server#93 to upgrade it to the latest version of FCS at the time of the PR.

@faldor20
Copy link
Contributor

@MangelMaxime I know there was some discussion about merging the two projects. Yes it definitely doesn't cover the same features but it is many times faster and is much more reliable. I find big or complicated projects often just result in fsac throwing errors or working glacially slowly. I recently tried using the typeshape library it was agony. I assume it was related to reflection and generics and stuff but fsac just completely stopped. Had to switch to fsharp language server.

@seanamos
Copy link

It looks like FSharpLint has now been updated with version v0.19.0.

@baronfel
Copy link
Contributor

yep! I've got a branch locally where I'm trying to update and reenable the tests. I've run into a couple issues though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants