Files
lmxopcua/code-reviews
Joseph Doherty 67ef6c4ebc fix(driver-s7-cli): resolve Low code-review findings (Driver.S7.Cli-004,005,006,007)
- Driver.S7.Cli-004: 'await using var driver' is the sole driver
  disposal path; dropped the redundant explicit await ShutdownAsync from
  each command's finally.
- Driver.S7.Cli-005: deleted the stale empty
  tests/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli.Tests/ directory (the real test
  project lives under tests/Drivers/Cli/).
- Driver.S7.Cli-006: S7CommandBaseBuildOptionsTests cover the probe
  toggle, timeout mapping, host/port/CPU/rack/slot wiring, and tag list
  passthrough.
- Driver.S7.Cli-007: re-added the SubscribeCommand handler comment
  explaining the CliFx IConsole.Output usage and that the poll-thread
  raises events.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 08:34:48 -04:00
..

Code Reviews

Cross-module code review index for the OtOpcUa server codebase (lmxopcua). The review process is defined in ../REVIEW-PROCESS.md.

Each module's findings.md is the source of truth; this file is generated from them by regen-readme.py and must not be edited by hand.

Module status

Module Reviewer Date Commit Status Open Total
Admin Claude Code 2026-05-22 76d35d1 Reviewed 0 13
Analyzers Claude Code 2026-05-22 76d35d1 Reviewed 0 7
Client.CLI Claude Code 2026-05-22 76d35d1 Reviewed 8 10
Client.Shared Claude Code 2026-05-22 76d35d1 Reviewed 5 11
Client.UI Claude Code 2026-05-22 76d35d1 Reviewed 6 11
Configuration Claude Code 2026-05-22 76d35d1 Reviewed 0 11
Core Claude Code 2026-05-22 76d35d1 Reviewed 0 12
Core.Abstractions Claude Code 2026-05-22 76d35d1 Reviewed 0 8
Core.AlarmHistorian Claude Code 2026-05-22 76d35d1 Reviewed 0 11
Core.ScriptedAlarms Claude Code 2026-05-22 76d35d1 Reviewed 0 12
Core.Scripting Claude Code 2026-05-22 76d35d1 Reviewed 0 11
Core.VirtualTags Claude Code 2026-05-22 76d35d1 Reviewed 0 13
Driver.AbCip Claude Code 2026-05-22 76d35d1 Reviewed 0 15
Driver.AbCip.Cli Claude Code 2026-05-22 76d35d1 Reviewed 6 8
Driver.AbLegacy Claude Code 2026-05-22 76d35d1 Reviewed 0 13
Driver.AbLegacy.Cli Claude Code 2026-05-22 76d35d1 Reviewed 6 7
Driver.Cli.Common Claude Code 2026-05-22 76d35d1 Reviewed 2 6
Driver.FOCAS Claude Code 2026-05-22 76d35d1 Reviewed 0 12
Driver.FOCAS.Cli Claude Code 2026-05-22 76d35d1 Reviewed 5 5
Driver.Galaxy Claude Code 2026-05-22 76d35d1 Reviewed 0 14
Driver.Historian.Wonderware Claude Code 2026-05-22 76d35d1 Reviewed 0 12
Driver.Historian.Wonderware.Client Claude Code 2026-05-22 76d35d1 Reviewed 5 10
Driver.Modbus Claude Code 2026-05-22 76d35d1 Reviewed 0 12
Driver.Modbus.Addressing Claude Code 2026-05-22 76d35d1 Reviewed 0 9
Driver.Modbus.Cli Claude Code 2026-05-22 76d35d1 Reviewed 6 8
Driver.OpcUaClient Claude Code 2026-05-22 76d35d1 Reviewed 0 15
Driver.S7 Claude Code 2026-05-22 76d35d1 Reviewed 0 14
Driver.S7.Cli Claude Code 2026-05-22 76d35d1 Reviewed 4 7
Driver.TwinCAT Claude Code 2026-05-22 76d35d1 Reviewed 0 16
Driver.TwinCAT.Cli Claude Code 2026-05-22 76d35d1 Reviewed 7 7
Server Claude Code 2026-05-22 76d35d1 Reviewed 0 15

Pending findings

Findings with status Open or In Progress, ordered by severity.

ID Severity Category Location Description
Client.CLI-002 Low Correctness & logic bugs Commands/SubscribeCommand.cs:129-137 The summary computes neverWentBad as every target whose node-id key is absent from the everBad dictionary. A node that received no update at all is also absent from everBad, so it is counted in neverWentBad and printed under the he…
Client.CLI-003 Low Correctness & logic bugs Commands/BrowseCommand.cs:29-30, Commands/SubscribeCommand.cs:20-27, Commands/AlarmsCommand.cs:28-29, Commands/HistoryReadCommand.cs:42-43 Numeric command options accept any value with no range validation. --depth, --interval, --max-depth, --max, and the history --interval can all be supplied as 0 or a negative number. A negative --depth/--max-depth silently d…
Client.CLI-004 Low OtOpcUa conventions Commands/SubscribeCommand.cs:13-37 SubscribeCommand is the only command in the module whose constructor and all [CommandOption] properties have no XML doc comments. Every other command (ConnectCommand, ReadCommand, WriteCommand, BrowseCommand, AlarmsCommand, `…
Client.CLI-006 Low Error handling & resilience Commands/HistoryReadCommand.cs:73, Commands/HistoryReadCommand.cs:76, Helpers/NodeIdParser.cs:39 Operator input-format errors surface as raw .NET exceptions rather than clean CLI errors. An unparseable start/end value throws FormatException straight out of DateTime.Parse; an invalid node id throws FormatException/`ArgumentExcept…
Client.CLI-007 Low Performance & resource management CommandBase.cs:112-123 ConfigureLogging builds a new Serilog LoggerConfiguration, creates a logger, and assigns it to the static Log.Logger without disposing the previously assigned logger. For a single CLI invocation this leaks at most one logger and the…
Client.CLI-008 Low Documentation & comments docs/Client.CLI.md:158-217 docs/Client.CLI.md is stale relative to the code at this commit. (1) The subscribe command section documents only -n and -i, but the code (SubscribeCommand) also exposes -r/--recursive, --max-depth, -q/--quiet, --duration
Client.CLI-009 Low Code organization & conventions Commands/SubscribeCommand.cs:66-165, Commands/AlarmsCommand.cs:52-91 Both long-running commands attach an event handler (service.DataChanged += ..., service.AlarmEvent += ...) with a lambda and never detach it. Because the handler closes over console, the captured console and the closure remain refere…
Client.CLI-010 Low Testing coverage tests/Client/ZB.MOM.WW.OtOpcUa.Client.CLI.Tests/SubscribeCommandTests.cs The new SubscribeCommand capabilities are largely untested. The four SubscribeCommandTests cover only single-node subscribe, unsubscribe-on-cancel, disconnect-in-finally, and the subscription message. There is no test for the `--recurs…
Client.Shared-003 Low Correctness & logic bugs Adapters/DefaultSessionAdapter.cs:76, Adapters/DefaultSessionAdapter.cs:273 WriteValueAsync returns response.Results[0] and CallMethodAsync reads result.Results[0] without first checking the Results collection is non-empty. A malformed or service-level-faulted response (empty Results alongside a servic…
Client.Shared-004 Low OtOpcUa conventions Adapters/DefaultSessionAdapter.cs:228, Adapters/DefaultSessionAdapter.cs:121, Adapters/DefaultSessionAdapter.cs:172 CloseAsync, HistoryReadRawAsync, and HistoryReadAggregateAsync are declared async Task but call the synchronous Session.Close() / Session.HistoryRead(...) APIs and contain no await. The history methods run a blocking synchron…
Client.Shared-009 Low Error handling & resilience / Documentation & comments OpcUaClientService.cs:302-322 AcknowledgeAlarmAsync is typed Task<StatusCode> and its XML doc implies the returned code reports the ack outcome, but the method unconditionally return StatusCodes.Good. The actual failure path is `DefaultSessionAdapter.CallMethodAs…
Client.Shared-010 Low Performance & resource management Models/ConnectionSettings.cs:48, OpcUaClientService.cs:408-417 ConnectionSettings.CertificateStorePath is initialized to ClientStoragePaths.GetPkiPath() as a property initializer, so every ConnectionSettings instantiation runs Environment.GetFolderPath + Path.Combine and, on the first call p…
Client.Shared-011 Low Testing coverage tests/Client/ZB.MOM.WW.OtOpcUa.Client.Shared.Tests/OpcUaClientServiceTests.cs The test suite is solid for the happy paths, connection lifecycle, and single-failover behavior. Gaps relative to the findings above: (a) no test exercises concurrent SubscribeAsync/failover to expose the _activeDataSubscriptions race…
Client.UI-003 Low OtOpcUa conventions ZB.MOM.WW.OtOpcUa.Client.UI.csproj:20-21, Program.cs:14-20 The csproj references Serilog and Serilog.Sinks.Console, and docs/Client.UI.md lists Serilog as the logging technology, but no source file in the module uses Serilog. Program.BuildAvaloniaApp() uses Avalonia's LogToTrace() and th…
Client.UI-004 Low OtOpcUa conventions Views/MainWindow.axaml.cs:125-138 OnBrowseCertPathClicked uses OpenFolderDialog, which is obsolete in Avalonia 11.x (the version pinned in the csproj). The supported replacement is the StorageProvider API (StorageProvider.OpenFolderPickerAsync). Using the obsolete…
Client.UI-006 Low Error handling & resilience ViewModels/MainWindowViewModel.cs:244-252, ViewModels/AlarmsViewModel.cs:88-112, ViewModels/SubscriptionsViewModel.cs:79-94 Many catch blocks swallow exceptions silently with an empty body and only a comment (// Redundancy info not available, // Subscribe failed, // Subscription failed; no item added, and others). When a subscribe, alarm-subscribe, or red…
Client.UI-009 Low Design-document adherence ViewModels/HistoryViewModel.cs:44-54 HistoryViewModel.AggregateTypes exposes eight entries: null (Raw) plus Average, Minimum, Maximum, Count, Start, End, and StandardDeviation. docs/Client.UI.md ("Query Options" table) lists only "Raw (default), Average, Minimum, Maxi…
Client.UI-010 Low Code organization & conventions Controls/DateTimeRangePicker.axaml.cs:33-37, Controls/DateTimeRangePicker.axaml.cs:70-80 DateTimeRangePicker declares MinDateTimeProperty / MaxDateTimeProperty styled properties with public CLR accessors, but neither is read anywhere in the control. TryParseDateTime, OnStartLostFocus, and OnEndLostFocus never clamp…
Client.UI-011 Low Documentation & comments Views/MainWindow.axaml:81, Services/JsonSettingsService.cs:11-15 The certificate-store-path TextBox watermark reads (default: AppData/LmxOpcUaClient/pki), referencing the legacy pre-task-#208 folder name. Per CLAUDE.md / docs/Client.UI.md the canonical path is now {LocalAppData}/OtOpcUaClient/
Driver.AbCip.Cli-003 Low Concurrency & thread safety src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli/Commands/SubscribeCommand.cs:50-56,60-61 The OnDataChange handler writes change lines to console.Output (a TextWriter) from the driver's poll-engine callback thread, while the command's main flow concurrently writes the "Subscribed to ... Ctrl+C to stop." line on the CLI th…
Driver.AbCip.Cli-004 Low Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli/Commands/SubscribeCommand.cs:28,58; AbCipCommandBase.cs:26-34 --interval-ms (IntervalMs) is taken verbatim and passed as TimeSpan.FromMilliseconds(IntervalMs) to SubscribeAsync with no validation. A zero or negative value produces a non-positive TimeSpan; the option description claims "Poll…
Driver.AbCip.Cli-005 Low Performance & resource management src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/DriverCommandBase.cs:51-59 ConfigureLogging assigns a freshly created Serilog logger to the process-global Log.Logger but never calls Log.CloseAndFlush(). For a short-lived one-shot command (probe, read, write) the process exit flushes the console sink,…
Driver.AbCip.Cli-006 Low Design-document adherence src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli/AbCipCommandBase.cs:29-34 AbCipCommandBase overrides the abstract DriverCommandBase.Timeout property with a getter derived from TimeoutMs and an empty init body (init { /* driven by TimeoutMs */ }). Because the override has no [CommandOption] attribute,…
Driver.AbCip.Cli-007 Low Testing coverage tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli.Tests/WriteCommandParseValueTests.cs The only test file covers WriteCommand.ParseValue and ReadCommand.SynthesiseTagName — both pure static helpers. There is no coverage for AbCipCommandBase.BuildOptions (the flag-to-AbCipDriverOptions mapping that all four commands d…
Driver.AbCip.Cli-008 Low Documentation & comments docs/Driver.AbCip.Cli.md:8-9 docs/Driver.AbCip.Cli.md opens with "Second of four driver test-client CLIs (Modbus -> AB CIP -> AB Legacy -> S7 -> TwinCAT)." The count "four" contradicts the chain that follows it (five names) and contradicts docs/DriverClis.md, whic…
Driver.AbLegacy.Cli-002 Low Correctness & logic bugs Commands/WriteCommand.cs:27-29, Program.cs:6-9 The --value option help text states "booleans accept true/false/1/0", but ParseBool (WriteCommand.cs:74-80) and the error message also accept on/off and yes/no, and DriverClis.md documents the full `true/false/1/0/yes/no/on/off…
Driver.AbLegacy.Cli-003 Low Concurrency & thread safety Commands/SubscribeCommand.cs:47-53 The OnDataChange handler calls console.Output.WriteLine(line) (the synchronous overload) directly from the PollGroupEngine poll thread. The poll engine raises change events from a background timer/loop thread, so two ticks that fire…
Driver.AbLegacy.Cli-004 Low Error handling & resilience Commands/ProbeCommand.cs:37-56, Commands/ReadCommand.cs:39-50, Commands/WriteCommand.cs:48-59, Commands/SubscribeCommand.cs:41-76 Every command does await using var driver = new AbLegacyDriver(...) and an explicit await driver.ShutdownAsync(...) in the finally. AbLegacyDriver DisposeAsync itself calls ShutdownAsync, so the driver is shut down twice on t…
Driver.AbLegacy.Cli-005 Low Design-document adherence Commands/SubscribeCommand.cs:23-25, docs/Driver.AbLegacy.Cli.md:94-96 The subscribe command interval option is --interval-ms (default 1000). docs/Driver.AbLegacy.Cli.md shows the subscribe example as otopcua-ablegacy-cli subscribe ... -i 500, which works because of the short alias 'i', but the doc ne…
Driver.AbLegacy.Cli-006 Low Code organization & conventions Commands/ProbeCommand.cs:20-22 ProbeCommand declares its --type option with no short alias, while ReadCommand, WriteCommand, and SubscribeCommand all declare --type with the short alias 't'. ProbeCommand also gives --address the alias 'a', matching t…
Driver.AbLegacy.Cli-007 Low Testing coverage tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Cli.Tests/WriteCommandParseValueTests.cs The only test file in the CLI test project covers WriteCommand.ParseValue and ReadCommand.SynthesiseTagName. Two behaviours that are pure logic (testable without a device) are uncovered: (1) AbLegacyCommandBase.BuildOptions — that it…
Driver.Cli.Common-004 Low Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/SnapshotFormatter.cs:68-70 FormatTable calls rows.Max(r => r.Tag.Length) (and the same for the value and status columns) without guarding against empty input. When tagNames and snapshots are both empty (equal length, so the mismatch check at line 56 passes),…
Driver.Cli.Common-006 Low Documentation & comments src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/SnapshotFormatter.cs:71, src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/DriverCommandBase.cs:9 Two minor doc inaccuracies. (1) The comment at SnapshotFormatter.cs:71 states the "source-time column is fixed-width (ISO-8601 to ms) so no max-measurement needed" — true only when every snapshot has a non-null SourceTimestampUtc. `For…
Driver.FOCAS.Cli-001 Low Error handling & resilience Commands/WriteCommand.cs:58-68 WriteCommand.ParseValue parses the numeric --value types (Byte/Int16/Int32/Float32/Float64) with sbyte.Parse / short.Parse / etc. These throw raw FormatException or OverflowException for malformed or out-of-range inpu…
Driver.FOCAS.Cli-002 Low Concurrency & thread safety Commands/SubscribeCommand.cs:45-51 The subscribe command attaches an OnDataChange handler that calls the synchronous console.Output.WriteLine. OnDataChange is raised from the driver's PollGroupEngine tick thread, while the command's main flow writes the "Subscribe…
Driver.FOCAS.Cli-003 Low Error handling & resilience FocasCommandBase.cs:19 (CncPort), FocasCommandBase.cs:27 (TimeoutMs), Commands/SubscribeCommand.cs:23 (IntervalMs) The numeric command options --cnc-port, --timeout-ms, and --interval-ms are accepted without range validation. A zero or negative --cnc-port produces an invalid focas://host:<n> string; --timeout-ms 0 yields a zero TimeSpan o…
Driver.FOCAS.Cli-004 Low Performance & resource management Commands/ProbeCommand.cs:37,54; Commands/ReadCommand.cs:37,46; Commands/WriteCommand.cs:45,54; Commands/SubscribeCommand.cs:39,73 Every command declares await using var driver = new FocasDriver(...)
Driver.FOCAS.Cli-005 Low Design-document adherence Commands/WriteCommand.cs:50, Commands/ProbeCommand.cs:50 (via SnapshotFormatter.FormatStatus) docs/Driver.FOCAS.Cli.md documents BadDeviceFailure and BadCommunicationError as the key diagnostic signals an operator reads off probe / write output ("A BadCommunicationError means ... BadDeviceFailure after a successful co…
Driver.Historian.Wonderware.Client-003 Low Concurrency & thread safety WonderwareHistorianClient.cs:207, WonderwareHistorianClient.cs:132-150 _totalQueries is mutated with Interlocked.Increment in Invoke, but read inside GetHealthSnapshot under _healthLock, and every other counter (_totalSuccesses, _totalFailures, _consecutiveFailures) is mutated only under `_hea…
Driver.Historian.Wonderware.Client-004 Low Concurrency & thread safety WonderwareHistorianClient.cs:203-267 A sidecar-reported failure is recorded in two non-atomic steps under separate lock acquisitions: Invoke calls RecordSuccess() (line 211) and then the caller calls ThrowIfFailed which calls ReclassifySuccessAsFailure() (line 256), d…
Driver.Historian.Wonderware.Client-006 Low Error handling & resilience Internal/PipeChannel.cs:96-107, WonderwareHistorianClientOptions.cs:11-12 PipeChannel.InvokeAsync retries exactly once on transport failure and otherwise propagates. The options expose ReconnectInitialBackoff and ReconnectMaxBackoff and WonderwareHistorianClientOptions documents them as exponential backo…
Driver.Historian.Wonderware.Client-008 Low Security ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client.csproj:29-32 The csproj suppresses two NuGet audit advisories (GHSA-37gx-xxp4-5rgx, GHSA-w3x6-4m5h-cxqf) for the MessagePack 2.5.187 dependency with no inline comment recording why the suppression is safe, who reviewed it, or when it should be re…
Driver.Historian.Wonderware.Client-010 Low Documentation & comments WonderwareHistorianClient.cs:355-361, WonderwareHistorianClient.cs:132-150 Two doc/behaviour mismatches. (1) The Dispose() XML comment asserts the underlying channel async cleanup is non-blocking so the GetAwaiter()/GetResult() bridge is safe. PipeChannel.DisposeAsync calls ResetTransport(), which invokes…
Driver.Modbus.Cli-003 Low Correctness & logic bugs src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/ModbusCommandBase.cs:14-24 Port (int) and TimeoutMs (int) accept any 32-bit value, including negatives and ports above 65535. UnitId is a byte, so it accepts 0-255 even though the option description and docs/Driver.Modbus.Cli.md both say the valid rang…
Driver.Modbus.Cli-004 Low Concurrency & thread safety src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/Commands/SubscribeCommand.cs:61-67 The OnDataChange handler is invoked from the driver's PollGroupEngine background thread and calls console.Output.WriteLine synchronously. An exception thrown inside this handler (e.g. an IOException on a redirected or closed stdout…
Driver.Modbus.Cli-005 Low Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/Commands/ProbeCommand.cs:21-54; Commands/ReadCommand.cs:46-75; Commands/WriteCommand.cs:54-89 All three commands call ConfigureLogging() then console.RegisterCancellationHandler(), but if the operator presses Ctrl+C before InitializeAsync completes, the resulting OperationCancelledException propagates out of ExecuteAsync
Driver.Modbus.Cli-006 Low Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/Commands/ProbeCommand.cs:35-53 probe reports Health: {health.State} from GetHealth(). After a successful InitializeAsync the driver sets state to Healthy regardless of whether the subsequent probe register read returns Good or a Bad status code. ReadAsync do…
Driver.Modbus.Cli-007 Low Design-document adherence docs/Driver.Modbus.Cli.md:124-156; src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/Commands/ReadCommand.cs docs/Driver.Modbus.Cli.md devotes a whole "v2 addressing grammar" section to the industry-standard tag-address strings (40001:F:CDAB, HR1:I, C100, V2000:F:CDAB, etc.) and says "set the per-tag addressString field instead of the…
Driver.Modbus.Cli-008 Low Testing coverage tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli.Tests/ The test project covers only the two pure-function seams: ReadCommand.SynthesiseTagName and WriteCommand.ParseValue. There is no coverage for WriteCommand's read-only-region rejection (Region is not (Coils or HoldingRegisters)), no…
Driver.S7.Cli-004 Low Performance & resource management src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli/Commands/ProbeCommand.cs:36,53, Commands/ReadCommand.cs:45,54, Commands/WriteCommand.cs:51,60, Commands/SubscribeCommand.cs:39,73 Every command declares the driver with await using var driver = new S7Driver(...) and also calls await driver.ShutdownAsync(...) in a finally block. S7Driver.DisposeAsync itself calls ShutdownAsync, so shutdown runs twice per c…
Driver.S7.Cli-005 Low Code organization & conventions tests/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli.Tests/ A stale directory tests/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli.Tests/ exists containing only an obj/ folder — no .csproj, no source. The real test project lives at tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli.Tests/. The empty direct…
Driver.S7.Cli-006 Low Testing coverage tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli.Tests/WriteCommandParseValueTests.cs The only test file covers WriteCommand.ParseValue and ReadCommand.SynthesiseTagName. S7CommandBase.BuildOptions — which maps the host / port / CPU / rack / slot / timeout flags onto an S7DriverOptions and forces `Probe.Enabled = fa…
Driver.S7.Cli-007 Low Documentation & comments src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli/Commands/SubscribeCommand.cs:45-51 The Modbus CLI SubscribeCommand carries an explanatory comment on the OnDataChange handler ("Route every data-change event to the CliFx console (not System.Console — the analyzer flags it + IConsole is the testable abstraction)"). The…
Driver.TwinCAT.Cli-001 Low Correctness & logic bugs TwinCATCommandBase.cs:23-24, Commands/SubscribeCommand.cs:23-24, Commands/BrowseCommand.cs:21-24 Numeric command options are accepted without range validation. --timeout-ms feeds Timeout => TimeSpan.FromMilliseconds(TimeoutMs); passing --timeout-ms 0 or a negative value yields TimeSpan.Zero/a negative TimeSpan, which is then…
Driver.TwinCAT.Cli-002 Low Concurrency & thread safety Commands/SubscribeCommand.cs:46-58 The OnDataChange handler calls console.Output.WriteLine(line) synchronously. In native ADS-notification mode the event is raised from the Beckhoff.TwinCAT.Ads notification callback thread (see TwinCATDriver.SubscribeAsync, which in…
Driver.TwinCAT.Cli-003 Low Error handling & resilience Commands/SubscribeCommand.cs:56-58 The subscribe banner reports the mechanism purely from the --poll-only flag (var mode = PollOnly ? "polling" : "ADS notification"). The doc (docs/Driver.TwinCAT.Cli.md) states the banner "announces which mechanism is in play". The CL…
Driver.TwinCAT.Cli-004 Low Design-document adherence TwinCATCommandBase.cs:26-29, Commands/BrowseCommand.cs --poll-only is declared on TwinCATCommandBase, so it is inherited by browse. BrowseCommand only ever calls DiscoverAsync — it never subscribes — so UseNativeNotifications = !PollOnly has no observable effect on a browse run. Th…
Driver.TwinCAT.Cli-005 Low Code organization & conventions Commands/ProbeCommand.cs:23, Commands/ReadCommand.cs:20, Commands/WriteCommand.cs:20, Commands/SubscribeCommand.cs:18 The --type option is declared with the short alias -t on read, write, and subscribe, but ProbeCommand declares [CommandOption("type", ...)] with no short alias. An operator who has internalised -t from the other three verbs…
Driver.TwinCAT.Cli-006 Low Testing coverage tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Cli.Tests/WriteCommandParseValueTests.cs The only test file covers WriteCommand.ParseValue and ReadCommand.SynthesiseTagName. Other deterministic, router-independent logic is untested: TwinCATCommandBase.Gateway (the ads://{netId}:{port} string the driver's `TwinCATAmsAdd…
Driver.TwinCAT.Cli-007 Low Documentation & comments TwinCATCommandBase.cs:31-36 The Timeout override has an empty init accessor with the comment /* driven by TimeoutMs */. Because the base DriverCommandBase.Timeout is declared abstract { get; init; }, the override must supply an init, but here it silently…

Closed findings

Findings with status Resolved, Won't Fix, or Deferred.

ID Severity Status Category Location
Admin-001 Critical Resolved Security Components/Routes.razor:4-11, Program.cs:150
Admin-002 Critical Resolved Security Components/Pages/Clusters/NewCluster.razor:1-7, Home.razor, Fleet.razor, Hosts.razor, AlarmsHistorian.razor, Clusters/ClustersList.razor, Clusters/Generations.razor, Drivers/FocasDetail.razor
Core.AlarmHistorian-001 Critical Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:255-278
Core.Scripting-001 Critical Resolved Security ForbiddenTypeAnalyzer.cs:45, ScriptSandbox.cs:54
Driver.Galaxy-001 Critical Resolved Error handling & resilience Runtime/EventPump.cs:128, GalaxyDriver.cs:222
Server-001 Critical Resolved Correctness & logic bugs src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/DriverNodeManager.cs:1791
Admin-003 High Resolved Security Program.cs:137-139, Hubs/FleetStatusHub.cs:11, Hubs/AlertHub.cs:10, Hubs/ScriptLogHub.cs:30
Admin-004 High Resolved Security appsettings.json:3,13-14
Admin-005 High Resolved Correctness & logic bugs Components/Pages/Login.razor:15,107-110
Admin-013 High Resolved Error handling & resilience Components/Pages/Clusters/ClusterDetail.razor:180-197, Components/Pages/Clusters/AclsTab.razor, Components/Pages/Clusters/RedundancyTab.razor, Components/Pages/RoleGrants.razor, Components/Pages/Hosts.razor, Components/Pages/ScriptLog.razor, Program.cs:157-159
Client.Shared-005 High Resolved Concurrency & thread safety OpcUaClientService.cs:19, OpcUaClientService.cs:226-249, OpcUaClientService.cs:499-521
Client.Shared-006 High Resolved Concurrency & thread safety OpcUaClientService.cs:97-100, OpcUaClientService.cs:432-497
Configuration-001 High Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Migrations/20260417215224_StoredProcedures.cs:282
Configuration-008 High Resolved Security src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Migrations/20260417215224_StoredProcedures.cs:150, :373, :468
Core-001 High Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core/Authorization/UserAuthorizationState.cs:50-68
Core-002 High Resolved Security src/Core/ZB.MOM.WW.OtOpcUa.Core/Authorization/TriePermissionEvaluator.cs:24-50
Core.AlarmHistorian-002 High Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:99-105,386-388
Core.AlarmHistorian-004 High Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:90,112,176,259
Core.AlarmHistorian-006 High Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:103,135-216
Core.ScriptedAlarms-001 High Resolved Concurrency & thread safety ScriptedAlarmEngine.cs:175, ScriptedAlarmEngine.cs:178, ScriptedAlarmEngine.cs:73, ScriptedAlarmEngine.cs:368
Core.Scripting-002 High Resolved Security ForbiddenTypeAnalyzer.cs:70
Core.VirtualTags-001 High Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagEngine.cs:306
Driver.AbCip-001 High Resolved Correctness & logic bugs AbCipDriver.cs:111, AbCipDriver.cs:163-167
Driver.AbCip-002 High Resolved Correctness & logic bugs AbCipStatusMapper.cs:65-78
Driver.AbCip-003 High Resolved Correctness & logic bugs AbCipUdtMemberLayout.cs:32-54, AbCipDriver.cs:426-430, AbCipUdtReadPlanner.cs:48
Driver.AbCip-008 High Resolved Concurrency & thread safety AbCipDriver.cs:144-152, AbCipDriver.cs:169-183, AbCipDriver.cs:235-281
Driver.AbLegacy-001 High Resolved Correctness & logic bugs AbLegacyAddress.cs:54, AbLegacyDriver.cs:368-374
Driver.AbLegacy-006 High Resolved Concurrency & thread safety AbLegacyDriver.cs:107-158, AbLegacyDriver.cs:162-234, LibplctagLegacyTagRuntime.cs
Driver.Cli.Common-001 High Resolved Correctness & logic bugs src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/SnapshotFormatter.cs:106-119
Driver.FOCAS-001 High Resolved Correctness & logic bugs FocasDriverFactoryExtensions.cs:54-86, FocasDriverFactoryExtensions.cs:132-140
Driver.FOCAS-002 High Resolved Correctness & logic bugs WireFocasClient.cs:164-179, FocasDriver.cs:513, FocasDriver.cs:593
Driver.Galaxy-002 High Resolved Correctness & logic bugs Browse/DataTypeMap.cs:13, Runtime/MxValueDecoder.cs:9
Driver.Galaxy-008 High Resolved Error handling & resilience GalaxyDriver.cs:264-276, Runtime/EventPump.cs:97-103
Driver.Historian.Wonderware-001 High Resolved Correctness and logic bugs Backend/SdkAlarmHistorianWriteBackend.cs:68, Backend/AahClientManagedAlarmEventWriter.cs:82-103
Driver.Historian.Wonderware.Client-001 High Resolved Correctness & logic bugs WonderwareHistorianClient.cs:98-113
Driver.Modbus-001 High Resolved Concurrency & thread safety ModbusDriver.cs:92,99-122
Driver.Modbus.Addressing-001 High Resolved Correctness & logic bugs ModbusAddressParser.cs:230-235, DirectLogicAddress.cs:66-73
Driver.OpcUaClient-001 High Resolved Correctness & logic bugs OpcUaClientDriver.cs:444, :466, :517, :540, :599, :610
Driver.OpcUaClient-002 High Resolved Error handling & resilience OpcUaClientDriver.cs:1330-1359
Driver.OpcUaClient-003 High Resolved Correctness & logic bugs OpcUaClientDriver.cs:644-711
Driver.OpcUaClient-004 High Resolved Design-document adherence OpcUaClientDriver.cs:596-632, :789, OpcUaClientDriverOptions.cs
Driver.OpcUaClient-005 High Resolved Concurrency & thread safety OpcUaClientDriver.cs:1297-1319
Driver.S7-001 High Resolved Correctness & logic bugs S7AddressParser.cs:93, S7Driver.cs:231
Driver.S7-006 High Resolved Concurrency & thread safety S7Driver.cs:140, S7Driver.cs:457, S7Driver.cs:506
Driver.S7-007 High Resolved Error handling & resilience S7Driver.cs:200, S7DriverOptions.cs:13, docs/v2/driver-specs.md:434
Driver.S7-011 High Resolved Design-document adherence S7Driver.cs:82, S7Driver.cs:134, IDriver.cs:24
Driver.TwinCAT-001 High Resolved Correctness & logic bugs TwinCATDriver.cs:41-78
Driver.TwinCAT-002 High Resolved Correctness & logic bugs TwinCATDataType.cs:34-48, AdsTwinCATClient.cs:264-281
Driver.TwinCAT-007 High Resolved Concurrency & thread safety TwinCATDriver.cs:413-429
Driver.TwinCAT-008 High Resolved Concurrency & thread safety AdsTwinCATClient.cs:162-169, TwinCATDriver.cs:319-324
Driver.TwinCAT-013 High Resolved Design-document adherence TwinCATDriver.cs:11-12 (capability list), whole file
Server-002 High Resolved Correctness & logic bugs src/Server/ZB.MOM.WW.OtOpcUa.Server/Security/AuthorizationGate.cs:60-63
Server-009 High Resolved Security src/Server/ZB.MOM.WW.OtOpcUa.Server/Security/LdapOptions.cs:44, src/Server/ZB.MOM.WW.OtOpcUa.Server/Program.cs:74
Admin-006 Medium Resolved Security Components/Layout/MainLayout.razor:47-49, Program.cs:129,131-135
Admin-007 Medium Resolved Design-document adherence Components/Pages/Clusters/NewCluster.razor:91,95-96
Admin-008 Medium Resolved Error handling & resilience Services/ReservationService.cs:28-37
Admin-009 Medium Resolved Testing coverage src/Server/ZB.MOM.WW.OtOpcUa.Admin (whole module)
Analyzers-001 Medium Resolved Correctness & logic bugs src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/UnwrappedCapabilityCallAnalyzer.cs:135-139
Analyzers-006 Medium Resolved Testing coverage tests/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers.Tests/UnwrappedCapabilityCallAnalyzerTests.cs
Client.CLI-001 Medium Resolved Correctness & logic bugs Commands/HistoryReadCommand.cs:73, Commands/HistoryReadCommand.cs:76
Client.CLI-005 Medium Resolved Concurrency & thread safety Commands/SubscribeCommand.cs:66-78, Commands/AlarmsCommand.cs:52-64
Client.Shared-001 Medium Resolved Correctness & logic bugs OpcUaClientService.cs:552
Client.Shared-002 Medium Resolved Correctness & logic bugs OpcUaClientService.cs:351-355, OpcUaClientService.cs:373
Client.Shared-007 Medium Resolved Concurrency & thread safety OpcUaClientService.cs:581-622
Client.Shared-008 Medium Resolved Error handling & resilience OpcUaClientService.cs:170-180, Helpers/ValueConverter.cs:15-31
Client.UI-001 Medium Resolved Correctness & logic bugs ViewModels/HistoryViewModel.cs:76, ViewModels/HistoryViewModel.cs:77
Client.UI-002 Medium Resolved Correctness & logic bugs ViewModels/MainWindowViewModel.cs:255, ViewModels/MainWindowViewModel.cs:333
Client.UI-005 Medium Resolved Concurrency & thread safety ViewModels/MainWindowViewModel.cs:286-304, ViewModels/MainWindowViewModel.cs:155-189
Client.UI-007 Medium Resolved Security Services/UserSettings.cs:22-23, Services/JsonSettingsService.cs:38-50, ViewModels/MainWindowViewModel.cs:393-408
Client.UI-008 Medium Resolved Performance & resource management ViewModels/MainWindowViewModel.cs:18, ViewModels/MainWindowViewModel.cs:125-148, App.axaml.cs:18-32
Configuration-002 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Migrations/20260417215224_StoredProcedures.cs:325
Configuration-003 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Validation/DraftValidator.cs:73
Configuration-006 Medium Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Configuration/LocalCache/ResilientConfigReader.cs:79
Configuration-009 Medium Resolved Security src/Core/ZB.MOM.WW.OtOpcUa.Configuration/DesignTimeDbContextFactory.cs:14
Core-003 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core/Authorization/PermissionTrie.cs:80-98
Core-005 Medium Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core/Authorization/PermissionTrieCache.cs:59-70
Core-006 Medium Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core/OpcUa/GenericDriverNodeManager.cs:42-64
Core-007 Medium Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/AlarmSurfaceInvoker.cs:75-83
Core.Abstractions-001 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/PollGroupEngine.cs:112
Core.Abstractions-002 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/PollGroupEngine.cs:105-109
Core.Abstractions-003 Medium Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/PollGroupEngine.cs:64,121-130
Core.AlarmHistorian-003 Medium Resolved OtOpcUa conventions src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:107-127,218-243,246-253
Core.AlarmHistorian-005 Medium Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:66-71,141-143,199,386-388
Core.AlarmHistorian-007 Medium Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:172-174
Core.AlarmHistorian-009 Medium Resolved Design-document adherence src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:317-347
Core.AlarmHistorian-010 Medium Resolved Testing coverage tests/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian.Tests/SqliteStoreAndForwardSinkTests.cs
Core.ScriptedAlarms-002 Medium Resolved Correctness & logic bugs ScriptedAlarmEngine.cs:162, ScriptedAlarmEngine.cs:90
Core.ScriptedAlarms-004 Medium Resolved Concurrency & thread safety ScriptedAlarmEngine.cs:138-143, ScriptedAlarmEngine.cs:227-234
Core.ScriptedAlarms-005 Medium Resolved Concurrency & thread safety ScriptedAlarmEngine.cs:365-369, ScriptedAlarmEngine.cs:416-424
Core.ScriptedAlarms-007 Medium Resolved Error handling & resilience ScriptedAlarmEngine.cs:216, ScriptedAlarmEngine.cs:251, ScriptedAlarmEngine.cs:154, ScriptedAlarmEngine.cs:387
Core.ScriptedAlarms-012 Medium Resolved Testing coverage tests/Core/ZB.MOM.WW.OtOpcUa.Core.ScriptedAlarms.Tests/ScriptedAlarmEngineTests.cs
Core.Scripting-003 Medium Resolved Security TimedScriptEvaluator.cs:9, ScriptSandbox.cs:30
Core.Scripting-004 Medium Resolved Correctness & logic bugs DependencyExtractor.cs:73
Core.Scripting-007 Medium Resolved Error handling & resilience TimedScriptEvaluator.cs:60
Core.Scripting-010 Medium Resolved Testing coverage tests/Core/ZB.MOM.WW.OtOpcUa.Core.Scripting.Tests/ScriptSandboxTests.cs:54
Core.VirtualTags-002 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagEngine.cs:237
Core.VirtualTags-003 Medium Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagEngine.cs:117-120
Core.VirtualTags-005 Medium Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagSource.cs:50-64
Core.VirtualTags-008 Medium Resolved Performance & resource management src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/DependencyGraph.cs:81-115
Core.VirtualTags-012 Medium Resolved Testing coverage tests/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags.Tests/
Driver.AbCip-004 Medium Resolved Correctness & logic bugs AbCipDataType.cs:51-58, LibplctagTagRuntime.cs:47-49,53
Driver.AbCip-005 Medium Resolved Correctness & logic bugs AbCipDriver.cs:124-141
Driver.AbCip-006 Medium Resolved OtOpcUa conventions PlcTagHandle.cs:28-59, AbCipDriver.cs:806-807,832-833, LibplctagTagRuntime.cs:117
Driver.AbCip-009 Medium Resolved Concurrency & thread safety AbCipDriver.cs:621-648, AbCipDriver.cs:591-614
Driver.AbCip-010 Medium Resolved Error handling & resilience AbCipDriver.cs:621-648, AbCipDriver.cs:346-391
Driver.AbCip-014 Medium Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Tests/AbCipStatusMapperTests.cs:28-40
Driver.AbCip.Cli-001 Medium Resolved Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli/Commands/WriteCommand.cs:70-85
Driver.AbCip.Cli-002 Medium Resolved Correctness & logic bugs src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Cli/Commands/ProbeCommand.cs:21-23; Commands/ReadCommand.cs:24-25; Commands/SubscribeCommand.cs:20-22
Driver.AbLegacy-002 Medium Resolved Correctness & logic bugs AbLegacyDriver.cs:368
Driver.AbLegacy-003 Medium Resolved Correctness & logic bugs AbLegacyAddress.cs:62-95
Driver.AbLegacy-004 Medium Resolved Correctness & logic bugs LibplctagLegacyTagRuntime.cs:36-37
Driver.AbLegacy-007 Medium Resolved Concurrency & thread safety AbLegacyDriver.cs:411-438, AbLegacyDriver.cs:386-409
Driver.AbLegacy-008 Medium Resolved Concurrency & thread safety AbLegacyDriver.cs:21, AbLegacyDriver.cs:138-146, AbLegacyDriver.cs:216-229
Driver.AbLegacy-009 Medium Resolved Error handling & resilience AbLegacyDriver.cs:41-74
Driver.AbLegacy-010 Medium Resolved Error handling & resilience AbLegacyStatusMapper.cs:26-56
Driver.AbLegacy-012 Medium Resolved Design-document adherence PlcFamilies/AbLegacyPlcFamilyProfile.cs:7-54, AbLegacyDriver.cs:48-52
Driver.AbLegacy.Cli-001 Medium Resolved Error handling & resilience Commands/WriteCommand.cs:46, Commands/WriteCommand.cs:62-72
Driver.Cli.Common-002 Medium Resolved Correctness & logic bugs src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/SnapshotFormatter.cs:101-122
Driver.Cli.Common-003 Medium Resolved Concurrency & thread safety src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common/DriverCommandBase.cs:51-59
Driver.Cli.Common-005 Medium Resolved Testing coverage tests/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Cli.Common.Tests/SnapshotFormatterTests.cs:27-37
Driver.FOCAS-003 Medium Resolved Correctness & logic bugs FocasDriver.cs:71-79
Driver.FOCAS-004 Medium Resolved OtOpcUa conventions FocasDriver.cs:374-379, WireFocasClient.cs:48-50
Driver.FOCAS-005 Medium Resolved Concurrency & thread safety FocasDriver.cs:28, FocasDriver.cs:206-215, FocasDriver.cs:261, FocasDriver.cs:274
Driver.FOCAS-006 Medium Resolved Error handling & resilience FocasDriver.cs:859-874, WireFocasClient.cs:22-31
Driver.FOCAS-012 Medium Resolved Testing coverage FocasDriverFactoryExtensions.cs, FocasDriver.cs:495-629 (FixedTreeLoopAsync)
Driver.Galaxy-003 Medium Resolved Correctness & logic bugs Runtime/StatusCodeMap.cs:86
Driver.Galaxy-004 Medium Resolved Correctness & logic bugs GalaxyDriver.cs:901
Driver.Galaxy-006 Medium Resolved Concurrency & thread safety GalaxyDriver.cs:848-861
Driver.Galaxy-007 Medium Resolved Concurrency & thread safety GalaxyDriver.cs:937-968
Driver.Galaxy-009 Medium Resolved Error handling & resilience GalaxyDriver.cs:354-371
Driver.Galaxy-011 Medium Resolved Performance & resource management GalaxyDriver.cs:411
Driver.Galaxy-014 Medium Resolved Testing coverage src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy (module-wide)
Driver.Historian.Wonderware-002 Medium Resolved Correctness and logic bugs Ipc/HistorianFrameHandler.cs:162, :181
Driver.Historian.Wonderware-003 Medium Resolved Correctness and logic bugs Backend/HistorianDataSource.cs:320-323, :457-460
Driver.Historian.Wonderware-006 Medium Resolved Error handling and resilience Ipc/PipeServer.cs:120-128
Driver.Historian.Wonderware-009 Medium Resolved Performance and resource management Backend/HistorianDataSource.cs:382-395, Ipc/Contracts.cs:85-99
Driver.Historian.Wonderware.Client-002 Medium Resolved Correctness & logic bugs WonderwareHistorianClient.cs:154-199, IAlarmHistorianSink.cs:66-74
Driver.Historian.Wonderware.Client-005 Medium Resolved Error handling & resilience Ipc/FrameReader.cs:31-32
Driver.Historian.Wonderware.Client-007 Medium Resolved Security WonderwareHistorianClient.cs:276
Driver.Historian.Wonderware.Client-009 Medium Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Client.Tests/WonderwareHistorianClientTests.cs
Driver.Modbus-002 Medium Resolved Correctness & logic bugs ModbusDriver.cs:127-186
Driver.Modbus-004 Medium Resolved Performance & resource management ModbusDriver.cs:1468-1473
Driver.Modbus-005 Medium Resolved Correctness & logic bugs ModbusDriver.cs:777-798,323-330
Driver.Modbus-006 Medium Resolved Error handling & resilience ModbusDriver.cs:514-524,532-550
Driver.Modbus.Addressing-002 Medium Resolved Correctness & logic bugs ModbusAddressParser.cs:86-94
Driver.Modbus.Addressing-003 Medium Resolved Correctness & logic bugs ModbusAddressParser.cs:405-406, ModbusAddressParser.cs:128
Driver.Modbus.Addressing-004 Medium Resolved Correctness & logic bugs ModbusAddressParser.cs:182-194
Driver.Modbus.Addressing-005 Medium Resolved Error handling & resilience ModbusAddressParser.cs:200-213
Driver.Modbus.Addressing-008 Medium Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Addressing.Tests/
Driver.Modbus.Cli-001 Medium Resolved Correctness & logic bugs src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/Commands/SubscribeCommand.cs:43-51
Driver.Modbus.Cli-002 Medium Resolved Correctness & logic bugs src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Cli/Commands/WriteCommand.cs:54-89
Driver.OpcUaClient-006 Medium Resolved Concurrency & thread safety OpcUaClientDriver.cs:1330-1359
Driver.OpcUaClient-007 Medium Resolved Concurrency & thread safety OpcUaClientDriver.cs:1374, :1376-1383, :508
Driver.OpcUaClient-008 Medium Resolved Error handling & resilience OpcUaClientDriver.cs:1092-1099
Driver.OpcUaClient-009 Medium Resolved Error handling & resilience OpcUaClientDriver.cs:560-564
Driver.OpcUaClient-010 Medium Resolved Correctness & logic bugs OpcUaClientDriver.cs:823-824
Driver.OpcUaClient-012 Medium Resolved Security OpcUaClientDriver.cs:210-217
Driver.OpcUaClient-013 Medium Resolved Performance & resource management OpcUaClientDriver.cs:436-437
Driver.OpcUaClient-015 Medium Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Tests/*, tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.IntegrationTests/OpcUaClientSmokeTests.cs
Driver.S7-002 Medium Resolved Correctness & logic bugs S7Driver.cs:350
Driver.S7-004 Medium Resolved OtOpcUa conventions S7Driver.cs (whole file)
Driver.S7-008 Medium Resolved Error handling & resilience S7Driver.cs:286
Driver.S7-012 Medium Resolved Design-document adherence S7DriverOptions.cs:59, S7Driver.cs:457
Driver.S7-014 Medium Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.S7.Tests/
Driver.S7.Cli-001 Medium Resolved Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli/Commands/WriteCommand.cs:65-80
Driver.S7.Cli-002 Medium Resolved Design-document adherence src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli/Commands/ReadCommand.cs:22-29, Commands/WriteCommand.cs:21-33, Commands/SubscribeCommand.cs:18-21; docs/Driver.S7.Cli.md:70-73,80-81
Driver.S7.Cli-003 Medium Resolved Error handling & resilience src/Drivers/Cli/ZB.MOM.WW.OtOpcUa.Driver.S7.Cli/Commands/ProbeCommand.cs:38-50
Driver.TwinCAT-003 Medium Resolved Correctness & logic bugs AdsTwinCATClient.cs:264-281, 283-300
Driver.TwinCAT-005 Medium Resolved OtOpcUa conventions TwinCATDriver.cs (whole file), AdsTwinCATClient.cs (whole file)
Driver.TwinCAT-009 Medium Resolved Concurrency & thread safety TwinCATDriver.cs:80-99, 41-72, 366-388
Driver.TwinCAT-010 Medium Resolved Error handling & resilience AdsTwinCATClient.cs:178-195
Driver.TwinCAT-011 Medium Resolved Error handling & resilience TwinCATStatusMapper.cs:29-42
Driver.TwinCAT-012 Medium Resolved Performance & resource management TwinCATDriver.cs:102, AdsTwinCATClient.cs:178-195
Server-003 Medium Resolved Correctness & logic bugs src/Server/ZB.MOM.WW.OtOpcUa.Server/Phase7/RingBufferHistoryWriter.cs:96-119
Server-005 Medium Resolved Concurrency & thread safety src/Server/ZB.MOM.WW.OtOpcUa.Server/Alarms/AlarmConditionService.cs:166, src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/DriverNodeManager.cs:303-311
Server-007 Medium Resolved Error handling & resilience src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaApplicationHost.cs:179-183
Server-010 Medium Resolved Security src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaServerOptions.cs:59, src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaApplicationHost.cs:284-291
Server-011 Medium Resolved Security src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaApplicationHost.cs:322-346
Server-013 Medium Resolved Design-document adherence src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaServerOptions.cs:9-19, src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaApplicationHost.cs:296-346, src/Server/ZB.MOM.WW.OtOpcUa.Server/Program.cs:89
Admin-010 Low Resolved OtOpcUa conventions Components/App.razor:9,16
Admin-011 Low Resolved Concurrency & thread safety Hubs/FleetStatusPoller.cs:24-26,98-103
Admin-012 Low Resolved Design-document adherence Services/EquipmentCsvImporter.cs:18-19,33-37,229,232
Analyzers-002 Low Resolved Correctness & logic bugs src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/UnwrappedCapabilityCallAnalyzer.cs:46-50,130
Analyzers-003 Low Resolved Error handling & resilience src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/UnwrappedCapabilityCallAnalyzer.cs:80,114-116
Analyzers-004 Low Resolved Performance & resource management src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/UnwrappedCapabilityCallAnalyzer.cs:95-112
Analyzers-005 Low Resolved Design-document adherence src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/UnwrappedCapabilityCallAnalyzer.cs:33-43
Analyzers-007 Low Resolved Documentation & comments src/Tooling/ZB.MOM.WW.OtOpcUa.Analyzers/UnwrappedCapabilityCallAnalyzer.cs:21-26
Configuration-004 Low Resolved OtOpcUa conventions src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Enums/NodePermissions.cs:8, src/Core/ZB.MOM.WW.OtOpcUa.Configuration/OtOpcUaConfigDbContext.cs:417
Configuration-005 Low Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Configuration/LocalCache/LiteDbConfigCache.cs:50
Configuration-007 Low Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Apply/GenerationApplier.cs:44
Configuration-010 Low Resolved Security src/Core/ZB.MOM.WW.OtOpcUa.Configuration/LocalCache/ResilientConfigReader.cs:81
Configuration-011 Low Resolved Testing coverage src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Apply/GenerationApplier.cs:7, src/Core/ZB.MOM.WW.OtOpcUa.Configuration/Validation/DraftValidator.cs:60
Core-004 Low Resolved OtOpcUa conventions src/Core/ZB.MOM.WW.OtOpcUa.Core/Hosting/DriverHost.cs:55,72,87
Core-008 Low Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Core/OpcUa/GenericDriverNodeManager.cs:42-64
Core-009 Low Resolved Performance & resource management src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/CapabilityInvoker.cs:121-128
Core-010 Low Resolved Code organization & conventions src/Core/ZB.MOM.WW.OtOpcUa.Core/Resilience/DriverResilienceOptions.cs:45-52
Core-011 Low Resolved Testing coverage src/Core/ZB.MOM.WW.OtOpcUa.Core/Authorization/PermissionTrieBuilder.cs:58-75
Core-012 Low Resolved Documentation & comments src/Core/ZB.MOM.WW.OtOpcUa.Core/Stability/WedgeDetector.cs:26, src/Core/ZB.MOM.WW.OtOpcUa.Core/Observability/DriverHealthReport.cs:11-22
Core.Abstractions-004 Low Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/DriverTypeRegistry.cs:23-40
Core.Abstractions-005 Low Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/PollGroupEngine.cs:90,99
Core.Abstractions-006 Low Resolved Code organization & conventions src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/IHistoryProvider.cs:63,84-86, src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/Historian/IHistorianDataSource.cs:30,63
Core.Abstractions-007 Low Resolved Testing coverage tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/PollGroupEngineTests.cs
Core.Abstractions-008 Low Resolved Documentation & comments src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/DriverHealth.cs:9, src/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions/IHistoryProvider.cs:39-43,65-69
Core.AlarmHistorian-008 Low Resolved Performance & resource management src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/SqliteStoreAndForwardSink.cs:107-127,255-278
Core.AlarmHistorian-011 Low Resolved Documentation & comments src/Core/ZB.MOM.WW.OtOpcUa.Core.AlarmHistorian/IAlarmHistorianSink.cs:5-9,76, AlarmHistorianEvent.cs:20
Core.ScriptedAlarms-003 Low Resolved Documentation & comments ScriptedAlarmEngine.cs:343, docs/ScriptedAlarms.md:107
Core.ScriptedAlarms-006 Low Resolved Concurrency & thread safety ScriptedAlarmEngine.cs:232, ScriptedAlarmEngine.cs:369
Core.ScriptedAlarms-008 Low Resolved Performance & resource management Part9StateMachine.cs:261-268
Core.ScriptedAlarms-009 Low Won't Fix Performance & resource management ScriptedAlarmEngine.cs:309-315, ScriptedAlarmEngine.cs:271
Core.ScriptedAlarms-010 Low Resolved Design-document adherence ScriptedAlarmEngine.cs:325-336, AlarmPredicateContext.cs:33-40, MessageTemplate.cs:47
Core.ScriptedAlarms-011 Low Resolved Code organization & conventions Part9StateMachine.cs:275
Core.Scripting-005 Low Resolved Correctness & logic bugs DependencyExtractor.cs:97
Core.Scripting-006 Low Resolved Concurrency & thread safety CompiledScriptCache.cs:55
Core.Scripting-008 Low Won't Fix Performance & resource management CompiledScriptCache.cs:34, ScriptEvaluator.cs:34
Core.Scripting-009 Low Resolved Design-document adherence ForbiddenTypeAnalyzer.cs:45
Core.Scripting-011 Low Resolved Testing coverage tests/Core/ZB.MOM.WW.OtOpcUa.Core.Scripting.Tests/
Core.VirtualTags-004 Low Resolved Correctness & logic bugs src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagEngine.cs:349
Core.VirtualTags-006 Low Resolved Concurrency & thread safety src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagEngine.cs:177-182, :395-401
Core.VirtualTags-007 Low Resolved Error handling & resilience src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/TimerTriggerScheduler.cs:58
Core.VirtualTags-009 Low Resolved Performance & resource management src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/DependencyGraph.cs:64-65, :72-73
Core.VirtualTags-010 Low Resolved Documentation & comments src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/ITagUpstreamSource.cs:18, VirtualTagContext.cs:30, VirtualTagDefinition.cs:28
Core.VirtualTags-011 Low Resolved Code organization & conventions src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/VirtualTagEngine.cs:404-409
Core.VirtualTags-013 Low Resolved Documentation & comments src/Core/ZB.MOM.WW.OtOpcUa.Core.VirtualTags/DependencyGraph.cs:266-270
Driver.AbCip-007 Low Resolved OtOpcUa conventions AbCipDriver.cs (whole file), AbCipAlarmProjection.cs, LibplctagTagRuntime.cs
Driver.AbCip-011 Low Resolved Error handling & resilience AbCipDriver.cs:144-152, AbCipDriverOptions.cs:131-143
Driver.AbCip-012 Low Resolved Performance & resource management LibplctagTemplateReader.cs:15-35, AbCipDriver.cs:88-92
Driver.AbCip-013 Low Resolved Design-document adherence AbCipDriverOptions.cs:70-73, PlcFamilies/AbCipPlcFamilyProfile.cs:13-19, LibplctagTagRuntime.cs:16-27
Driver.AbCip-015 Low Resolved Documentation & comments AbCipDriver.cs:9-11, PlcTagHandle.cs:23-27,53-58, AbCipTemplateCache.cs:12-15, IAbCipTagEnumerator.cs:6-11, AbCipDriverOptions.cs:21
Driver.AbLegacy-005 Low Resolved OtOpcUa conventions AbLegacyDriver.cs (whole file)
Driver.AbLegacy-011 Low Resolved Performance & resource management AbLegacyDriver.cs:440
Driver.AbLegacy-013 Low Resolved Code organization & conventions AbLegacyDriver.cs:340-345, AbLegacyDriver.cs:238-264
Driver.FOCAS-007 Low Resolved Error handling & resilience FocasDriver.cs:140-148, FocasDriver.cs:478-484, FocasDriver.cs:529-533, FocasAlarmProjection.cs:61-63
Driver.FOCAS-008 Low Resolved Performance & resource management FocasDriver.cs:201, FocasDriver.cs:253
Driver.FOCAS-009 Low Resolved Design-document adherence FocasDriverOptions.cs:110-115, FocasDriver.cs:468-486, FocasDriverFactoryExtensions.cs:75-80
Driver.FOCAS-010 Low Resolved Code organization & conventions IFocasClient.cs:210-227 (FocasOpMode), FocasConstants.cs:42-78 (FocasOperationMode)
Driver.FOCAS-011 Low Resolved Code organization & conventions IFocasClient.cs:275-287 (FocasAlarmType), FocasAlarmProjection.cs:149-175
Driver.Galaxy-005 Low Resolved OtOpcUa conventions Runtime/EventPump.cs:81-88
Driver.Galaxy-010 Low Resolved Security GalaxyDriver.cs:311-341
Driver.Galaxy-012 Low Resolved Performance & resource management Runtime/SubscriptionRegistry.cs:65-67, GalaxyDriver.cs:538, GalaxyDriver.cs:675
Driver.Galaxy-013 Low Resolved Design-document adherence GalaxyDriver.cs:14-27, GalaxyDriver.cs:374-382, Config/GalaxyDriverOptions.cs:84-86
Driver.Historian.Wonderware-004 Low Resolved Correctness and logic bugs Backend/SdkAlarmHistorianWriteBackend.cs:198-201
Driver.Historian.Wonderware-005 Low Resolved Concurrency and thread safety Backend/HistorianDataSource.cs:124, :126-127
Driver.Historian.Wonderware-007 Low Resolved Error handling and resilience Ipc/PipeServer.cs:70-75
Driver.Historian.Wonderware-008 Low Resolved Error handling and resilience Backend/HistorianDataSource.cs:301-307, :374-380
Driver.Historian.Wonderware-010 Low Resolved Performance and resource management Backend/HistorianConfiguration.cs:32-36, Backend/HistorianDataSource.cs (all read methods)
Driver.Historian.Wonderware-011 Low Resolved Design-document adherence Backend/HistorianDataSource.cs:9-12, Backend/IHistorianDataSource.cs:9-11, Backend/HistorianSample.cs:7-9, Backend/HistorianConfiguration.cs:7-9
Driver.Historian.Wonderware-012 Low Resolved Testing coverage Backend/HistorianDataSource.cs, tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Tests/
Driver.Modbus-003 Low Resolved Concurrency & thread safety ModbusDriver.cs:59,188,241,259,266,726,745,759
Driver.Modbus-007 Low Resolved Design-document adherence ModbusDriver.cs:1392, ModbusDriverOptions.cs:74-80
Driver.Modbus-008 Low Resolved Documentation & comments ModbusDriver.cs:411-417,700-703,737-744
Driver.Modbus-009 Low Resolved Correctness & logic bugs ModbusDriver.cs:1160-1167, ModbusTcpTransport.cs:94-95
Driver.Modbus-010 Low Resolved Error handling & resilience ModbusDriver.cs:864-868, ModbusDriverOptions.cs:116-125
Driver.Modbus-011 Low Resolved Code organization & conventions ModbusDriver.cs:23-43,89-97,408-432
Driver.Modbus-012 Low Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.Tests/
Driver.Modbus.Addressing-006 Low Resolved Error handling & resilience ModbusAddressParser.cs:297-301
Driver.Modbus.Addressing-007 Low Resolved Design-document adherence ModbusDataType.cs:91-95, docs/v2/dl205.md section Strings
Driver.Modbus.Addressing-009 Low Resolved Documentation & comments ModbusModiconAddress.cs:55-64, ModbusModiconAddress.cs:104-110
Driver.OpcUaClient-011 Low Resolved Documentation & comments OpcUaClientDriver.cs:1007-1015
Driver.OpcUaClient-014 Low Resolved Performance & resource management OpcUaClientDriver.cs:1138, :1314
Driver.S7-003 Low Resolved Correctness & logic bugs S7Driver.cs:172, S7Driver.cs:255
Driver.S7-005 Low Resolved OtOpcUa conventions S7Driver.cs:33, S7Driver.cs:433
Driver.S7-009 Low Resolved Error handling & resilience S7Driver.cs:392
Driver.S7-010 Low Resolved Performance & resource management S7Driver.cs:504
Driver.S7-013 Low Resolved Code organization & conventions S7DriverOptions.cs:90, S7Driver.cs:300
Driver.TwinCAT-004 Low Resolved Correctness & logic bugs TwinCATDataType.cs:24-27
Driver.TwinCAT-006 Low Resolved OtOpcUa conventions TwinCATDriver.cs:406-411
Driver.TwinCAT-014 Low Resolved Design-document adherence TwinCATDriverOptions.cs:41-43, TwinCATDriverOptions.cs:57-62, AdsTwinCATClient.cs:145
Driver.TwinCAT-015 Low Resolved Code organization & conventions TwinCATDriver.cs:431-432
Driver.TwinCAT-016 Low Resolved Testing coverage tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.Tests/
Server-004 Low Resolved OtOpcUa conventions src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OtOpcUaServer.cs:187-200
Server-006 Low Resolved Concurrency & thread safety src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/DriverNodeManager.cs:478-482, 1342-1348
Server-008 Low Resolved Error handling & resilience src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/DriverNodeManager.cs:736
Server-012 Low Resolved Performance & resource management src/Server/ZB.MOM.WW.OtOpcUa.Server/Hosting/PeerHttpProbeLoop.cs:78-79
Server-014 Low Resolved Code organization & conventions src/Server/ZB.MOM.WW.OtOpcUa.Server/SealedBootstrap.cs
Server-015 Low Resolved Documentation & comments src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OtOpcUaServer.cs:16-21, src/Server/ZB.MOM.WW.OtOpcUa.Server/OpcUa/OpcUaServerOptions.cs:21-26