feat(action): SARIF → GitHub code scanning surface (dog-fooded in CI) #286
ci.yml
on: pull_request
lint (ruff + mypy --strict)
15s
extended codegen fuzz
37s
golden C# compiles & runs (.NET)
22s
C# leak extractor (Roslyn) -> OwnIR -> core
26s
own-check repo scan (github + msbuild) + composite action
41s
own-check SARIF -> GitHub code scanning (dog-food)
29s
Matrix: tests
Annotations
28 errors and 32 warnings
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L105
[OWN001] IDisposable local 'tfLeak' is never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L86
[OWN001] IDisposable local 'forLeak' is never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L74
[OWN001] IDisposable local 'foreachLeak' is never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L63
[OWN001] IDisposable local 'whileLeak' is never disposed (leak) [resource: disposable]
|
|
OWN003:
frontend/roslyn/samples/FlowLocalsSample.cs#L33
[OWN003] IDisposable local 'dbl' is disposed more than once [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L23
[OWN001] IDisposable local 'leak' may not be disposed on every path (leak) [resource: disposable]
|
|
OWN002:
frontend/roslyn/samples/FlowLocalsSample.cs#L14
[OWN002] IDisposable local 'uad' is used after it is disposed [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
[OWN001] IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak) [resource: disposable field]
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L202
IDisposable local 'nestedLeak' may not be disposed on every path (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L146
IDisposable local 'dot' may not be disposed on every path (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L105
IDisposable local 'tfLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L86
IDisposable local 'forLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L74
IDisposable local 'foreachLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L63
IDisposable local 'whileLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L33
IDisposable local 'dbl' is disposed more than once
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L23
IDisposable local 'leak' may not be disposed on every path (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L14
IDisposable local 'uad' is used after it is disposed
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak)
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L202
[OWN001] IDisposable local 'nestedLeak' may not be disposed on every path (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L146
[OWN001] IDisposable local 'dot' may not be disposed on every path (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L105
[OWN001] IDisposable local 'tfLeak' is never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L86
[OWN001] IDisposable local 'forLeak' is never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L74
[OWN001] IDisposable local 'foreachLeak' is never disposed (leak) [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L63
[OWN001] IDisposable local 'whileLeak' is never disposed (leak) [resource: disposable]
|
|
OWN003:
frontend/roslyn/samples/FlowLocalsSample.cs#L33
[OWN003] IDisposable local 'dbl' is disposed more than once [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/FlowLocalsSample.cs#L23
[OWN001] IDisposable local 'leak' may not be disposed on every path (leak) [resource: disposable]
|
|
OWN002:
frontend/roslyn/samples/FlowLocalsSample.cs#L14
[OWN002] IDisposable local 'uad' is used after it is disposed [resource: disposable]
|
|
OWN001:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
[OWN001] IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak) [resource: disposable field]
|
|
tests (py3.13)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
tests (py3.11)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
tests (py3.12)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
lint (ruff + mypy --strict)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
golden C# compiles & runs (.NET)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-dotnet@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
C# leak extractor (Roslyn) -> OwnIR -> core
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-dotnet@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
C# leak extractor (Roslyn) -> OwnIR -> core:
frontend/roslyn/OwnSharp.Extractor/Program.cs#L763
Argument of type 'IEnumerable<string?>' cannot be used for parameter 'collection' of type 'IEnumerable<string>' in 'HashSet<string>.HashSet(IEnumerable<string> collection, IEqualityComparer<string>? comparer)' due to differences in the nullability of reference types.
|
|
own-check SARIF -> GitHub code scanning (dog-food)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-dotnet@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
own-check SARIF -> GitHub code scanning (dog-food):
frontend/roslyn/OwnSharp.Extractor/Program.cs#L763
Argument of type 'IEnumerable<string?>' cannot be used for parameter 'collection' of type 'IEnumerable<string>' in 'HashSet<string>.HashSet(IEnumerable<string> collection, IEqualityComparer<string>? comparer)' due to differences in the nullability of reference types.
|
|
extended codegen fuzz
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-python@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
|
OWN001:
frontend/roslyn/samples/ExternalRefSubscription.cs#L20
[OWN001] event '_bus.Changed' is subscribed (handler 'OnChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'ExternalRefSubscription' alive (possible leak) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/CustomerViewModel.cs#L15
[OWN001] event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'CustomerViewModel' alive (possible leak) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/AliasedSourceViewModel.cs#L23
[OWN001] event 'src.CustomerChanged' is subscribed (handler 'OnAliased') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'AliasedSourceViewModel' alive (possible leak) [resource: subscription token]
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L86
IDisposable local 'forLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L74
IDisposable local 'foreachLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L63
IDisposable local 'whileLeak' is never disposed (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L33
IDisposable local 'dbl' is disposed more than once
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L23
IDisposable local 'leak' may not be disposed on every path (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/FlowLocalsSample.cs#L14
IDisposable local 'uad' is used after it is disposed
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/ExternalRefSubscription.cs#L20
event '_bus.Changed' is subscribed (handler 'OnChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'ExternalRefSubscription' alive (possible leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/DisposableFieldViewModel.cs#L10
IDisposable field '_cts' (type 'CancellationTokenSource') is never disposed — its owner 'ReportViewModel' leaks it (leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/CustomerViewModel.cs#L15
event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'CustomerViewModel' alive (possible leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/AliasedSourceViewModel.cs#L23
event 'src.CustomerChanged' is subscribed (handler 'OnAliased') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'AliasedSourceViewModel' alive (possible leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/LambdaHandlerViewModel.cs#L21
event 'bus.CustomerChanged' is subscribed (handler '(s, e) => _count++') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'LambdaHandlerViewModel' alive (possible leak — and being an inline lambda it has no '-=' handle, so it could never be detached)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/ExternalRefSubscription.cs#L20
event '_bus.Changed' is subscribed (handler 'OnChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'ExternalRefSubscription' alive (possible leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/CustomerViewModel.cs#L15
event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'CustomerViewModel' alive (possible leak)
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/samples/AliasedSourceViewModel.cs#L23
event 'src.CustomerChanged' is subscribed (handler 'OnAliased') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'AliasedSourceViewModel' alive (possible leak)
|
|
OWN001:
frontend/roslyn/samples/LambdaHandlerViewModel.cs#L21
[OWN001] event 'bus.CustomerChanged' is subscribed (handler '(s, e) => _count++') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'LambdaHandlerViewModel' alive (possible leak — and being an inline lambda it has no '-=' handle, so it could never be detached) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/ExternalRefSubscription.cs#L20
[OWN001] event '_bus.Changed' is subscribed (handler 'OnChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'ExternalRefSubscription' alive (possible leak) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/CustomerViewModel.cs#L15
[OWN001] event 'bus.CustomerChanged' is subscribed (handler 'OnCustomerChanged') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'CustomerViewModel' alive (possible leak) [resource: subscription token]
|
|
OWN001:
frontend/roslyn/samples/AliasedSourceViewModel.cs#L23
[OWN001] event 'src.CustomerChanged' is subscribed (handler 'OnAliased') but never unsubscribed; its source is an injected dependency whose lifetime is unknown, so it may outlive and keep 'AliasedSourceViewModel' alive (possible leak) [resource: subscription token]
|
|
own-check repo scan (github + msbuild) + composite action:
frontend/roslyn/OwnSharp.Extractor/Program.cs#L763
Argument of type 'IEnumerable<string?>' cannot be used for parameter 'collection' of type 'IEnumerable<string>' in 'HashSet<string>.HashSet(IEnumerable<string> collection, IEqualityComparer<string>? comparer)' due to differences in the nullability of reference types.
|