![]() |
VOOZH | about |
dotnet add package FsHotWatch.Analyzers --version 0.7.0-alpha.19
NuGet\Install-Package FsHotWatch.Analyzers -Version 0.7.0-alpha.19
<PackageReference Include="FsHotWatch.Analyzers" Version="0.7.0-alpha.19" />
<PackageVersion Include="FsHotWatch.Analyzers" Version="0.7.0-alpha.19" />Directory.Packages.props
<PackageReference Include="FsHotWatch.Analyzers" />Project file
paket add FsHotWatch.Analyzers --version 0.7.0-alpha.19
#r "nuget: FsHotWatch.Analyzers, 0.7.0-alpha.19"
#:package FsHotWatch.Analyzers@0.7.0-alpha.19
#addin nuget:?package=FsHotWatch.Analyzers&version=0.7.0-alpha.19&prereleaseInstall as a Cake Addin
#tool nuget:?package=FsHotWatch.Analyzers&version=0.7.0-alpha.19&prereleaseInstall as a Cake Tool
Plugin that runs F# analyzers in-process using the warm FSharpChecker's
check results. Compatible with G-Research F# Analyzers SDK
and custom [<CliAnalyzer>] implementations.
Status: early alpha, and a lot of it is AI-written. APIs shift between versions and rough edges are expected — your mileage may vary. Issues and PRs are very welcome.
F# analyzers normally need to start their own compiler to get type information. With FsHotWatch, the compiler is already warm -- analyzers get parse results and check results instantly, so they run in milliseconds instead of minutes.
FileChecked with the resultsCliContext from the warm results (via reflection to
handle FCS version mismatches)In .fshw.json:
{
"analyzers": {
"paths": ["analyzers/"]
}
}
| Field | Type | Default | Description |
|---|---|---|---|
paths |
string[] |
-- | Directories containing analyzer DLLs. Relative paths are resolved from the repo root. |
See the for a complete working example. Here's the key pattern:
open FSharp.Analyzers.SDK
[<CliAnalyzer("MyAnalyzer", "Description of what it checks")>]
let myAnalyzer: Analyzer<CliContext> =
fun (context: CliContext) ->
async {
// context.ParseFileResults has the AST
// context.CheckFileResults has type info
// Walk the AST, find issues, return diagnostics
return
[ { Type = "My Rule"
Message = "Something is wrong here"
Code = "MY-001"
Severity = Severity.Warning
Range = someRange
Fixes = [] } ]
}
Build the analyzer as a class library and point analyzers.paths at
the output directory.
# Query analyzer diagnostics
fshw diagnostics
daemon.RegisterHandler(
AnalyzersPlugin.create
[ "/path/to/analyzers" ] // directories with analyzer DLLs
None // timeoutSec (None → no timeout)
DiagnosticSeverity.Hint // failOnSeverity threshold
)
dotnet add package FsHotWatch.Analyzers
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.7.0-alpha.19 | 37 | 6/17/2026 |
| 0.7.0-alpha.18 | 36 | 6/17/2026 |
| 0.7.0-alpha.17 | 42 | 6/17/2026 |
| 0.7.0-alpha.16 | 44 | 6/12/2026 |
| 0.7.0-alpha.15 | 45 | 6/9/2026 |
| 0.7.0-alpha.14 | 49 | 6/2/2026 |
| 0.7.0-alpha.13 | 50 | 5/28/2026 |
| 0.7.0-alpha.12 | 59 | 5/4/2026 |
| 0.7.0-alpha.11 | 53 | 4/29/2026 |
| 0.7.0-alpha.10 | 66 | 4/26/2026 |
| 0.7.0-alpha.9 | 60 | 4/25/2026 |
| 0.7.0-alpha.8 | 57 | 4/23/2026 |
| 0.7.0-alpha.7 | 58 | 4/22/2026 |
| 0.7.0-alpha.6 | 60 | 4/20/2026 |
| 0.7.0-alpha.3 | 54 | 4/18/2026 |
| 0.7.0-alpha.2 | 65 | 4/15/2026 |
| 0.6.0-alpha.1 | 58 | 4/12/2026 |
| 0.5.0-alpha.1 | 56 | 4/12/2026 |
| 0.3.0-alpha.1 | 66 | 4/8/2026 |
| 0.1.0-alpha.1 | 67 | 4/3/2026 |