JetBrains/resharper-fsharp

FSharpLint Integration

jgardella opened this issue · 6 comments

FSharpLint is a project for linting F# code. Would it be possible to add an integration with this project for live linting in Rider? We could either make it part of this repo or a separate integration, whatever would make more sense.

I'm interested in implementing this if someone can point me in the right direction.

I think there will be problems with different FSharp.Compiler.Service versions used by this plugin and FSharpLint. I'd prefer to use FSharpLint as a submodule either than using it as referenced NuGet package. However, I may be wrong.

@vasily-kirichenko That's a good point. I was trying to get something working on my branch here and I ran into this issue. When you say submodule do you mean a git submodule, or am I misunderstanding?

Yes, I meant a git submodule.

Thanks, I'll try it out and see if I can get something working.

I was able to get something working, would really appreciate feedback from @vasily-kirichenko and @auduchinok when you have some time. See the changes here. I haven't created a PR yet because we will need to make a new version of FSharpLint which is signed, since fsharp-support is signed.

Also, I was able to see the linter working correctly with gradlew runIde, but when I try to install the plugin in my own Rider instance, Rider crashes on startup when loading the plugin. Any ideas? Is there somewhere I can see more info on why its crashing?

Are there plans (or is it possible) to add support for FSharpLint to the editor?

Using a linter can really improve code (as for example Mark Seemann writes about in the book Code that fits in your head). While it's possible to use FSharpLint as a command-line tool or a MSBuild task, it is a very limited experience to not have any in-editor support (i.e., to see suggestions, warnings, etc. inside the editor). I would very much like to continue using Rider, which is an excellent IDE, but this particular lack is seriously making me consider switching to VSCode.