Kogoshvili.Temporal.Analyzers 1.0.3

dotnet add package Kogoshvili.Temporal.Analyzers --version 1.0.3
                    
NuGet\Install-Package Kogoshvili.Temporal.Analyzers -Version 1.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kogoshvili.Temporal.Analyzers" Version="1.0.3">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Kogoshvili.Temporal.Analyzers" Version="1.0.3" />
                    
Directory.Packages.props
<PackageReference Include="Kogoshvili.Temporal.Analyzers">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Kogoshvili.Temporal.Analyzers --version 1.0.3
                    
#r "nuget: Kogoshvili.Temporal.Analyzers, 1.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Kogoshvili.Temporal.Analyzers@1.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Kogoshvili.Temporal.Analyzers&version=1.0.3
                    
Install as a Cake Addin
#tool nuget:?package=Kogoshvili.Temporal.Analyzers&version=1.0.3
                    
Install as a Cake Tool

Kogoshvili.Temporal.Analyzers

A Roslyn analyzer that catches non-deterministic code and Temporal SDK feature-misuse in .NET workflows before they hit production replay bugs. It runs in dotnet build, Visual Studio, and Rider with sensible defaults and no configuration.

See RULES.md for the full rule catalog, and the repository README for the rest of the Kogoshvili.Temporal suite.

Minimal setup

Add the package and build. Every rule is enabled at its built-in default severity (mostly error and warning); no .editorconfig entry is required.

dotnet add package Kogoshvili.Temporal.Analyzers
dotnet build
[Workflow]
public class GreetingWorkflow
{
    [WorkflowRun]
    public async Task<string> RunAsync(string name)
    {
        var now = DateTime.Now; // TMP0101: use Workflow.UtcNow instead
        return $"Hello, {name} at {now}";
    }
}

Opt-in rules stay off until you enable them, so a default build reports only the high-signal findings.

Configuration

All tuning happens through .editorconfig. Suppress a single finding inline with #pragma warning disable / restore, or change a rule's severity project-wide with dotnet_diagnostic.TMPxxxx.severity. Both mechanisms work in the analyzer package and the CLI.

#pragma warning disable TMP0101
var now = DateTime.Now;
#pragma warning restore TMP0101
[*.cs]
dotnet_diagnostic.TMP0101.severity = suggestion

Eleven rules are opt-in and ship disabled: TMP2103, TMP2111, TMP2147, TMP2151, TMP2161, TMP2171, TMP3104, TMP4104, TMP5001, TMP5002, and TMP5003. Enable the ones you want by setting their severity:

[*.cs]
dotnet_diagnostic.TMP2103.severity = warning
dotnet_diagnostic.TMP2147.severity = warning
dotnet_diagnostic.TMP5001.severity = warning

Four custom config keys drive individual rules. Two take arbitrary values:

  • kogoshvili.temporal.sensitive_pattern — regex for TMP2151 sensitive arguments. Defaults to (?i)(password|passwd|secret|token|apikey|api_key|credential|connectionstring).
  • kogoshvili.temporal.search_attributes — comma-separated alias=attribute map for TMP2161:
[*.cs]
kogoshvili.temporal.search_attributes = user_id=user_id, client_id=user_id

Two more opt-in keys extend which code is analyzed:

  • kogoshvili.temporal.workflow_paths — comma-separated path globs (e.g. **/Workflows/**) that treat files as workflow code even without a [Workflow] attribute, so rules fire for non-annotated helpers.
  • kogoshvili.temporal.unsafe_namespaces — comma-separated namespace prefixes that workflow code must not import (TMP2147):
[*.cs]
kogoshvili.temporal.workflow_paths = **/Workflows/**
kogoshvili.temporal.unsafe_namespaces = System.IO, System.Net.Http
dotnet_diagnostic.TMP2147.severity = warning

Full configuration

Two named presets are available as ready-to-copy .editorconfig bundles under editorconfig/:

  • recommended — today's built-in defaults.
  • strict — every rule, including opt-in rules, promoted to error.

Regenerate them with the CLI (temporal-sharp preset <recommended|strict>) or copy the block straight into your .editorconfig. For example, adopting strict:

dotnet tool install -g temporal-sharp
temporal-sharp preset strict > .editorconfig

The full set of .editorconfig knobs is the union of per-rule severities (dotnet_diagnostic.TMPxxxx.severity) and the four custom keys above. Prefer the presets as a starting point, then override individual severities rather than hand-writing the whole list.

Alternatives

Kogoshvili.Temporal covers the same ground as the Go ecosystem's tools, for .NET:

Not affiliated with or endorsed by Temporal Technologies.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 105 9/4/2026
1.0.2 105 9/3/2026
1.0.1 104 9/1/2026
1.0.0 101 8/31/2026
1.0.0-beta.10 70 8/28/2026
1.0.0-beta.9 68 8/28/2026
1.0.0-beta.8 74 8/25/2026
1.0.0-beta.7 70 8/24/2026
1.0.0-beta.6 69 8/24/2026
1.0.0-beta.5 74 8/24/2026
1.0.0-beta.4 75 8/24/2026
1.0.0-beta.3 72 8/24/2026
1.0.0-beta.2 71 8/23/2026
1.0.0-beta.1 80 8/23/2026

96 analyzer rules for workflow determinism, shared-state, and Temporal SDK feature misuse — see RULES.md in the repository for the full rule catalog.