tktco.UdonSharpLinter 0.5.0

dotnet tool install --global tktco.UdonSharpLinter --version 0.5.0
                    
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 tktco.UdonSharpLinter --version 0.5.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=tktco.UdonSharpLinter&version=0.5.0
                    
nuke :add-package tktco.UdonSharpLinter --version 0.5.0
                    

UdonSharpLinterCLI

NuGet License: MIT

🌐 Language: English | 日本語

A static code analyzer for UdonSharp scripts in VRChat projects. Detects language features and patterns not supported by UdonSharp at compile time.


Installation

Requirements: .NET 6.0 or later

dotnet tool install -g tktco.UdonSharpLinter

Update

dotnet tool update -g tktco.UdonSharpLinter

Quick Start

# Analyze all UdonSharp scripts in Assets
udonsharp-lint Assets

# Analyze excluding test scripts
udonsharp-lint Assets --exclude-test-scripts

Usage

udonsharp-lint <directory_path> [--exclude-test-scripts]
Argument / Option Description
<directory_path> Path to the directory to analyze
--exclude-test-scripts Exclude TestScripts / Tests / Test directories

Output Format

Errors and warnings are reported in standard compiler format, compatible with most IDEs and CI/CD tools.

path/to/file.cs(line,column): error UDON###: Error message
path/to/file.cs(line,column): warning UDON###: Warning message

Exit Codes

Code Meaning
0 No errors (warnings may be present)
1 Errors found or execution failed

Checks

Basic Language Features

Error Code Check
UDON029 Async Await
UDON008 Collection initializers
UDON005 Constructors
UDON035 Coroutine Usage
UDON018 Generic classes
UDON032 Generic Collection types
UDON006 Generic methods
UDON030 Goto statements
UDON034 Lambda And Delegates
UDON033 Linq Usage
UDON003 Local functions
UDON009 Multidimensional arrays
UDON012 Nested types
UDON027 Null Conditional Operators
UDON007 Object initializers
UDON011 Static fields
UDON002 Throw statements
UDON001 Try Catch statements

API and Attribute Restrictions

Error Code Check
UDON019 General Unexposed APIs
UDON037 Generic Get Component Udon Behaviour
UDON017 Interfaces
UDON016 Method Overloads
UDON013 Network Callable methods
UDON026 Send Custom Event methods
UDON014 Text Mesh Pro APIs
UDON036 UIEvent Listener Registration

Cross-file and Semantic Analysis

Error Code Check
UDON020 Cross File Field Access
UDON022 Cross File Method Invocation
UDON031 Referenced Type Static fields
UDON021 Static Method Field Access
UDON025 Udon Behaviour Serializable Class Usage
UDON031 User Defined Type Static Field Access

Networking and Synchronization

Error Code Check
UDON038, UDON039, UDON040, UDON041 Synchronization Constraints

Integration

Visual Studio Code (tasks.json)

Integrates with the Problems panel and runs with Ctrl+Shift+B.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "UdonSharp Lint",
      "type": "shell",
      "command": "udonsharp-lint",
      "args": ["${workspaceFolder}/Assets"],
      "problemMatcher": {
        "owner": "udonsharp",
        "fileLocation": ["relative", "${workspaceFolder}"],
        "pattern": {
          "regexp": "^(.+)\\((\\d+),(\\d+)\\):\\s+(error|warning)\\s+UDON(\\d+):\\s+(.+)$",
          "file": 1,
          "line": 2,
          "column": 3,
          "severity": 4,
          "code": 5,
          "message": 6
        }
      }
    }
  ]
}

GitHub Actions

- name: Install UdonSharp Linter
  run: dotnet tool install -g tktco.UdonSharpLinter

- name: Run UdonSharp Linter
  run: udonsharp-lint Assets --exclude-test-scripts

mise (mise.toml)

[tasks.lint-udon]
run = "udonsharp-lint Assets"

License

MIT

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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
0.5.0 204 7/21/2026
0.4.0 159 4/14/2026
0.3.1 511 1/17/2026
0.3.0 341 12/23/2025
0.2.1 224 12/22/2025
0.2.0 233 12/22/2025
0.1.3 209 12/21/2025
0.1.2 204 12/21/2025
0.1.1 217 12/21/2025
0.1.0 210 12/21/2025