Skip to content
CAI
Software that uses CAICheck a score

vbfox/FoxSharp

61.9

Weak · 3 October 2026

2.1k

lines of production code

F#

with C#

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a collection of F\# utility libraries and build automation tools designed to support .NET development workflows. It provides specialized functionality for command-line argument parsing across Windows and Unix platforms, detection of Visual Studio installations, and parsing of Java properties files. Additionally, it includes a build task framework for FAKE and a caching layer for F\# reflection to improve performance.

Features

Added Unix command-line parsing support for Mono and .NET Core

The library now includes specific argument parsing implementations for Unix environments, introducing \MonoUnixCommandLine\ for Mono and \DotnetCoreUnix\ for .NET Core. These parsers replicate the argument splitting behavior of their respective native runtimes (Mono's \gshell.c\ and .NET Core's \Process.Unix.cs\), ensuring that quotes, escapes, and special characters are handled consistently with the underlying platform. This allows the library to correctly parse and generate command lines on Unix systems regardless of whether the application is running on Mono or .NET Core.

src/BlackFox.CommandLine · high confidence

Introduce BlackFox.VsWhere for detecting Visual Studio installations

Added the BlackFox.VsWhere library, an F\#-based tool for locating Visual Studio 2017+ instances and legacy versions (VS .NET 2002–2015). The library exposes functions to enumerate all instances, filter for completed installations, search by specific package IDs, and detect legacy registry-based installs, while handling COM API nulls and errors gracefully.

src/BlackFox.VsWhere · high confidence

Introduce Cached F\# Reflection library

Adds the BlackFox.CachedFSharpReflection library, which caches results of F\# reflection API calls (such as type checks and field/constructor precomputations) to improve performance. The library provides FSharpTypeCache and FSharpValueCache classes with a shared singleton instance, and includes a combined FSharpReflectionCache container for passing both caches together. It also documents that caches retain type references and advises against using the shared instance in collectible AssemblyLoadContext scenarios.

src/BlackFox.CachedFSharpReflection · high confidence

Introduce F\# type definitions for Visual Studio setup instances

Added the \Types.fs\ module in the \BlackFox.VsWhere\ library, defining core F\# record types (\VsSetupInstance\, \VsSetupPackage\, \VsSetupErrorState\, etc.) that model the data structure returned by the Visual Studio Installer. These types provide a strongly-typed interface for consuming Visual Studio installation metadata, such as instance IDs, paths, package lists, and error states, within the F\# codebase.

BlackFox.VsWhere · high confidence

Introduction of a generic concurrent dictionary cache

Added a new internal caching mechanism (DictCache) that wraps a ConcurrentDictionary to provide thread-safe, lazy initialization of reflection data. This component allows the library to store computed values keyed by a converted dictionary key, automatically computing and caching the value on first access and providing a method to clear the cache.

BlackFox.CachedFSharpReflection · high confidence

New BuildTask module with task definition and execution helpers

Introduces the BlackFox.Fake.BuildTask module, providing a Gulp-like syntax for defining FAKE build tasks via the TaskBuilder and create functions, supporting soft and hard dependencies. It adds execution helpers including runOrDefault, runOrDefaultWithArguments, runOrList, listAvailable, and printDependencyGraph for managing target runs, along with setupContextFromArgv to parse command-line arguments into the FAKE context. Additionally, it provides runOrDefaultApp and runOrListApp variants that wrap execution in error handling, returning exit codes and printing exceptions to the console.

BlackFox.Fake.BuildTask · high confidence

New Java .properties file parser library

Added the BlackFox.JavaPropertiesFile library, providing functions to parse Java-style .properties files into a list of comments and key-value entries, with utilities to convert these entries into maps or dictionaries. The parser adheres to the java.util.Properties.load specification, defaulting to ISO-8859-1 encoding for file reads while supporting custom encodings via TextReader, and correctly handles escape sequences, line continuations, and whitespace separators.

src/BlackFox.JavaPropertiesFile · high confidence

New VsWhereCmd utility to list Visual Studio instances

A new command-line utility (src/BlackFox.VsWhereCmd/Main.fs) has been added that iterates over all Visual Studio instances (including legacy ones) and prints their display name, installation version, and installation path to the console.

src/BlackFox.VsWhereCmd · high confidence

New build automation tasks for FoxSharp projects

The build system now includes a new Tasks.fs module that defines a comprehensive set of build targets (Init, Clean, Build, Test, NuGet, Publish, Zip, Release, CI, and Default). This module automates the building, testing, and packaging of multiple BlackFox projects (Fake.BuildTask, VsWhere, JavaPropertiesFile, CommandLine, PathEnvironment, CachedFSharpReflection) and their associated tests. It handles version generation, cross-platform test execution (including net461 on Windows and netcoreapp/net10 on Linux), test result reporting to build servers, and artifact creation (NuGet packages and zipped binaries).

BlackFox.FoxSharp.Build · high confidence

New command-line argument parsing and escaping library

The BlackFox.CommandLine package introduces a new F\# library for constructing and parsing command-line arguments across different platforms. It provides a fluent API for building command lines with support for conditional arguments, prefixes, and printf-style formatting. The library includes platform-specific escaping and parsing modules: MsvcrCommandLine for Microsoft C Runtime behavior (including settings for always quoting and double-quote escaping) and MonoUnixCommandLine for Mono/Unix-style escaping. This allows applications to correctly format and parse arguments according to the conventions of the target runtime environment.

BlackFox.CommandLine · high confidence

Repository initialization and build infrastructure setup

The repository has been initialized with a complete build infrastructure, including a solution file (FoxSharp.sln) that organizes multiple F\# and C\# projects such as BlackFox.CommandLine, BlackFox.Fake.BuildTask, and BlackFox.CachedFSharpReflection. Build scripts (build.sh, build.cmd) and Paket tooling (paket.sh, paket.cmd) have been added to manage dependencies and execute builds using the .NET SDK (configured for version 10.0.100 with latestMajor rollforward in global.json). Standard repository configuration files like .editorconfig, .gitattributes, .gitignore, LICENSE.md, and Readme.md are also present to define coding standards, licensing, and documentation.

(repo-wide) · high confidence

Behavioural changes

Introduce GitHub Actions support in the build script

The build script (Program.fs) now explicitly installs the GitHub Actions build server integration, enabling CI pipelines on GitHub Actions to correctly identify the environment. This change is supported by the addition of the Fake.BuildServer.GitHubActions dependency in paket.references.

src/BlackFox.FoxSharp.Build · high confidence

PathEnvironment: Corrected Windows executable resolution and robustness fixes

The PathEnvironment module now accurately resolves executables on Windows by falling back to the standard cmd.exe PATHEXT list (.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC) when the environment variable is missing, and by correctly handling names that already include an executable extension (e.g., 'node.exe') without appending duplicate extensions. Additionally, parsing of PATH and PATHEXT is more robust: empty entries caused by leading, trailing, or doubled separators are now ignored, and null environment variables no longer cause crashes. The current directory is also correctly excluded from searches when includeCurrentDirectory is false.

src/BlackFox.PathEnvironment · high confidence

Test coverage

Added test suite for FoxSharp core libraries

Added a new test project (src/BlackFox.FoxSharp.Tests) covering the FoxSharp library components. The tests verify FSharpTypeCache and FSharpValueCache behavior (including caching, concurrency, and handling of types with identical FullNames from different assemblies), command-line parsing and escaping for MSVCR, Mono, and .NET Core, Java properties file parsing (including whitespace, escaping, and multi-line support), and PathEnvironment utilities (PATH/PATHEXT handling, executable finding, and edge cases like trailing separators).

src/BlackFox.FoxSharp.Tests · high confidence

Dependencies

Initial project structure and dependency configuration

This change introduces the foundational build infrastructure for the FoxSharp repository, establishing a multi-project solution managed by Paket. It defines the dependency graph in paket.dependencies and paket.lock, pinning FSharp.Core to version 10.1.302 and integrating the FAKE 5 build automation suite (including targets, process, and Git tools) for the build project. The diff also creates the initial project files for several libraries, including BlackFox.CommandLine, BlackFox.Fake.BuildTask, BlackFox.JavaPropertiesFile, BlackFox.PathEnvironment, and BlackFox.VsWhere, configuring them for .NET Standard 2.0 and .NET Framework 4.5/4.6 support, alongside a test project and a VsWhere command-line utility targeting .NET 10.0.

(dependencies) · high confidence

Housekeeping

Documentation and release notes added for BlackFox.Fake.BuildTask

This change introduces the primary documentation for the BlackFox.Fake.BuildTask library, including a new README.md file that provides usage examples and a complete API reference for the strongly typed Target alternative for FAKE. It also adds a Release Notes.md file detailing the history from version 0.1.0 to 0.1.3, highlighting features such as the addition of \runOrDefaultApp\ and \runOrListApp\ for better CLI integration, and the signature change of \setupContextFromArgv\ to accept an array.

src/BlackFox.Fake.BuildTask · 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 62 → 62 (-0.0)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 70 → 70 (+0.0)
  • Architecture 97 → 100 (+2.9)
  • Maturity 52 → 52 (+0.0)
  • Readiness 59 → 59 (+0.0)
  • Security 93 → 91 (-1.7)

Resolved (5)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no licence statement (README.md)
  • Documentation: no project overview (README.md)
  • redundant comment (src/BlackFox.CommandLine.TestParsers/DotnetCoreUnix.cs)
  • redundant comment (src/BlackFox.CommandLine.TestParsers/DotnetCoreUnix.cs)

Architecture

  • Unchanged — 0 containers · 5 contexts · 1 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

vbfox/FoxSharp 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 8046989bb806564f98660450ff5e61dee5cb62f0 — 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.