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
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
nuke :add-package tktco.UdonSharpLinter --version 0.5.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
UdonSharpLinterCLI
🌐 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
| Product | Versions 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.