B2R2.FSLint 1.0.4

Prefix Reserved
dotnet tool install --global B2R2.FSLint --version 1.0.4
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local B2R2.FSLint --version 1.0.4
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=B2R2.FSLint&version=1.0.4
                    
nuke :add-package B2R2.FSLint --version 1.0.4
                    

FSLint

VS Code Marketplace VS Marketplace NuGet License

High-performance F# linter based on syntactic analysis, providing real-time feedback in IDEs and seamless CI/CD integration.

The Problem

Your F# codebase grows. Style inconsistencies creep in. Code reviews catch formatting issues instead of logic bugs. CI pipelines slow down waiting for linters that need full semantic analysis.

The Solution

FSLint gives you real-time style enforcement without the wait. No dependency resolution. No type checking overhead. Just instant feedback on what matters.

What You Get

Zero Setup — Install and start linting. No config files required.

Instant Feedback — See violations as you open and save, not after you push.

CI/CD Native — File-level analysis works in any pipeline, any environment.

Precise Rules — Based on F# official guidelines and B2R2 F# conventions.

Quick Start

Visual Studio

Extensions → Manage Extensions → Search "FSLint"

VS Code

ext install B2R2.fslint

Command Line (CI/CD)

dotnet tool install --global B2R2.FSLint
fslint check ./src

Open any .fs file. Violations appear instantly with visual indicators.

Why Syntactic Analysis?

FSLint analyzes your code structure, not its semantics. This means:

  • No waiting for type inference
  • No dependency graph resolution
  • Works on incomplete code
  • Scales to massive codebases

Perfect for catching style violations the moment you write them.

Built by Security Researchers

Developed at KAIST SoftSec Lab for the B2R2 binary analysis platform — a project with 700,000+ lines of F# that demands both speed and precision.

Requirements

  • .NET SDK 10.0+
  • F# source files (.fs)

Extension Settings

  • fslint.enable — Toggle linting (default: true)
  • fslint.trace.server — Debug LSP communication

Configuration

FSLint respects .editorconfig settings in your workspace:

[*.fs]
max_line_length = 120  # Default: 80

Release Notes

1.0.4

  • Relax Tuple Convention rules to better handle cases with inline and trailing comments
  • Refactor duplicated functions to improve maintainability and reduce redundancy

1.0.3

  • Relax Declaration and ArrayOrList rules
  • Use ParsedInput instead of source-aware algorithm

1.0.2

  • Linting is no longer performed in real time and is now executed on file save.

Contributing

Found an issue? Have a suggestion? → GitHub Issues

License

MIT — Free for commercial and open source use.


Stop debating style in code reviews. Enforce it automatically.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.4 77 2/23/2026
0.1.0 1,543 5/7/2025 0.1.0 is deprecated because it is no longer maintained.