Skip to content

[dotnet] run dotnet-format adopting all suggestions#17011

Closed
titusfortner wants to merge 13 commits intotrunkfrom
dotnet_format_severity
Closed

[dotnet] run dotnet-format adopting all suggestions#17011
titusfortner wants to merge 13 commits intotrunkfrom
dotnet_format_severity

Conversation

@titusfortner
Copy link
Member

@titusfortner titusfortner commented Jan 26, 2026

Update: In draft until we figure out the right approach. See comments below.

I did not understand what I was doing in #16999

This turns on formatting for suggestion/info level, and this is what it spits out.

I have no idea if we actually want this, but I'd really like to have some kind of enforceable style for dotnet. If this is not the one you want, I think we can tweak .editor.config values to get what we want? I think?

Run this from trunk to see what the rules are it is flagging on:

bazel run //dotnet:format -- style --severity info --verify-no-changes

@nvborisenko & @RenderMichael which of these do we want to enforce vs ignore?

dotnet/src/support/Events/EventFiringWebDriver.cs(632,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(668,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(644,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(728,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(656,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(680,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(608,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(716,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(692,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(704,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(620,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(740,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(752,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(776,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(764,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(788,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(800,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(825,30): info IDE0305: Collection initialization can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(356,42): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(172,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(459,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(382,42): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(387,56): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(527,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(559,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(812,43): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1836,48): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1516,50): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1577,45): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1536,50): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1860,48): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1865,60): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1681,48): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1704,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1728,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1733,60): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(870,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(902,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(940,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1270,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1810,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1019,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1334,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(41,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebDriverScriptEventArgs.cs(37,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(30,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(31,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(32,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(33,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(34,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(35,148): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(36,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Close()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(37,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#CurrentWindowHandle' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(38,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#ExecuteAsyncScript(System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(39,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#ExecuteScript(System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(40,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#FindElement(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(41,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#FindElements(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(42,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#PageSource' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(43,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Quit()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(44,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Title' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(45,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Url' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(46,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#WindowHandles' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(47,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#Back()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(48,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#Forward()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(49,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#GoToUrl(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(50,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#GoToUrl(System.Uri)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(51,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#Refresh()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(52,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#ActiveElement()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(53,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Alert()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(54,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#DefaultContent()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(55,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Frame(OpenQA.Selenium.IWebElement)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(56,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Frame(System.Int32)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(57,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Frame(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(58,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Window(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(59,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Clear()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(60,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Click()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(61,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Displayed' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(62,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Enabled' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(63,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#FindElement(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(64,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#FindElements(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(65,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#GetAttribute(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(66,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#GetCssValue(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(67,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Location' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(68,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Selected' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(69,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#SendKeys(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(70,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Size' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(71,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Submit()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(72,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#TagName' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(73,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Text' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(74,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.UI.DefaultWait`1.#Until`1(System.Func`2<!0,!!0>)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(75,167): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.WebDriverNavigationEventArgs.#.ctor(OpenQA.Selenium.IWebDriver,System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(76,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(77,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.WebDriverNavigationEventArgs.#Url' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(78,159): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.UI.SelectElement.#SelectedOption' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(79,152): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.UI.SelectElement.#.ctor(OpenQA.Selenium.IWebElement)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(80,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(81,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(82,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(83,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(84,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(85,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(86,147): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#ParentDriver' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(87,189): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#ExecuteJavaScript`1(OpenQA.Selenium.IWebDriver,System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(88,186): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#TakeScreenshot(OpenQA.Selenium.IWebDriver)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(89,186): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#TakeScreenshot(OpenQA.Selenium.IWebDriver)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(90,189): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#ExecuteJavaScriptInternal(OpenQA.Selenium.IWebDriver,System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(103,45): info IDE0028: Collection initialization can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(103,49): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(207,37): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(289,37): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(325,37): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(379,43): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(389,40): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/PopupWindowFinder.cs(133,34): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/PopupWindowFinder.cs(87,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebElementValueEventArgs.cs(36,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebDriverNavigationEventArgs.cs(45,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebDriverExceptionEventArgs.cs(35,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebElementEventArgs.cs(35,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/GetShadowRootEventArgs.cs(35,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/FindElementEventArgs.cs(47,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]

@selenium-ci selenium-ci added C-dotnet .NET Bindings B-build Includes scripting, bazel and CI integrations B-support Issue or PR related to support classes labels Jan 26, 2026
@selenium-ci
Copy link
Member

Thank you, @titusfortner for this code suggestion.

The support packages contain example code that many users find helpful, but they do not necessarily represent
the best practices for using Selenium, and the Selenium team is not currently merging changes to them.

After reviewing the change, unless it is a critical fix or a feature that is needed for Selenium
to work, we will likely close the PR.

We actively encourage people to add the wrapper and helper code that makes sense for them to their own frameworks.
If you have any questions, please contact us

@qodo-code-review
Copy link
Contributor

User description

I did not understand what I was doing in #16999

This turns on formatting for suggestion/info level, and this is what it spits out.

I have no idea if we actually want this, but I'd really like to have some kind of enforceable style for dotnet. If this is not the one you want, I think we can tweak .editor.config values to get what we want? I think?

Run this from trunk to see what the rules are it is flagging on:

bazel-bin/dotnet/format.sh style --severity info --verify-no-changes

@nvborisenko & @RenderMichael which of these do we want to enforce vs ignore?

dotnet/src/support/Events/EventFiringWebDriver.cs(632,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(668,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(644,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(728,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(656,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(680,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(608,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(716,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(692,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(704,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(620,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(740,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(752,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(776,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(764,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(788,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(800,13): info IDE1005: Delegate invocation can be simplified. [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(825,30): info IDE0305: Collection initialization can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(356,42): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(172,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(459,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(382,42): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(387,56): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(527,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(559,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(812,43): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1836,48): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1516,50): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1577,45): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1536,50): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1860,48): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1865,60): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1681,48): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1704,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1728,46): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1733,60): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(870,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(902,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(940,54): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1270,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1810,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1019,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(1334,16): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/EventFiringWebDriver.cs(41,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebDriverScriptEventArgs.cs(37,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(30,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(31,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(32,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(33,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(34,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(35,148): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(36,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Close()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(37,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#CurrentWindowHandle' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(38,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#ExecuteAsyncScript(System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(39,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#ExecuteScript(System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(40,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#FindElement(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(41,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#FindElements(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(42,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#PageSource' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(43,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Quit()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(44,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Title' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(45,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#Url' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(46,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver.#WindowHandles' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(47,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#Back()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(48,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#Forward()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(49,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#GoToUrl(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(50,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#GoToUrl(System.Uri)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(51,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringNavigation.#Refresh()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(52,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#ActiveElement()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(53,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Alert()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(54,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#DefaultContent()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(55,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Frame(OpenQA.Selenium.IWebElement)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(56,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Frame(System.Int32)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(57,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Frame(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(58,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringTargetLocator.#Window(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(59,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Clear()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(60,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Click()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(61,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Displayed' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(62,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Enabled' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(63,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#FindElement(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(64,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#FindElements(OpenQA.Selenium.By)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(65,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#GetAttribute(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(66,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#GetCssValue(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(67,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Location' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(68,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Selected' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(69,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#SendKeys(System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(70,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Size' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(71,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Submit()' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(72,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#TagName' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(73,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#Text' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(74,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.UI.DefaultWait`1.#Until`1(System.Func`2<!0,!!0>)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(75,167): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.WebDriverNavigationEventArgs.#.ctor(OpenQA.Selenium.IWebDriver,System.String)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(76,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(77,149): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.WebDriverNavigationEventArgs.#Url' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(78,159): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.UI.SelectElement.#SelectedOption' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(79,152): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.UI.SelectElement.#.ctor(OpenQA.Selenium.IWebElement)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(80,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(81,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(82,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(83,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(84,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(85,12): info IDE0076: Invalid or missing target for 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(86,147): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Events.EventFiringWebDriver+EventFiringWebElement.#ParentDriver' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(87,189): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#ExecuteJavaScript`1(OpenQA.Selenium.IWebDriver,System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(88,186): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#TakeScreenshot(OpenQA.Selenium.IWebDriver)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(89,186): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#TakeScreenshot(OpenQA.Selenium.IWebDriver)' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/GlobalSuppressions.cs(90,189): info IDE0077: Avoid legacy format target 'OpenQA.Selenium.Support.Extensions.WebDriverExtensions.#ExecuteJavaScriptInternal(OpenQA.Selenium.IWebDriver,System.String,System.Object[])' in 'SuppressMessageAttribute' [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(103,45): info IDE0028: Collection initialization can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(103,49): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(207,37): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(289,37): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(325,37): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(379,43): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/SelectElement.cs(389,40): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/PopupWindowFinder.cs(133,34): info IDE0090: 'new' expression can be simplified [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/UI/PopupWindowFinder.cs(87,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebElementValueEventArgs.cs(36,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebDriverNavigationEventArgs.cs(45,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebDriverExceptionEventArgs.cs(35,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/WebElementEventArgs.cs(35,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/GetShadowRootEventArgs.cs(35,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]
dotnet/src/support/Events/FindElementEventArgs.cs(47,12): info IDE0290: Use primary constructor [dotnet/src/support/Selenium.WebDriver.Support.csproj]

PR Type

Enhancement


Description

Comprehensive modernization of .NET codebase to adopt modern C# syntax and patterns:

  • Primary Constructor Adoption: Converted 20+ classes to use primary constructor syntax, including WebElement, RemoteWebDriver, WebDriver support classes, and attribute classes

  • Collection Expression Modernization: Replaced traditional collection initialization (new List<T>(), new Dictionary<K,V>()) with modern collection expressions ([], new())

  • Target-typed new() Expressions: Simplified object instantiation across 50+ files by removing explicit type specifications

  • Event Handler Simplification: Replaced null-check-then-invoke patterns with null-coalescing operator (?.Invoke())

  • Pattern Matching: Updated type checks to use modern pattern syntax (is not instead of !(is))

  • Using Statement Modernization: Converted nested using statements to declaration-style syntax

  • Range Expressions: Replaced substring operations with range operators ([..])

  • Code Analysis Suppressions: Cleaned up and modernized GlobalSuppressions.cs files, removing obsolete rules and updating syntax

  • Discard Operator: Replaced unused variable assignments with _ operator

  • Null-coalescing Patterns: Simplified null-check logic with ??= and throw expressions


Diagram Walkthrough

flowchart LR
  A["Legacy C# Syntax<br/>new List&lt;T&gt;()<br/>new Type()<br/>!(x is T)<br/>using statements"] -->|Primary Constructors| B["Modern C# Syntax<br/>Primary constructors<br/>Collection expressions<br/>Pattern matching<br/>Using declarations"]
  A -->|Collection Init| C["Modern Collections<br/>[] syntax<br/>new() expressions<br/>Initializer syntax"]
  A -->|Event Handlers| D["Simplified Events<br/>?.Invoke()<br/>Local functions<br/>Null-coalescing"]
  B --> E["Cleaner, More<br/>Maintainable Code"]
  C --> E
  D --> E
Loading

File Walkthrough

Relevant files
Formatting
14 files
GlobalSuppressions.cs
Modernize code analysis suppression syntax and cleanup     

dotnet/src/support/GlobalSuppressions.cs

  • Updated code analysis suppression message targets to use modern C#
    documentation comment syntax (e.g., ~M:, ~P:, ~N:, ~T: prefixes)
  • Removed obsolete suppression entries for nested generic types and
    several naming/performance rules
  • Consolidated suppression list from 64 entries to 52 entries by
    removing redundant rules
+49/-61 
GlobalSuppressions.cs
Modernize code analysis suppression syntax and cleanup     

dotnet/src/webdriver/GlobalSuppressions.cs

  • Updated code analysis suppression message targets to use modern C#
    documentation comment syntax with ~ prefix notation
  • Removed obsolete suppression entries for design, globalization,
    naming, and performance rules
  • Consolidated suppression list from 74 entries to 45 entries by
    removing deprecated rules
+40/-69 
CookieImplementationTest.cs
Apply modern C# syntax and collection expressions               

dotnet/test/common/CookieImplementationTest.cs

  • Replaced explicit type instantiation with target-typed new()
    expressions for Random, Cookie, Regex, Uri, and StringBuilder objects
  • Replaced array initialization syntax new char[] { '.' } with
    collection expression ['.']
  • Simplified unused variable assignments by replacing with discard
    operator _
  • Converted lambda expressions to local function declarations for test
    assertions
+60/-66 
ProxyTest.cs
Apply modern C# syntax and object initializers                     

dotnet/test/common/ProxyTest.cs

  • Replaced explicit type instantiation with target-typed new()
    expressions for Proxy and Dictionary objects
  • Converted object initialization from separate statements to inline
    object initializer syntax
  • Replaced new Dictionary() with collection initializer
    syntax new() { ... }
  • Replaced empty dictionary creation new Dictionary()
    with collection expression []
+66/-45 
SelectElement.cs
Apply modern C# collection expressions and syntax               

dotnet/src/support/UI/SelectElement.cs

  • Replaced new List() with collection expression []
  • Replaced explicit type instantiation with target-typed new()
    expressions for StringBuilder objects
  • Simplified list initialization using modern C# syntax
+6/-6     
CommandInfoRepository.cs
Apply modern C# collection expression syntax                         

dotnet/src/webdriver/CommandInfoRepository.cs

  • Replaced new Dictionary() with collection
    expression [] for empty dictionary initialization
+1/-1     
ExecutingJavascriptTest.cs
Modernize C# syntax with pattern matching and collection expressions

dotnet/test/common/ExecutingJavascriptTest.cs

  • Replaced negated type checks !(driver is IJavaScriptExecutor) with
    modern pattern driver is not IJavaScriptExecutor
  • Converted collection initializations from multi-line .Add() calls to
    modern collection expressions (e.g., ["zero", "one", "two"])
  • Converted dictionary initializations from multi-line .Add() calls to
    modern initializer syntax with new()
  • Changed unused variable assignment object x = ExecuteScript(...) to
    discard _ = ExecuteScript(...)
+62/-61 
SelectBrowserTests.cs
Simplify constructor calls with target-typed new expressions

dotnet/test/support/UI/SelectBrowserTests.cs

  • Replaced all new SelectElement(element) with target-typed new(element)
    syntax
  • Applied consistently across 40+ test methods for cleaner, more concise
    code
+34/-34 
WebDriver.cs
Modernize collection initialization syntax throughout       

dotnet/src/webdriver/WebDriver.cs

  • Converted list and dictionary initializations to modern collection
    expressions and new() syntax
  • Replaced new List() with [] and new Dictionary() with
    new()
  • Updated dictionary initializations to use initializer syntax with
    bracket notation
  • Changed new Command(...) to target-typed new(...)
+63/-42 
SelectTests.cs
Simplify mock and collection initialization in unit tests

dotnet/test/support/UI/SelectTests.cs

  • Converted new Mock() to target-typed new() syntax across multiple test
    methods
  • Replaced multi-line list initialization with collection initializer
    syntax
  • Applied consistently to improve code conciseness in mock setup code
+93/-63 
ChromiumDriver.cs
Modernize collection and constructor syntax in ChromiumDriver

dotnet/src/webdriver/Chromium/ChromiumDriver.cs

  • Converted dictionary initializations to modern new() and initializer
    syntax
  • Replaced new DriverFinder(options) with target-typed new(options)
  • Changed new DevToolsSession(...) to target-typed new(...)
  • Updated list initialization from new List() to [] syntax
+43/-25 
DefaultWaitTest.cs
Simplify object initialization with target-typed new expressions

dotnet/test/support/UI/DefaultWaitTest.cs

  • Converted new DateTime(...) to target-typed new(...) syntax
  • Changed new object() to target-typed new()
  • Replaced multi-line property assignments with object initializer
    syntax
  • Applied consistently across multiple test setup methods
+36/-22 
EventFiringWebDriverTest.cs
Simplify constructor calls with target-typed new expressions

dotnet/test/support/Events/EventFiringWebDriverTest.cs

  • Replaced new EventFiringWebDriver(...) with target-typed new(...)
  • Changed new Mock() to target-typed new() syntax
  • Changed new NoSuchElementException(...) to target-typed new(...)
  • Applied consistently across test methods for cleaner code
+14/-14 
ChromiumOptions.cs
Modernize collection initialization and null-coalescing patterns

dotnet/src/webdriver/Chromium/ChromiumOptions.cs

  • Converted field initializations from new List() to [] syntax
  • Changed new Dictionary() to [] syntax
  • Replaced null-check initialization with null-coalescing assignment ??=
  • Updated dictionary initializations to use modern new() and initializer
    syntax
+23/-25 
Enhancement
39 files
EventFiringWebDriver.cs
Apply modern C# syntax and simplify event handler invocations

dotnet/src/support/Events/EventFiringWebDriver.cs

  • Converted constructor to primary constructor syntax for
    EventFiringWebDriver, EventFiringOptions, EventFiringTimeouts,
    EventFiringWebElement, and EventFiringShadowRoot classes
  • Simplified object instantiation using target-typed new() expressions
    throughout the file
  • Replaced null-check-then-invoke patterns with null-coalescing operator
    (?.Invoke()) for event handlers
  • Replaced new List(capacity) with new(capacity) and ToArray() with
    collection expression [.. list]
+74/-151
WebElement.cs
Adopt primary constructors and modernize collection initialization

dotnet/src/webdriver/WebElement.cs

  • Converted class to use primary constructor syntax, moving parameters
    to class declaration
  • Moved XML documentation comments to class-level remarks
  • Converted field initialization to use primary constructor parameters
  • Replaced traditional dictionary initialization with modern new() and
    initializer syntax throughout
  • Changed new MemoryStream() and new ZipArchive() to use target-typed
    new() expressions
+102/-68
DevToolsNetworkTest.cs
Convert event handlers to local functions and modernize syntax

dotnet/test/common/DevTools/DevToolsNetworkTest.cs

  • Converted lambda event handlers to local function declarations for
    better readability
  • Replaced new ManualResetEventSlim(false) with target-typed new(false)
  • Changed dictionary initialization to modern new() syntax
  • Applied static modifier to event handlers that don't capture local
    state
+51/-49 
ProxySettingTest.cs
Modernize C# syntax with using declarations and operators

dotnet/test/common/ProxySettingTest.cs

  • Converted using statements to declaration syntax (using without
    braces)
  • Replaced new StringBuilder() with target-typed new()
  • Changed new Proxy() and new ProxyOptions() to use initializer syntax
  • Simplified null-coalescing assignment with ??= operator
  • Updated array indexing from parts[parts.Length - 1] to range operator
    parts[^1]
+34/-33 
TrimmingAttributes.cs
Adopt primary constructors for attribute classes                 

dotnet/src/webdriver/Properties/TrimmingAttributes.cs

  • Converted multiple attribute classes to use primary constructor syntax
  • Moved constructor parameters to class declaration for
    RequiresDynamicCodeAttribute, RequiresUnreferencedCodeAttribute,
    UnconditionalSuppressMessageAttribute, and
    DynamicallyAccessedMembersAttribute
  • Moved XML documentation to class-level remarks
  • Simplified property initialization using primary constructor
    parameters
+34/-51 
HttpCommandExecutor.cs
Modernize HTTP request handling with target-typed new and using
declarations

dotnet/src/webdriver/Remote/HttpCommandExecutor.cs

  • Replaced null-check with throw expression using ?? operator
  • Converted using statements to declaration syntax (using without
    braces)
  • Changed new HttpRequestMessage(...) to target-typed new(...)
  • Replaced traditional object initialization with modern initializer
    syntax
  • Updated new CacheControlHeaderValue() and header value classes to use
    initializer syntax
+38/-48 
PointerInputDevice.cs
Primary constructor adoption and collection initialization
modernization

dotnet/src/webdriver/Interactions/PointerInputDevice.cs

  • Converted class to use primary constructor syntax with parameters
    pointerKind and deviceName
  • Moved constructor documentation to class-level remarks
  • Removed explicit constructor body and field initialization, using
    field initializers instead
  • Simplified dictionary initialization using target-typed new()
    expressions and collection initializer syntax
  • Converted nested private classes to primary constructor syntax
+33/-53 
Keys.cs
Dictionary initialization pattern modernization with null-coalescing

dotnet/src/webdriver/Keys.cs

  • Refactored dictionary initialization from null-check pattern to
    null-coalescing assignment (??=)
  • Converted from repeated .Add() calls to collection initializer syntax
    with tuple pairs
  • Improved code conciseness and readability
+60/-61 
NullableAttributes.cs
Primary constructor adoption for nullable attribute classes

dotnet/src/webdriver/Properties/NullableAttributes.cs

  • Converted multiple attribute classes to primary constructor syntax
  • Moved constructor documentation to class-level remarks
  • Changed property initialization from expression-bodied members to
    field initializers
  • Updated array initialization from new[] { } to collection expression [
    ] syntax
+27/-31 
JavaScriptEngine.cs
Primary constructor adoption and collection expression modernization

dotnet/src/webdriver/JavaScriptEngine.cs

  • Converted class to primary constructor syntax with driver parameter
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializers and collection
    expressions [ ]
  • Simplified object instantiation using target-typed new() expressions
+17/-26 
VirtualAuthenticatorTest.cs
Collection expression syntax modernization in test code   

dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs

  • Replaced new List() with collection expression [ ] syntax
  • Simplified object instantiation using target-typed new() expressions
  • Converted array initialization from new[] { } to collection expression
    syntax
+11/-19 
DriverService.cs
Using statement modernization and constructor simplification

dotnet/src/webdriver/DriverService.cs

  • Converted nested using statements to declaration-style using
    statements
  • Simplified object instantiation using target-typed new() expressions
  • Improved code readability by reducing nesting levels
+30/-36 
RemoteWebDriver.cs
Primary constructor adoption with modern C# patterns         

dotnet/src/webdriver/Remote/RemoteWebDriver.cs

  • Converted class to primary constructor syntax with commandExecutor and
    capabilities parameters
  • Moved constructor documentation to class-level remarks
  • Simplified null-coalescing patterns with throw expressions
  • Converted string substring operations to range expressions ([..])
  • Simplified object instantiation and collection initialization
+16/-35 
NetworkManager.cs
Primary constructor adoption and event invocation modernization

dotnet/src/webdriver/NetworkManager.cs

  • Converted class to primary constructor syntax with driver parameter
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializers and collection
    expressions [ ]
  • Simplified event invocation using null-conditional operator
    (?.Invoke())
+18/-29 
FirefoxExtension.cs
Primary constructor adoption for Firefox extension class 

dotnet/src/webdriver/Firefox/FirefoxExtension.cs

  • Converted class to primary constructor syntax with fileName parameter
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializer with
    null-coalescing throw
  • Simplified object instantiation using target-typed new() expressions
+15/-25 
WebSocketConnection.cs
Primary constructor adoption and event invocation modernization

dotnet/src/webdriver/DevTools/WebSocketConnection.cs

  • Converted class to primary constructor syntax with startupTimeout and
    shutdownTimeout parameters
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializers
  • Simplified object instantiation using target-typed new() expressions
  • Simplified event invocation using null-conditional operator
    (?.Invoke())
+16/-28 
KeyInputDevice.cs
Primary constructor adoption for keyboard input device     

dotnet/src/webdriver/Interactions/KeyInputDevice.cs

  • Converted class to primary constructor syntax with deviceName
    parameter
  • Converted nested private classes to primary constructor syntax
  • Simplified dictionary initialization using target-typed new() and
    collection initializer syntax
+21/-41 
TargetLocator.cs
Primary constructor adoption for target locator class       

dotnet/src/webdriver/TargetLocator.cs

  • Converted class to primary constructor syntax with driver parameter
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializer with
    null-coalescing throw
  • Simplified dictionary initialization using collection expression
    syntax
+28/-23 
PrintOptions.cs
Collection initialization and constructor simplification 

dotnet/src/webdriver/PrintOptions.cs

  • Simplified object instantiation using target-typed new() expressions
  • Converted collection initialization from new HashSet() to collection
    expression [ ]
  • Simplified dictionary initialization using collection initializer
    syntax
+20/-16 
PopupWindowFinder.cs
Primary constructor adoption for popup window finder         

dotnet/src/support/UI/PopupWindowFinder.cs

  • Converted class to primary constructor syntax with three parameters
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializers with
    null-coalescing throw
  • Simplified object instantiation using target-typed new() expressions
+17/-24 
WindowTest.cs
Constructor simplification and discard operator usage       

dotnet/test/common/WindowTest.cs

  • Simplified object instantiation using target-typed new() expressions
  • Replaced unused variable assignments with discard operator _
+9/-19   
HttpCommandInfo.cs
Primary constructor adoption with range expression modernization

dotnet/src/webdriver/HttpCommandInfo.cs

  • Converted class to primary constructor syntax with method and
    resourcePath parameters
  • Moved constructor documentation to class-level remarks
  • Changed property initialization to use property initializers with
    null-coalescing throw
  • Simplified string substring operations using range expressions ([..])
+26/-15 
BasicMouseInterfaceTest.cs
Constructor simplification in mouse interaction tests       

dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs

  • Simplified object instantiation using target-typed new() expressions
    throughout test methods
+9/-14   
DevToolsCommandData.cs
Primary constructor adoption for DevTools command data     

dotnet/src/webdriver/DevTools/DevToolsCommandData.cs

  • Converted class to primary constructor syntax with four parameters
  • Moved constructor documentation to class-level remarks
  • Changed property initialization to use property initializers
+14/-23 
ShadowRoot.cs
Primary constructor adoption for shadow root class             

dotnet/src/webdriver/ShadowRoot.cs

  • Converted class to primary constructor syntax with parentDriver and id
    parameters
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializers with
    null-coalescing throw
  • Simplified dictionary initialization using collection initializer
    syntax
+21/-23 
FirefoxProfile.cs
Collection expression and using statement modernization   

dotnet/src/webdriver/Firefox/FirefoxProfile.cs

  • Converted collection initialization from new Dictionary() to
    collection expression [ ]
  • Simplified object instantiation using target-typed new() expressions
  • Converted nested using statements to declaration-style using
    statements
  • Simplified string substring operations using range expressions ([..])
+12/-14 
DevToolsSession.cs
Collection initialization and event invocation modernization

dotnet/src/webdriver/DevTools/DevToolsSession.cs

  • Converted collection initialization from new ConcurrentDictionary
    U>() to target-typed new()
  • Converted BlockingCollection initialization to collection expression [
    ]
  • Simplified object instantiation using target-typed new() expressions
  • Simplified event invocation using null-conditional operator
    (?.Invoke())
  • Simplified array initialization using collection expression syntax
+7/-16   
TargetInfo.cs
Primary constructor adoption for target information class

dotnet/src/webdriver/DevTools/TargetInfo.cs

  • Converted class to primary constructor syntax with seven parameters
  • Moved constructor documentation to class-level remarks
  • Changed property initialization to use property initializers
+18/-28 
BasicKeyboardInterfaceTest.cs
Constructor simplification and discard operator usage       

dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs

  • Simplified object instantiation using target-typed new() expressions
  • Replaced unused variable assignments with discard operator _
+7/-20   
ReturnedCookie.cs
Primary constructor adoption for returned cookie class     

dotnet/src/webdriver/Internal/ReturnedCookie.cs

  • Converted class to primary constructor syntax with eight parameters
  • Moved constructor documentation to class-level remarks
+16/-22 
FirefoxDriverTest.cs
Constructor simplification and null-conditional operator usage

dotnet/test/firefox/FirefoxDriverTest.cs

  • Simplified object instantiation using target-typed new() expressions
    with collection initializers
  • Simplified object instantiation using target-typed new() expressions
  • Replaced null-check with null-conditional operator (?.Quit())
+26/-19 
SendingRemoteHttpRequestEventArgs.cs
Primary constructor adoption with null-coalescing throw patterns

dotnet/src/webdriver/Remote/SendingRemoteHttpRequestEventArgs.cs

  • Converted class to primary constructor syntax with three parameters
  • Moved constructor documentation to class-level remarks
  • Changed field initialization to use field initializer with collection
    expression [ ]
  • Changed property initialization to use property initializers with
    null-coalescing throw
  • Simplified null-check logic in AddHeader method using null-coalescing
    throw
+13/-25 
V142Network.cs
Field modifier addition and collection expression modernization

dotnet/src/webdriver/DevTools/v142/V142Network.cs

  • Added reado...

@qodo-code-review
Copy link
Contributor

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix incorrect field self-initialization

Fix a bug in classes using primary constructors where fields are incorrectly
self-initialized due to name shadowing. Remove the explicit field declarations
and use the primary constructor parameters directly.

dotnet/src/webdriver/Interactions/PointerInputDevice.cs [114-451]

 public class PointerInputDevice(PointerKind pointerKind, string deviceName) : InputDevice(deviceName)
 {
-    private readonly PointerKind pointerKind = pointerKind;
+...
+    public override Dictionary<string, object> ToDictionary()
+    {
+        Dictionary<string, object> toReturn = new()
+        {
+            ["type"] = "pointer",
+            ["id"] = this.DeviceName
+        };
+
+        Dictionary<string, object> parameters = new()
+        {
+            ["pointerType"] = pointerKind.ToString().ToLowerInvariant()
+        };
+        toReturn["parameters"] = parameters;
+
+        return toReturn;
+    }
 ...
 private class PointerDownInteraction(InputDevice sourceDevice, MouseButton button, PointerEventProperties properties) : Interaction(sourceDevice)
 {
-...
-    private readonly MouseButton button = button;
-    private readonly PointerEventProperties eventProperties = properties;
+    public override Dictionary<string, object> ToDictionary()
+    {
+        Dictionary<string, object> toReturn;
+        if (properties is null)
+        {
+            toReturn = [];
+        }
+        else
+        {
+            toReturn = properties.ToDictionary();
+        }
+
+        toReturn["type"] = "pointerDown";
+        toReturn["button"] = (int)button;
+        return toReturn;
+    }
 ...
 }
 ...
 private class PointerUpInteraction(InputDevice sourceDevice, MouseButton button, PointerEventProperties properties) : Interaction(sourceDevice)
 {
-...
-    private readonly MouseButton button = button;
-    private readonly PointerEventProperties eventProperties = properties;
+    public override Dictionary<string, object> ToDictionary()
+    {
+        Dictionary<string, object> toReturn;
+        if (properties is null)
+        {
+            toReturn = [];
+        }
+        else
+        {
+            toReturn = properties.ToDictionary();
+        }
+
+        toReturn["type"] = "pointerUp";
+        toReturn["button"] = (int)button;
+        return toReturn;
+    }
 ...
 }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 10

__

Why: This suggestion correctly identifies a critical bug introduced by the refactoring where primary constructor parameters are shadowed, causing fields to be initialized to their default values instead of the provided arguments.

High
Fix potential test memory leaks

Revert the event handlers in VerifyWebSocketOperations to lambda expressions and
ensure they are unsubscribed in a finally block to prevent potential memory
leaks and improve test robustness.

dotnet/test/common/DevTools/DevToolsNetworkTest.cs [367-395]

--        EventHandler<CurrentCdpVersion.Network.WebSocketCreatedEventArgs> webSocketCreatedHandler = (sender, e) =>
-+        static void webSocketCreatedHandler(object sender, CurrentCdpVersion.Network.WebSocketCreatedEventArgs e)
+-        static void webSocketCreatedHandler(object sender, CurrentCdpVersion.Network.WebSocketCreatedEventArgs e)
++        EventHandler<CurrentCdpVersion.Network.WebSocketCreatedEventArgs> webSocketCreatedHandler = (sender, e) =>
          {
              Assert.That(e, Is.Not.Null);
--        };
-+        }
+-        }
++        };
          domains.Network.WebSocketCreated += webSocketCreatedHandler;
 
--        EventHandler<CurrentCdpVersion.Network.WebSocketFrameReceivedEventArgs> webSocketFrameReceivedHandler = (sender, e) =>
-+        static void webSocketFrameReceivedHandler(object sender, CurrentCdpVersion.Network.WebSocketFrameReceivedEventArgs e)
+-        static void webSocketFrameReceivedHandler(object sender, CurrentCdpVersion.Network.WebSocketFrameReceivedEventArgs e)
++        EventHandler<CurrentCdpVersion.Network.WebSocketFrameReceivedEventArgs> webSocketFrameReceivedHandler = (sender, e) =>
          {
              Assert.That(e, Is.Not.Null);
--        };
-+        }
+-        }
++        };
          domains.Network.WebSocketFrameReceived += webSocketFrameReceivedHandler;
 
--        EventHandler<CurrentCdpVersion.Network.WebSocketFrameErrorEventArgs> webSocketFrameErrorHandler = (sender, e) =>
-+        static void webSocketFrameErrorHandler(object sender, CurrentCdpVersion.Network.WebSocketFrameErrorEventArgs e)
+-        static void webSocketFrameErrorHandler(object sender, CurrentCdpVersion.Network.WebSocketFrameErrorEventArgs e)
++        EventHandler<CurrentCdpVersion.Network.WebSocketFrameErrorEventArgs> webSocketFrameErrorHandler = (sender, e) =>
          {
              Assert.That(e, Is.Not.Null);
--        };
-+        }
+-        }
++        };
          domains.Network.WebSocketFrameError += webSocketFrameErrorHandler;
 
--        EventHandler<CurrentCdpVersion.Network.WebSocketFrameSentEventArgs> webSocketFrameSentHandler = (sender, e) =>
-+        static void webSocketFrameSentHandler(object sender, CurrentCdpVersion.Network.WebSocketFrameSentEventArgs e)
+-        static void webSocketFrameSentHandler(object sender, CurrentCdpVersion.Network.WebSocketFrameSentEventArgs e)
++        EventHandler<CurrentCdpVersion.Network.WebSocketFrameSentEventArgs> webSocketFrameSentHandler = (sender, e) =>
          {
              Assert.That(e, Is.Not.Null);
--        };
-+        }
+-        }
++        };
          domains.Network.WebSocketFrameSent += webSocketFrameSentHandler;
 
--        EventHandler<CurrentCdpVersion.Network.WebSocketClosedEventArgs> webSocketClosedHandler = (sender, e) =>
-+        static void webSocketClosedHandler(object sender, CurrentCdpVersion.Network.WebSocketClosedEventArgs e)
+-        static void webSocketClosedHandler(object sender, CurrentCdpVersion.Network.WebSocketClosedEventArgs e)
++        EventHandler<CurrentCdpVersion.Network.WebSocketClosedEventArgs> webSocketClosedHandler = (sender, e) =>
          {
              Assert.That(e, Is.Not.Null);
--        };
-+        }
+-        }
++        };
          domains.Network.WebSocketClosed += webSocketClosedHandler;
 
+         driver.Url = simpleTestPage;
+         // Other test logic...
+     }
+     finally
+     {
+         domains.Network.WebSocketCreated -= webSocketCreatedHandler;
+         domains.Network.WebSocketFrameReceived -= webSocketFrameReceivedHandler;
+         domains.Network.WebSocketFrameError -= webSocketFrameErrorHandler;
+         domains.Network.WebSocketFrameSent -= webSocketFrameSentHandler;
+         domains.Network.WebSocketClosed -= webSocketClosedHandler;
+     }
+

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies a potential memory leak due to event handlers not being unsubscribed, which is crucial for test isolation and reliability, and provides a robust fix using a finally block.

Medium
Learned
best practice
Validate external string inputs

Guard against missing/invalid version formats (e.g., null/empty or no '.'), and
trim before slicing to avoid IndexOf returning -1 and throwing.

dotnet/src/webdriver/Remote/RemoteWebDriver.cs [459-464]

-object? versionObject = this.Capabilities.GetCapability(RemoteDevToolsVersionCapabilityName) ?? throw new WebDriverException("Cannot find " + RemoteDevToolsVersionCapabilityName + " capability for driver");
-string version = versionObject.ToString()!;
+object? versionObject = this.Capabilities.GetCapability(RemoteDevToolsVersionCapabilityName)
+    ?? throw new WebDriverException("Cannot find " + RemoteDevToolsVersionCapabilityName + " capability for driver");
+string version = (versionObject.ToString() ?? string.Empty).Trim();
 
-if (!int.TryParse(version[..version.IndexOf(".")], out int devToolsProtocolVersion))
+int dotIndex = version.IndexOf('.', StringComparison.Ordinal);
+if (dotIndex <= 0 || !int.TryParse(version[..dotIndex], out int devToolsProtocolVersion))
 {
     throw new WebDriverException("Cannot parse protocol version from reported version string: " + version);
 }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Add explicit validation/guards at integration boundaries (capability/env inputs) before parsing/using values.

Low
General
Use init-only setters for immutability

In the HttpResponseInfo class, replace the set accessors with init to make the
properties immutable, which is better practice for data transfer objects.

dotnet/src/webdriver/Remote/HttpCommandExecutor.cs [400-405]

 private class HttpResponseInfo(string body, string? contentType, HttpStatusCode statusCode)
 {
-    public HttpStatusCode StatusCode { get; set; } = statusCode;
-    public string Body { get; set; } = body ?? throw new ArgumentNullException(nameof(body));
-    public string? ContentType { get; set; } = contentType;
+    public HttpStatusCode StatusCode { get; init; } = statusCode;
+    public string Body { get; init; } = body ?? throw new ArgumentNullException(nameof(body));
+    public string? ContentType { get; init; } = contentType;
 }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 5

__

Why: The suggestion correctly proposes using init setters to make the HttpResponseInfo class immutable, which is a good design practice for data transfer objects, improving code quality and robustness.

Low
Simplify exception test with lambda

Simplify the exception assertion in ShouldThrowWhenGetInvalidCookieByName by
using a lambda expression directly within Assert.That instead of a local
function and cast.

dotnet/test/common/CookieImplementationTest.cs [624-629]

 [TestCase("   ")]
 public void ShouldThrowWhenGetInvalidCookieByName(string cookieName)
 {
-    Cookie getCookieAction() => driver.Manage().Cookies.GetCookieNamed(cookieName);
-
-    Assert.That((Func<Cookie>)getCookieAction, Throws.ArgumentException);
+    Assert.That(() => driver.Manage().Cookies.GetCookieNamed(cookieName), Throws.ArgumentException);
 }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 4

__

Why: The suggestion improves code readability and conciseness by replacing a local function and explicit cast with a more idiomatic lambda expression for the NUnit assertion.

Low
Use simpler string split overload

Replace hostName.Split(['.']) with the more efficient and readable
hostName.Split('.') overload for splitting by a single character.

dotnet/test/common/CookieImplementationTest.cs [258]

-string[] hostNameParts = hostName.Split(['.']);
+string[] hostNameParts = hostName.Split('.');

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 3

__

Why: The suggestion correctly points out a more efficient and readable overload for Split, improving performance and clarity, although the existing code is functionally correct.

Low
  • More

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR applies dotnet-format suggestions at info/suggestion level across the .NET bindings and tests, modernizing syntax (primary constructors, target-typed new, collection expressions, pattern matching, null-coalescing, etc.) and wiring the .NET Rake format task to also run style rules at --severity info. Most changes are mechanical style updates intended to match .editorconfig preferences, with a few small cleanups (event invocation null-propagation, unused members removal, simplified using/StringBuilder patterns).

Changes:

  • Extend the dotnet Rake :format task to run both whitespace-only and style formatting (dotnet format --severity info), so style suggestions become enforceable.
  • Apply analyzer-driven style changes throughout dotnet/src/webdriver (primary constructors, target-typed new, object/collection initializers, null-conditional/event invocation, use of spans/slices, expression-bodied and pattern-based updates).
  • Apply the same style/simplification pass across a large set of .NET tests (dotnet/test/...), including using discards for unused values, collection expressions, target-typed new, simplified arithmetic, and more idiomatic C# constructs.

Reviewed changes

Copilot reviewed 239 out of 239 changed files in this pull request and generated 31 comments.

Show a summary per file
File Description
rake_tasks/dotnet.rake Extends :format to run bazel run //dotnet:format -- whitespace and then -- style --severity info, enabling style-level enforcement for .NET code.
dotnet/test/support/UI/WebDriverWaitTest.cs Refactors a local Func to a static local method and converts TickingClock to a primary-constructor-based implementation with expression/auto-property simplifications.
dotnet/test/support/UI/SlowLoadableComponentTest.cs Uses primary constructors and target-typed new for nested test helper types, and simplifies assignments and constructor wiring.
dotnet/test/support/UI/PopupWindowFinderTest.cs Uses target-typed new for PopupWindowFinder instances.
dotnet/test/support/UI/LoadableComponentTests.cs Converts nested LoadsOk helper to use a primary constructor and target-typed new.
dotnet/test/support/UI/HandCrankClock.cs Uses target-typed new and compound assignment for the fake clock.
dotnet/test/support/Extensions/ExecuteJavaScriptTest.cs Converts a subclass of ReadOnlyCollection<object> to a primary constructor.
dotnet/test/remote/RemoteWebDriverSpecificTests.cs Uses an object initializer with target-typed new to set Url on RemoteWebDriver.
dotnet/test/remote/RemoteSessionCreationTests.cs Uses object initializers/target-typed new for remote driver instances and dictionary creation.
dotnet/test/ie/IeSpecificTests.cs Replaces new List<T>() { ... } with C# collection expressions and target-typed new for Actions.
dotnet/test/firefox/FirefoxProfileTests.cs Uses the [] collection expression to initialize a list.
dotnet/test/firefox/FirefoxDriverServiceTest.cs Uses target-typed new and object initializer for FirefoxOptions.
dotnet/test/common/WindowSwitchingTest.cs Uses [] collection expression for tracking seen window handles.
dotnet/test/common/VisibilityTest.cs Converts multiple string[] initializations to collection expressions.
dotnet/test/common/UnexpectedAlertBehaviorTest.cs Uses target-typed new for UnhandledPromptBehaviorOptions.
dotnet/test/common/TypingTest.cs Replaces unused locals with discards to satisfy analyzers.
dotnet/test/common/TextPagesTest.cs Uses target-typed new for Cookie construction.
dotnet/test/common/TestUtilities.cs Uses range slicing ([..]) and inline out variable declaration in double.TryParse.
dotnet/test/common/TakesScreenshotTest.cs Uses collection expressions for HashSet<string> creation.
dotnet/test/common/PrintTest.cs Uses object initializer for PrintOptions.
dotnet/test/common/PositionAndSizeTest.cs Replaces unused coordinate local with a discard.
dotnet/test/common/PageLoadingTest.cs Collapses null-check and Quit into null-conditional, uses object initializer for PageLoadStrategyOptions.
dotnet/test/common/ObjectStateAssumptionsTest.cs Uses discards for values retrieved solely for side-effects/assumption checks.
dotnet/test/common/NetworkInterceptionTests.cs Uses target-typed new with object/initializer syntax for network handler types.
dotnet/test/common/NavigationTest.cs Uses target-typed new for Uri instances.
dotnet/test/common/MiscTest.cs Uses collection expression for a list of string values.
dotnet/test/common/JavascriptEnabledBrowserTest.cs Simplifies EqualConstraint creation and modernizes is not patterns.
dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs Refactors the exception-asserting lambda into a named local function and passes it to Assert.That with a Throws.ArgumentException constraint.
dotnet/test/common/Interactions/DragAndDropTest.cs Uses target-typed new for Actions, Point, and Size values.
dotnet/test/common/Interactions/CombinedInputActionsTest.cs Uses target-typed new for Actions instances.
dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs Uses target-typed new and object initializer for WheelInputDevice.ScrollOrigin.
dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs Uses target-typed new for Actions, replaces unused locals with discards, and removes an unused helper.
dotnet/test/common/Interactions/ActionBuilderTest.cs Uses target-typed new for ActionBuilder.
dotnet/test/common/ImplicitWaitTest.cs Uses target-typed new for the list of window handles.
dotnet/test/common/GetLogsTest.cs Uses collection expression for the log dictionary and target-typed new for ChromeOptions.
dotnet/test/common/FrameSwitchingTest.cs Uses range slicing ([..^1]) instead of Substring.
dotnet/test/common/FormHandlingTests.cs Uses target-typed new for FileInfo objects and drops an unused emptyTextArea local.
dotnet/test/common/Environment/UrlBuilder.cs Uses target-typed new for Uri construction.
dotnet/test/common/Environment/InlinePage.cs Uses collection expressions for internal lists and target-typed new for StringBuilder.
dotnet/test/common/Environment/EnvironmentManager.cs Uses target-typed new for DirectoryInfo and null-conditional invocation for DriverStarting.
dotnet/test/common/Environment/DriverFactory.cs Uses collection expressions for dictionaries and lists, and simplifies constructor reflection and options/service creation.
dotnet/test/common/ElementSelectingTest.cs Removes unused constants/properties to satisfy analyzers.
dotnet/test/common/ElementAttributeTest.cs Drops an unused pElement local and uses collection expression for acceptable onclick values.
dotnet/test/common/DownloadsTest.cs Uses target-typed new for WebDriverWait and DownloadableFilesOptions (with object initializer).
dotnet/test/common/DevTools/DevToolsTargetTest.cs Uses target-typed new delegates and ManualResetEventSlim, converting inline lambdas to named local functions.
dotnet/test/common/DevTools/DevToolsSecurityTest.cs Same pattern: target-typed new for ManualResetEventSlim and named local handler function.
dotnet/test/common/DevTools/DevToolsProfilerTest.cs Same as above for profiler console profile events.
dotnet/test/common/DevTools/DevToolsLogTest.cs Same pattern for log entry-added events.
dotnet/test/common/DevTools/DevToolsConsoleTest.cs Same pattern for console message-added events.
dotnet/test/common/CustomDriverConfigs/* Uses target-typed new in static DefaultOptions properties and object initializers where appropriate.
dotnet/test/common/CorrectEventFiringTest.cs Uses list collection expressions and target-typed new for StringBuilder in event ordering tests.
dotnet/test/common/CookieTest.cs Uses target-typed new for Cookie construction and discards unused ReturnedCookie instance.
dotnet/test/common/ClickScrollingTest.cs Replaces an unused size local with a discard.
dotnet/test/common/BiDi/Network/NetworkTest.cs Changes several async exception assertions to use Func<Task<NavigateResult>> + Assert.That(..., Throws...) instead of an async lambda; this potentially alters how NUnit awaits and evaluates exceptions (see comments).
dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs Uses discards for unused created windows to satisfy analyzers.
dotnet/test/common/AlertsTest.cs Removes unused helper methods related to onbeforeunload alerts.
dotnet/src/webdriver/Window.cs Converts to a primary-constructor class with a readonly driver field and uses object-initializer syntax for the window rect parameter dictionaries.
dotnet/src/webdriver/WebElementFactory.cs Uses primary constructor and property initializer for ParentDriver.
dotnet/src/webdriver/WebDriverError.cs Uses target-typed new for the resultMap dictionary.
dotnet/src/webdriver/VirtualAuth/VirtualAuthenticatorOptions.cs Uses dictionary index initializers for ToDictionary().
dotnet/src/webdriver/VirtualAuth/Credential.cs Uses dictionary index initializers for ToDictionary().
dotnet/src/webdriver/UserAgent.cs Uses primary constructor and property initializer for UserAgentString.
dotnet/src/webdriver/Timeouts.cs Converts to a primary-constructor-based type, removes an unused legacy constant, and simplifies timeout parameter dictionary creation.
dotnet/src/webdriver/Support/DefaultWait{T}.cs Uses collection expression for ignoredExceptions.
dotnet/src/webdriver/StaleElementReferenceException.cs Makes supportUrl readonly.
dotnet/src/webdriver/ShadowRoot.cs Uses a primary constructor and object-initializer syntax for command parameter dictionaries.
dotnet/src/webdriver/SessionId.cs Uses primary constructor with readonly backing field.
dotnet/src/webdriver/SeleniumManager.cs Uses target-typed new for StringBuilder, Process, and event handlers.
dotnet/src/webdriver/Screenshot.cs Converts to a primary-constructor-derived class from EncodedFile with richer XML docs.
dotnet/src/webdriver/Safari/SafariDriverService.cs Uses target-typed new for StringBuilder.
dotnet/src/webdriver/Safari/SafariDriver.cs Uses target-typed new for DriverFinder, request dictionaries, and capability dictionaries.
dotnet/src/webdriver/Response.cs Uses primary constructor and property initializers for SessionId, Value, and Status.
dotnet/src/webdriver/Remote/SendingRemoteHttpRequestEventArgs.cs Converts to primary-constructor event args, uses dictionary field initialization, and inlines header null checks.
dotnet/src/webdriver/Remote/RemoteSessionSettings.cs Uses collection and dictionary expressions; builds capability dictionaries with collection expressions.
dotnet/src/webdriver/Remote/ReadOnlyDesiredCapabilities.cs Uses collection expression for the capabilities dictionary.
dotnet/src/webdriver/Remote/DesiredCapabilities.cs Same as above.
dotnet/src/webdriver/RelativeBy.cs Uses collection/dictionary expressions for filters and parameters, and simplifies dictionary creation.
dotnet/src/webdriver/Proxy.cs Uses collection expressions for proxy bypass lists and capability serialization.
dotnet/src/webdriver/PrintDocument.cs Converts to primary-constructor-based class and modern using declarations.
dotnet/src/webdriver/PasswordCredentials.cs Uses a primary constructor to set UserName and Password, leaving the parameterless ctor available.
dotnet/src/webdriver/OptionsManager.cs Converts to primary constructor and readonly driver field.
dotnet/src/webdriver/NoSuchElementException.cs Makes supportUrl readonly.
dotnet/src/webdriver/NoSuchDriverException.cs Makes supportUrl readonly.
dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs Uses collection expression for headers dictionary.
dotnet/src/webdriver/NetworkRequestSentEventArgs.cs Same for request headers.
dotnet/src/webdriver/Navigator.cs Uses primary constructor for driver and target-typed new for navigation parameters.
dotnet/src/webdriver/Logs.cs Uses primary constructor plus collection expressions for available log types and log entries.
dotnet/src/webdriver/LogEntry.cs Uses target-typed new in FromDictionary.
dotnet/src/webdriver/JavaScriptExceptionThrownEventArgs.cs Uses primary constructor and a property initializer.
dotnet/src/webdriver/JavaScriptConsoleApiCalledEventArgs.cs Same pattern for console API event args.
dotnet/src/webdriver/JavaScriptCallbackExecutedEventArgs.cs Same pattern for callback executed event args.
dotnet/src/webdriver/InvalidSelectorException.cs Makes supportUrl readonly.
dotnet/src/webdriver/Internal/ReturnedCookie.cs Converts to primary-constructor-based derived class with expanded XML documentation.
dotnet/src/webdriver/Internal/ReturnedCapabilities.cs Uses collection expression for capabilities dictionary.
dotnet/src/webdriver/Internal/ResourceUtilities.cs Uses modern using-declaration style while preserving platform detection semantics.
dotnet/src/webdriver/Internal/Logging/TextWriterHandler.cs Uses collection expression for _levels.
dotnet/src/webdriver/Internal/Logging/Logger.cs Uses primary constructor and auto-properties.
dotnet/src/webdriver/Internal/Logging/LogEvent.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/Internal/Logging/Log.cs Uses target-typed new for LogContextManager.
dotnet/src/webdriver/Internal/Logging/FileLogHandler.cs Uses collection expression for _levels and target-typed new for _lockObj.
dotnet/src/webdriver/Internal/FileUtilities.cs Uses target-typed new for DirectoryInfo.
dotnet/src/webdriver/Internal/Base64UrlEncoder.cs Uses collection expression syntax for the base64 character table.
dotnet/src/webdriver/Interactions/WheelInputDevice.cs Converts to primary constructor and uses dictionary initializer in ToDictionary.
dotnet/src/webdriver/Interactions/PauseInteraction.cs Uses dictionary initializer in ToDictionary.
dotnet/src/webdriver/Interactions/Actions.cs Uses target-typed new for ActionBuilder and null-coalescing assignment (target ??=).
dotnet/src/webdriver/Interactions/ActionSequence.cs Uses collection expressions.
dotnet/src/webdriver/Interactions/ActionBuilder.cs Uses collection/target-typed new for dictionaries, lists, and sequences.
dotnet/src/webdriver/IE/InternetExplorerOptions.cs Uses collection expression for IE options and dictionary initializers in capability building.
dotnet/src/webdriver/IE/InternetExplorerDriverService.cs Uses target-typed new for StringBuilder.
dotnet/src/webdriver/IE/InternetExplorerDriver.cs Converts one constructor to a primary constructor and uses target-typed new for DriverFinder.
dotnet/src/webdriver/HttpResponseData.cs Uses collection expressions for headers and cookie headers.
dotnet/src/webdriver/Firefox/Preferences.cs Uses collection expressions for dictionaries/sets and modern using-declaration in WriteToFile.
dotnet/src/webdriver/Firefox/Internal/IniFileReader.cs Uses collection expressions, range slicing, and target-typed new.
dotnet/src/webdriver/Firefox/FirefoxProfileManager.cs Uses collection expression and target-typed new for IniFileReader.
dotnet/src/webdriver/Firefox/FirefoxProfile.cs Uses collection expressions, target-typed new, range slicing, and modern using patterns for zips/memory streams.
dotnet/src/webdriver/Firefox/FirefoxOptions.cs Uses collection expressions and dictionary initializers for nested log option dictionaries.
dotnet/src/webdriver/Firefox/FirefoxDriverService.cs Uses target-typed new for StringBuilder and null-conditional logging.
dotnet/src/webdriver/Firefox/FirefoxDriver.cs Uses collection expressions for custom command registry and target-typed new for DriverFinder and parameter dictionaries.
dotnet/src/webdriver/Firefox/FirefoxAndroidOptions.cs Converts to primary-constructor Android options type and uses collection expression for intent arguments.
dotnet/src/webdriver/ErrorResponse.cs Uses list collection expressions and spread syntax to convert stack traces into arrays.
dotnet/src/webdriver/ElementCoordinates.cs Uses primary constructor and readonly element field.
dotnet/src/webdriver/Edge/EdgeDriver.cs Uses collection expression for custom command map and for composing combined custom commands.
dotnet/src/webdriver/DriverProcessStartingEventArgs.cs Uses primary constructor and property initializer.
dotnet/src/webdriver/DriverOptions.cs Uses collection expressions for internal capability/logging dictionaries, and target-typed new for merged options and logging preference capabilities.
dotnet/src/webdriver/DriverFinder.cs Uses primary constructor, readonly options/paths, collection expression for paths, and target-typed new for StringBuilder.
dotnet/src/webdriver/DevTools/v144/* Uses readonly fields, collection/array expressions, list initializers, and target-typed new for DevTools v144 target/network/log/javascript bindings.
dotnet/src/webdriver/DevTools/v143/* Same set of changes for DevTools v143 classes.
dotnet/src/webdriver/DevTools/v142/* Same set of changes for DevTools v142 classes.
dotnet/src/webdriver/DevTools/WebSocketConnectionDataReceivedEventArgs.cs Uses primary constructor and property initializer.
dotnet/src/webdriver/DevTools/TargetInfo.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/TargetDetachedEventArgs.cs Uses primary constructor.
dotnet/src/webdriver/DevTools/TargetAttachedEventArgs.cs Uses primary constructor.
dotnet/src/webdriver/DevTools/Target.cs Uses null-conditional event invocation.
dotnet/src/webdriver/DevTools/ResponsePausedEventArgs.cs Uses primary constructor and property initializer.
dotnet/src/webdriver/DevTools/RequestPausedEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/LogEntry.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/Log.cs Uses null-conditional event invocation.
dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs Uses collection expressions for the mapping dictionaries.
dotnet/src/webdriver/DevTools/JavaScript.cs Uses null-conditional event invocation for script events.
dotnet/src/webdriver/DevTools/ExceptionThrownEventArgs.cs Uses primary constructor.
dotnet/src/webdriver/DevTools/EntryAddedEventArgs.cs Uses primary constructor.
dotnet/src/webdriver/DevTools/DevToolsSessionLogMessageEventArgs.cs Uses primary constructor and formatted-message initializer.
dotnet/src/webdriver/DevTools/DevToolsSessionEventReceivedEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/DevToolsSession.cs Uses readonly concurrent dictionary and blocking collection, modern using for HttpClient, and null-conditional event logging invocations.
dotnet/src/webdriver/DevTools/DevToolsEventData.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/DevToolsDomains.cs Uses collection expression for supported versions list.
dotnet/src/webdriver/DevTools/DevToolsCommandData.cs Uses primary constructor, property initializers, and inline ManualResetEventSlim initialization.
dotnet/src/webdriver/DevTools/ConsoleApiCalledEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/ConsoleApiArgument.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/BindingCalledEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/DevTools/AuthRequiredEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/webdriver/CookieJar.cs Uses collection expression for parameters and collection expression for result list.
dotnet/src/webdriver/Cookie.cs Uses collection expression for the SameSite set and target-typed new for epoch base date.
dotnet/src/webdriver/CommandInfoRepository.cs Uses collection expression for the internal command dictionary.
dotnet/src/webdriver/Command.cs Uses primary constructor, property initializers, and collection expression fallback for parameters.
dotnet/src/webdriver/Chromium/ChromiumPerformanceLoggingPreferences.cs Uses collection expression for tracing categories.
dotnet/src/webdriver/Chromium/ChromiumNetworkConditions.cs Uses target-typed new in FromDictionary.
dotnet/src/webdriver/Chromium/ChromiumDriverService.cs Uses target-typed new for StringBuilder.
dotnet/src/webdriver/Chromium/ChromiumAndroidOptions.cs Uses primary constructor to pass package to base.
dotnet/src/webdriver/Chrome/ChromeDriver.cs Uses collection expression for custom command map.
dotnet/src/webdriver/CapabilityType.cs Uses collection expression for known spec-compliant capability names set.
dotnet/src/webdriver/By.cs Uses target-typed new and object initializer for By instances, modern slicing, and target-typed Regex construction.
dotnet/src/webdriver/BiDi/WebExtension/Extension.cs Removes a custom PrintMembers to use default record printing.
dotnet/src/webdriver/BiDi/Script/* Various small updates: fix an always-true pattern, use compound assignment, remove redundant PrintMembers, target-typed new for conversions.
dotnet/src/webdriver/BiDi/Network/* Removes custom PrintMembers overrides and relies on record base implementation.
dotnet/src/webdriver/BiDi/Json/Converters/BrowsingContextConverter.cs Uses primary-constructor style for converter and stores BiDi in a readonly field.
dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContext.cs Removes custom PrintMembers for record.
dotnet/src/webdriver/BiDi/Browser/UserContext.cs Same.
dotnet/src/webdriver/Alert.cs Converts to primary-constructor class with driver field and uses dictionary initializer for alert text.
dotnet/src/support/UI/SelectElement.cs Uses collection expressions, object initializers for XPath StringBuilders, and collection operations.
dotnet/src/support/UI/PopupWindowFinder.cs Converts to a primary-constructor-based class and simplifies the WebDriverWait instantiation.
dotnet/src/support/Events/WebElementValueEventArgs.cs Uses primary constructor and property initializer.
dotnet/src/support/Events/WebElementEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/support/Events/WebDriverScriptEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/support/Events/WebDriverNavigationEventArgs.cs Uses primary constructor and property initializers, keeping the parameterless overload.
dotnet/src/support/Events/WebDriverExceptionEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/support/Events/GetShadowRootEventArgs.cs Uses primary constructor and property initializers.
dotnet/src/support/Events/FindElementEventArgs.cs Uses primary constructor and property initializers, keeping the existing constructor overload.

Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'CancellationTokenSource' is created but not disposed.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'Process' is created but not disposed.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'ManualResetEventSlim' is created but not disposed.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'ManualResetEventSlim' is created but not disposed.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disposable 'ManualResetEventSlim' is created but not disposed.

Copilot uses AI. Check for mistakes.
Comment on lines 383 to 385
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Poor error handling: empty catch block.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assignment to response is useless, since its value is never read.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assignment to parsedLine is useless, since its value is never read.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assignment to originalLocation is useless, since its value is never read.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assignment to selected is useless, since its value is never read.

Copilot uses AI. Check for mistakes.
Copy link
Contributor

@RenderMichael RenderMichael left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fully in support of doing a formatting pass, including through the older code!

Left some style comments, the only blockers to address is the bool PrintMembers issue and the merge issues in HttpCommandInfo.

@@ -27,64 +27,52 @@
// "In Project Suppression File".
// You do not need to add suppressions to this file manually.
[assembly: System.CLSCompliant(true)]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Likely as a follow-up given the mechanical and titanic nature of this PR:

This is the only useful attribute in this file; the various old-school global suppressions should be addressed or folded into the editorconfig.

}

// Includes Id only for brevity
private bool PrintMembers(StringBuilder builder)
Copy link
Contributor

@RenderMichael RenderMichael Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a magic method that records use

@nvborisenko I think you made these. Maybe we should fix BiDi.ToString() or override these methods' various ToString()s instead of this magic here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this pass all format checks?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 for future-roofing, this will become free perf as we upgrade .NET.

Point for this PR conceptually!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same object sender -> object? sender in this file

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inline is clearer here

Suggested change
Assert.That((Func<FileLogHandler>)act, Throws.ArgumentException);
Assert.That(() => new FileLogHandler(path), Throws.ArgumentException);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Assert.That((Func<Cookie>)getCookieAction, Throws.ArgumentException);
Assert.That(() => driver.Manage().Cookies.GetCookieNamed(cookieName), Throws.ArgumentException);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Assert.That((Action)deleteCookieAction, Throws.ArgumentException);
Assert.That(() => driver.Manage().Cookies.DeleteCookieNamed(cookieName), Throws.ArgumentException);

EqualConstraint fourthConstraint = new EqualConstraint("focus change blur focus change blur"); //What Chrome does
EqualConstraint thirdConstraint = new("focus blur change focus blur change");
EqualConstraint fourthConstraint = new("focus change blur focus change blur"); //What Chrome does
// I weep.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

me too...

internal static readonly char[] s_base64Table =
{
[
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI linting says these should all be one-character-per-line: https://github.com/SeleniumHQ/selenium/actions/runs/21374865626/job/61528435134?pr=17011#step:21:485

I don't agree, but I have no strong opinion. This type is a polyfill anyways.

new List<string>() { Keys.Control, Keys.Shift },
new List<string>() { Keys.Control, Keys.Alt },
new List<string>() { Keys.Shift, Keys.Alt },
new List<string>() { Keys.Control, Keys.Shift, Keys.Alt}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how this didn't catch before this change, but CI is right

Suggested change
new List<string>() { Keys.Control, Keys.Shift, Keys.Alt}
new List<string>() { Keys.Control, Keys.Shift, Keys.Alt }

@titusfortner titusfortner marked this pull request as draft January 27, 2026 14:25
@titusfortner
Copy link
Member Author

@RenderMichael thank you for going through all of these!
I think we should do this iteratively instead of all-in-one PR.

I think we need to figure out which style settings to apply and how to enforce them, then add them one at a time until we have the consistent code base we want.

I'll run some more analysis on my side, but maybe there is an obvious one or two IDE numbers of the above that we should start with?

@titusfortner
Copy link
Member Author

Looks like Visual Studio is supposed to be able to auto-generate an editorconfig file that matches existing repo style. I'll load up a VM and see what that gives us.

@titusfortner titusfortner force-pushed the dotnet_format_severity branch from b9ac03e to 4802b05 Compare January 28, 2026 19:40
@RenderMichael
Copy link
Contributor

All of the fixes here are valid code style issues; since this PR is already put together, I don’t see a problem taking it as-is modulo the various feedback. This PR is large but it’s mostly in the less-active Support and Test projects.

@titusfortner
Copy link
Member Author

closing in favor of #17019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-build Includes scripting, bazel and CI integrations B-support Issue or PR related to support classes C-dotnet .NET Bindings Review effort 4/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments