G-Research/fsharp-analyzers
67.3
Adequate · 3 October 2026
1.2k
lines of production code
F#
primary language
2
measurements over time
What this system is
This system is a library of static code analyzers for the F\# programming language, designed to detect common pitfalls and enforce best practices. It provides rules for validating logging templates, string method usage, interpolated strings, immutable collection equality, and JSON serialization options. The project includes a comprehensive test suite to validate these analyzer behaviors against specific code baselines.
Features
Initial project setup and repository configuration
The repository has been initialized with the core structure for the G-Research F\# Analyzers project. This includes the solution file, build scripts (build.fsx, format.fsx), and a comprehensive CHANGELOG.md documenting the history of analyzer updates and fixes. Configuration files such as .editorconfig, .fantomasignore, and .gitattributes establish consistent code formatting and line-ending policies for F\# files. Additionally, Directory.Build.props defines common packaging properties, and the README.md provides updated usage instructions for consuming the analyzers via NuGet.
(repo-wide) · high confidence
New F\# code analyzers for logging, strings, and collections
The FSharp.Analyzers library now includes several new static analysis rules to help catch common pitfalls. The LoggingTemplateMissingValuesAnalyzer warns when log message placeholders do not match the provided arguments, while the LoggingArgFuncNotFullyAppliedAnalyzer detects partially applied functions passed to ILogger methods. String analysis has been extended to cover LastIndexOf in addition to StartsWith, EndsWith, and IndexOf, all of which now warn when called with a single string argument to encourage explicit overloads. Additionally, the TypedInterpolatedStringsAnalyzer flags interpolated string holes missing type specifiers, the ImmutableCollectionEqualityAnalyzer warns against using structural equality on immutable collections that lack it, the JsonSerializerOptionsAnalyzer suggests caching JsonSerializerOptions instances, and the UnionCaseAnalyzer recommends RequireQualifiedAccess to avoid name clashes with FSharp.Core union cases.
src/FSharp.Analyzers · high confidence
Test coverage
Added test data for F\# analyzer rules; Added test suite for F\# analyzers.
Dependencies
Initial project setup with .NET 10 and centralized package management
The repository is initialized with a new project structure targeting .NET 10.0, utilizing centralized package version management via Directory.Packages.props. Key dependencies include FSharp.Analyzers.SDK 0.39.0, FSharp.Core 10.1.400, NUnit 4.6.1, and the associated test SDK and adapter packages.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 68 → 67 (-0.6)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 97 → 97 (+0.0)
- Architecture 100 → 96 (-3.7)
- Maturity 56 → 56 (-0.0)
- Readiness 66 → 66 (-0.1)
- Security 85 → 82 (-3.0)
Resolved (2)
- Documentation: no contributor guidance (README.md)
- Off-boarding risk: anonymized user #1
New (3)
- Off-boarding risk: anonymized user #1
- Outdated: Ionide.KeepAChangelog.Tasks
- Outdated: NUnit
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
G-Research/fsharp-analyzers was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 7ab2d8906209560ed96808a27e57f41fe05000fa — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.