Skip to content

Made Header Parameters for Security Schemes safe to use as C# variable name#977

Merged
christianhelle merged 2 commits into
christianhelle:mainfrom
smoerijf:dash
Apr 1, 2026
Merged

Made Header Parameters for Security Schemes safe to use as C# variable name#977
christianhelle merged 2 commits into
christianhelle:mainfrom
smoerijf:dash

Conversation

@smoerijf

@smoerijf smoerijf commented Mar 31, 2026

Copy link
Copy Markdown

Header names should only contain a-zA-Z0-9 and - (dash) characters according to the specification, but the dash is a problem for c# variable names.
The current ReplaceUnsafeCharacters lets the - (dash) pass through, which creates a problem for headers like "x-something-something".
ReplaceUnsafeCharacters initially was added to fix . (punctuation), this is still replaced by _ (underscore), ref: #653

Summary by CodeRabbit

  • Bug Fixes

    • Consistently replace non‑alphanumeric characters with underscores in API header and parameter names to avoid unsafe/invalid identifiers.
  • Other

    • Sample API specs updated to use safer header names for affected security schemes.
  • Tests

    • Test resources and assertions updated to validate the revised header/parameter naming and resource encoding cleanup.

…e name -- header names should any contain a-zA-Z0-9 and - (dash), but the dash is a problem for variable names
@coderabbitai

coderabbitai Bot commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bbb0a330-a32f-4f0b-bd7f-6770140e3465

📥 Commits

Reviewing files that changed from the base of the PR and between ca61940 and 9f82940.

📒 Files selected for processing (1)
  • src/Refitter.Tests/SwaggerPetstoreApizrTests.cs

📝 Walkthrough

Walkthrough

ReplaceUnsafeCharacters in ParameterExtractor now treats any non-letter-or-digit character as unsafe and replaces it with '_'. Test API specs and unit test assertions were updated to use auth.key-test_2 to validate the broader sanitization rule.

Changes

Cohort / File(s) Summary
Core Logic
src/Refitter.Core/ParameterExtractor.cs
Changed ReplaceUnsafeCharacters to replace any character that is not a Unicode letter or digit with '_' (previously targeted UnicodeCategory.OtherPunctuation).
Test API specs (V2 & V3)
src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.json, src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml, src/Refitter.Tests/Resources/V3/SwaggerPetstoreWithUnsafeAuthenticationHeaders.json, src/Refitter.Tests/Resources/V3/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml
Updated security header name from auth.key to auth.key-test_2 (and removed UTF-8 BOM in one JSON) to exercise hyphen and dot handling in sanitization.
Tests (assertions)
src/Refitter.Tests/SwaggerPetstoreTests.cs, src/Refitter.Tests/SwaggerPetstoreApizrTests.cs
Updated assertions to expect generated header name auth.key-test_2 and corresponding sanitized parameter identifier auth_key_test_2.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

enhancement, .NET

Suggested reviewers

  • christianhelle

Poem

🐰 I nibble at dots and dashes with glee,
Any non-letter or digit becomes underscore for me,
Specs now say auth.key-test_2 with pride,
Tests hop along, no unsafe chars to hide,
A little rabbit patch—clean code, happy stride. 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: making header parameters safe for use as C# variable names by replacing unsafe characters.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml (1)

554-558: ⚠️ Potential issue | 🟠 Major

Update securityDefinitions.auth_key.name to match V2 JSON file.

The V2 YAML file has name: "auth.key" in securityDefinitions (line 557), but the V2 JSON file correctly uses "name": "auth.key-test_2" (line 790). This inconsistency will cause the test Can_Generate_Code_With_Unsafe_AuthenticationHeaders to generate different header attributes when using the YAML vs JSON specification.

Proposed fix
 securityDefinitions:
   auth_key:
     type: "apiKey"
-    name: "auth.key"
+    name: "auth.key-test_2"
     in: "header"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml`
around lines 554 - 558, The YAML's securityDefinitions entry for auth_key has
the wrong header name; update securityDefinitions.auth_key.name from "auth.key"
to "auth.key-test_2" so it matches the V2 JSON and the expectations of the
Can_Generate_Code_With_Unsafe_AuthenticationHeaders test; locate the auth_key
block (securityDefinitions.auth_key) and change the name value to
"auth.key-test_2".
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In
`@src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml`:
- Around line 554-558: The YAML's securityDefinitions entry for auth_key has the
wrong header name; update securityDefinitions.auth_key.name from "auth.key" to
"auth.key-test_2" so it matches the V2 JSON and the expectations of the
Can_Generate_Code_With_Unsafe_AuthenticationHeaders test; locate the auth_key
block (securityDefinitions.auth_key) and change the name value to
"auth.key-test_2".

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: acc51ed5-f40a-47c8-b462-5c2d2a6adb4b

📥 Commits

Reviewing files that changed from the base of the PR and between 7c88426 and ca61940.

📒 Files selected for processing (6)
  • src/Refitter.Core/ParameterExtractor.cs
  • src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.json
  • src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml
  • src/Refitter.Tests/Resources/V3/SwaggerPetstoreWithUnsafeAuthenticationHeaders.json
  • src/Refitter.Tests/Resources/V3/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml
  • src/Refitter.Tests/SwaggerPetstoreTests.cs

@christianhelle christianhelle self-assigned this Mar 31, 2026
@christianhelle

Copy link
Copy Markdown
Owner

@smoerijf good catch! thanks for taking the time to fix this

The core change looks good to me. Can you fix the tests? They seem to be failing

@christianhelle

Copy link
Copy Markdown
Owner

@all-contributors please add @smoerijf for bugs and code

@allcontributors

Copy link
Copy Markdown
Contributor

@christianhelle

I've put up a pull request to add @smoerijf! 🎉

Comment thread src/Refitter.Tests/SwaggerPetstoreTests.cs
@sonarqubecloud

sonarqubecloud Bot commented Apr 1, 2026

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 updates Refitter’s header-parameter name sanitization so security-scheme header names containing non-alphanumeric characters (notably -) don’t produce invalid C# parameter identifiers, and updates the Petstore fixtures/tests to validate the new behavior.

Changes:

  • Update ReplaceUnsafeCharacters to replace any non-letter/digit characters with _ when generating security-scheme header parameter names.
  • Update Swagger Petstore test assertions to expect sanitized header parameter identifiers for unsafe header names.
  • Update OpenAPI v2/v3 Petstore fixtures to use an unsafe header name containing . / - / _ for coverage.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/Refitter.Core/ParameterExtractor.cs Broadens header-name sanitization for security-scheme header parameters.
src/Refitter.Tests/SwaggerPetstoreTests.cs Updates assertion for generated header parameter name.
src/Refitter.Tests/SwaggerPetstoreApizrTests.cs Updates assertion for generated header parameter name (Apizr).
src/Refitter.Tests/Resources/V3/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml Updates v3 YAML fixture security scheme header name.
src/Refitter.Tests/Resources/V3/SwaggerPetstoreWithUnsafeAuthenticationHeaders.json Updates v3 JSON fixture security scheme header name.
src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.yaml Updates v2 YAML fixture operation header parameter name (but currently inconsistent with securityDefinitions).
src/Refitter.Tests/Resources/V2/SwaggerPetstoreWithUnsafeAuthenticationHeaders.json Updates v2 JSON fixture securityDefinitions header name (but currently inconsistent with an explicit operation header parameter).
Comments suppressed due to low confidence (1)

src/Refitter.Core/ParameterExtractor.cs:169

  • ReplaceUnsafeCharacters still doesn’t guarantee a valid C# identifier (e.g., header names that start with a digit or match a reserved keyword would generate uncompilable parameter names). Since IdentifierUtils.ToCompilableIdentifier already exists and handles leading characters + reserved keywords, consider using it here (and removing this custom sanitizer) to truly make security-scheme header parameters “safe to use as C# variable name”.
    private static string ReplaceUnsafeCharacters(
        string unsafeText)
    {
        var safeText = new StringBuilder(unsafeText.Length);
        foreach (var character in unsafeText)
        {
            var safeCharacter = character;
            if (!char.IsLetterOrDigit(character))
            {
                safeCharacter = '_';
            }

            safeText.Append(safeCharacter);
        }

        return safeText.ToString();

@codecov

codecov Bot commented Apr 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.15%. Comparing base (1a4d7e3) to head (9f82940).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #977   +/-   ##
=======================================
  Coverage   93.15%   93.15%           
=======================================
  Files          27       27           
  Lines        1797     1797           
=======================================
  Hits         1674     1674           
  Misses         49       49           
  Partials       74       74           
Flag Coverage Δ
unittests 93.15% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@christianhelle christianhelle left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

@smoerijf thank you for the contribution

@christianhelle
christianhelle merged commit 179bc5f into christianhelle:main Apr 1, 2026
14 checks passed
@smoerijf

smoerijf commented Apr 7, 2026

Copy link
Copy Markdown
Author

@christianhelle Any chance to get a (preview) release from the main (with this fix)?

@christianhelle christianhelle added the enhancement New feature, bug fix, or request label Apr 7, 2026
@christianhelle

christianhelle commented Apr 7, 2026

Copy link
Copy Markdown
Owner

@christianhelle Any chance to get a (preview) release from the main (with this fix)?

@smoerijf A release preview is on its way

@christianhelle

Copy link
Copy Markdown
Owner

This fix is included in v1.8.0-preview.102

hwinther pushed a commit to hwinther/test that referenced this pull request May 6, 2026
Updated [refitter](https://github.com/christianhelle/refitter) from
1.7.1 to 2.0.0.

<details>
<summary>Release notes</summary>

_Sourced from [refitter's
releases](https://github.com/christianhelle/refitter/releases)._

## 2.0.0

## What's Changed

* Fix numeric format with pattern quirk - infer type from format for all
numeric types by @​Copilot in
christianhelle/refitter#869
* Read group documentation from document tags. by @​DJ4ddi in
christianhelle/refitter#887
* Fix null reference and XML escaping in XmlDocumentationGenerator by
@​Copilot in christianhelle/refitter#890
* Fix build workflow: add dotnet restore before dotnet msbuild in
Prepare step by @​Copilot in
christianhelle/refitter#892
christianhelle/refitter#895
* Fix MSBuild workflow by @​christianhelle in
christianhelle/refitter#898
* Add support for generating a single client from multiple OpenAPI
specifications by @​Copilot in
christianhelle/refitter#904
* Migrate from Microsoft.OpenApi.Readers 1.x to Microsoft.OpenApi 3.x by
@​vgmello in christianhelle/refitter#907
* Improve Smoke Tests execution time by @​christianhelle in
christianhelle/refitter#915
* Fix #​580: Nullable strings marked correctly by @​christianhelle in
christianhelle/refitter#921
* Fix #​672: MultipleInterfaces ByTag method naming scoped per-interface
by @​christianhelle in
christianhelle/refitter#922
* Fix #​635: Refactor source generator to use context.AddSource() by
@​christianhelle in christianhelle/refitter#923
* Add custom format mappings configuration by @​christianhelle in
christianhelle/refitter#927
* Fix multipart form-data parameter extraction by @​christianhelle in
christianhelle/refitter#928
christianhelle/refitter#911
christianhelle/refitter#902
* Fix smoke tests: --interface-only variant missing using directive for
contract types by @​Copilot in
christianhelle/refitter#933
* Fix SonarCloud Code Quality Issues by @​Copilot in
christianhelle/refitter#932
* Add debug logging for source generator when searching for .refitter
files by @​codymullins in
christianhelle/refitter#743
* Fix: Base type not generated for types using oneOf with discriminator
by @​Copilot in christianhelle/refitter#906
* Add option for Method Level Authorization header attribute by
@​Roflincopter in christianhelle/refitter#897
* Fix PR #​897 review feedback and add comprehensive bearer auth tests
by @​christianhelle in
christianhelle/refitter#936
* Fix numeric suffix added to interface method names in ByTag mode by
@​Copilot in christianhelle/refitter#914
* Improve OpenAPI parse + codegen throughput by removing avoidable
allocations and repeated regex work by @​Copilot in
christianhelle/refitter#937
* Move [JsonConverter] from enum properties to enum types by
@​christianhelle in christianhelle/refitter#938
* Fix broken CLI tool help text by @​christianhelle in
christianhelle/refitter#940
* Improve code coverage to >90% by @​christianhelle in
christianhelle/refitter#941
* Microsoft.OpenApi v3.4 by @​christianhelle in
christianhelle/refitter#945
* Add Unicode support for XML doc comment generation by @​christianhelle
in christianhelle/refitter#948
* Add PropertyNamingPolicy support for JSON property naming by
@​christianhelle in christianhelle/refitter#969
christianhelle/refitter#966
* Fix recursive schema stack overflows by @​christianhelle in
christianhelle/refitter#971
* Made Header Parameters for Security Schemes safe to use as C# variable
name by @​smoerijf in
christianhelle/refitter#977
* Enhance schema alias handling and property name generation by
@​christianhelle in christianhelle/refitter#996
* Verify alias handling and sanitize PascalCase properties by
@​christianhelle in christianhelle/refitter#997
* Harden .refitter settings deserialization and output path handling by
@​christianhelle in christianhelle/refitter#1000
* Special-case the default .refitter filename before deriving
OutputFilename by @​coderabbitai[bot] in
christianhelle/refitter#1002
* [v2.0 audit] Fix pre-release regressions from #​1057 by
@​christianhelle in christianhelle/refitter#1064
* Resolve high-severity audit findings from #​1057 by @​christianhelle
in christianhelle/refitter#1067
* [v2.0 audit] Close remaining verified #​1057 regressions by
@​christianhelle in christianhelle/refitter#1070
* Harden generation flows by @​christianhelle in
christianhelle/refitter#1071
* Breaking changes and Migration Guide for v2.0.0 by @​christianhelle in
christianhelle/refitter#1009
* Handle equivalent duplicate schemas in multi-spec merge by
@​christianhelle in christianhelle/refitter#1076
* Tighten warning handling across Refitter builds by @​christianhelle in
christianhelle/refitter#1079
* Fix default solution path and update .NET version in VS Code config by
@​christianhelle in christianhelle/refitter#1082
* Fix docker smoke tests by @​christianhelle in
christianhelle/refitter#1081
* Sanitize malformed schema type names without renaming clean schemas by
@​christianhelle in christianhelle/refitter#1085

 ... (truncated)

## 1.7.3

## What's Changed
* Add support for systems running only .NET 10.0 (without .NET 8.0 or
9.0) in Refitter.MSBuild by @​christianhelle in
christianhelle/refitter#882
* Update to return HttpResponseMessage for file downloads by @​frogcrush
in christianhelle/refitter#877

## New Contributors
* @​frogcrush made their first contribution in
christianhelle/refitter#877

**Full Changelog**:
christianhelle/refitter@1.7.2...1.7.3

## 1.7.2

**Implemented enhancements:**

- Improve Immutable Records ergonomics
[\#​844](christianhelle/refitter#844)
- Omit certain operation headers and include all others
[\#​840](christianhelle/refitter#840)
- Create .refitter settings file as part of output
[\#​859](christianhelle/refitter#859) by
@[christianhelle
- Fix integerType enum deserialization issue
[\#​855](christianhelle/refitter#855)
([christianhelle](https://github.com/christianhelle))
- support custom nswag template directory \#​844
[\#​854](christianhelle/refitter#854) by
@​kmc059000
- Fix missing method parameter XML code-documentation
[\#​850](christianhelle/refitter#850)
([christianhelle](https://github.com/christianhelle))

**Fixed bugs:**

- integerType parsing in settings file fails
[\#​851](christianhelle/refitter#851)
- CS1573 : Method parameter has no matching XML comment
[\#​846](christianhelle/refitter#846)

**Merged pull requests:**

- docs: add frogcrush as a contributor for code
[\#​878](christianhelle/refitter#878)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- Migrate solution files from .sln to .slnx format
[\#​876](christianhelle/refitter#876)
([Copilot](https://github.com/apps/copilot-swe-agent))
- Fix issue with randomly failing tests to due parallel execution
[\#​872](christianhelle/refitter#872)
([christianhelle](https://github.com/christianhelle))
- chore\(deps\): update dependency tunit to 1.9.2
[\#​863](christianhelle/refitter#863)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.7.7
[\#​862](christianhelle/refitter#862)
([renovate[bot]](https://github.com/apps/renovate))
- Add unit tests for WriteRefitterSettingsFile functionality
[\#​860](christianhelle/refitter#860)
([Copilot](https://github.com/apps/copilot-swe-agent))
- chore\(deps\): update dependency ruby to v4
[\#​858](christianhelle/refitter#858)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.6.28
[\#​857](christianhelle/refitter#857)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add 0x2badc0de as a contributor for bug
[\#​856](christianhelle/refitter#856)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency swashbuckle.aspnetcore to 10.1.0
[\#​853](christianhelle/refitter#853)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.6.0
[\#​852](christianhelle/refitter#852)
([renovate[bot]](https://github.com/apps/renovate))
- docs: add lilinus as a contributor for code
[\#​849](christianhelle/refitter#849)
([allcontributors[bot]](https://github.com/apps/allcontributors))
- chore\(deps\): update dependency ruby to v3.4.8
[\#​845](christianhelle/refitter#845)
([renovate[bot]](https://github.com/apps/renovate))
- chore\(deps\): update dependency tunit to 1.5.70
[\#​837](christianhelle/refitter#837)
([renovate[bot]](https://github.com/apps/renovate))


**Full Changelog**:
christianhelle/refitter@1.7.1...1.7.2

Commits viewable in [compare
view](christianhelle/refitter@1.7.1...2.0.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=refitter&package-manager=nuget&previous-version=1.7.1&new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
vgmello pushed a commit to vgmello/momentum that referenced this pull request May 10, 2026
Updated [Refitter.MSBuild](https://github.com/christianhelle/refitter)
from 1.7.3 to 2.0.0.

<details>
<summary>Release notes</summary>

_Sourced from [Refitter.MSBuild's
releases](https://github.com/christianhelle/refitter/releases)._

## 2.0.0

## What's Changed

* Fix numeric format with pattern quirk - infer type from format for all
numeric types by @​Copilot in
christianhelle/refitter#869
* Read group documentation from document tags. by @​DJ4ddi in
christianhelle/refitter#887
* Fix null reference and XML escaping in XmlDocumentationGenerator by
@​Copilot in christianhelle/refitter#890
* Fix build workflow: add dotnet restore before dotnet msbuild in
Prepare step by @​Copilot in
christianhelle/refitter#892
christianhelle/refitter#895
* Fix MSBuild workflow by @​christianhelle in
christianhelle/refitter#898
* Add support for generating a single client from multiple OpenAPI
specifications by @​Copilot in
christianhelle/refitter#904
* Migrate from Microsoft.OpenApi.Readers 1.x to Microsoft.OpenApi 3.x by
@​vgmello in christianhelle/refitter#907
* Improve Smoke Tests execution time by @​christianhelle in
christianhelle/refitter#915
* Fix #​580: Nullable strings marked correctly by @​christianhelle in
christianhelle/refitter#921
* Fix #​672: MultipleInterfaces ByTag method naming scoped per-interface
by @​christianhelle in
christianhelle/refitter#922
* Fix #​635: Refactor source generator to use context.AddSource() by
@​christianhelle in christianhelle/refitter#923
* Add custom format mappings configuration by @​christianhelle in
christianhelle/refitter#927
* Fix multipart form-data parameter extraction by @​christianhelle in
christianhelle/refitter#928
christianhelle/refitter#911
christianhelle/refitter#902
* Fix smoke tests: --interface-only variant missing using directive for
contract types by @​Copilot in
christianhelle/refitter#933
* Fix SonarCloud Code Quality Issues by @​Copilot in
christianhelle/refitter#932
* Add debug logging for source generator when searching for .refitter
files by @​codymullins in
christianhelle/refitter#743
* Fix: Base type not generated for types using oneOf with discriminator
by @​Copilot in christianhelle/refitter#906
* Add option for Method Level Authorization header attribute by
@​Roflincopter in christianhelle/refitter#897
* Fix PR #​897 review feedback and add comprehensive bearer auth tests
by @​christianhelle in
christianhelle/refitter#936
* Fix numeric suffix added to interface method names in ByTag mode by
@​Copilot in christianhelle/refitter#914
* Improve OpenAPI parse + codegen throughput by removing avoidable
allocations and repeated regex work by @​Copilot in
christianhelle/refitter#937
* Move [JsonConverter] from enum properties to enum types by
@​christianhelle in christianhelle/refitter#938
* Fix broken CLI tool help text by @​christianhelle in
christianhelle/refitter#940
* Improve code coverage to >90% by @​christianhelle in
christianhelle/refitter#941
* Microsoft.OpenApi v3.4 by @​christianhelle in
christianhelle/refitter#945
* Add Unicode support for XML doc comment generation by @​christianhelle
in christianhelle/refitter#948
* Add PropertyNamingPolicy support for JSON property naming by
@​christianhelle in christianhelle/refitter#969
christianhelle/refitter#966
* Fix recursive schema stack overflows by @​christianhelle in
christianhelle/refitter#971
* Made Header Parameters for Security Schemes safe to use as C# variable
name by @​smoerijf in
christianhelle/refitter#977
* Enhance schema alias handling and property name generation by
@​christianhelle in christianhelle/refitter#996
* Verify alias handling and sanitize PascalCase properties by
@​christianhelle in christianhelle/refitter#997
* Harden .refitter settings deserialization and output path handling by
@​christianhelle in christianhelle/refitter#1000
* Special-case the default .refitter filename before deriving
OutputFilename by @​coderabbitai[bot] in
christianhelle/refitter#1002
* [v2.0 audit] Fix pre-release regressions from #​1057 by
@​christianhelle in christianhelle/refitter#1064
* Resolve high-severity audit findings from #​1057 by @​christianhelle
in christianhelle/refitter#1067
* [v2.0 audit] Close remaining verified #​1057 regressions by
@​christianhelle in christianhelle/refitter#1070
* Harden generation flows by @​christianhelle in
christianhelle/refitter#1071
* Breaking changes and Migration Guide for v2.0.0 by @​christianhelle in
christianhelle/refitter#1009
* Handle equivalent duplicate schemas in multi-spec merge by
@​christianhelle in christianhelle/refitter#1076
* Tighten warning handling across Refitter builds by @​christianhelle in
christianhelle/refitter#1079
* Fix default solution path and update .NET version in VS Code config by
@​christianhelle in christianhelle/refitter#1082
* Fix docker smoke tests by @​christianhelle in
christianhelle/refitter#1081
* Sanitize malformed schema type names without renaming clean schemas by
@​christianhelle in christianhelle/refitter#1085

 ... (truncated)

Commits viewable in [compare
view](christianhelle/refitter@1.7.3...2.0.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Refitter.MSBuild&package-manager=nuget&previous-version=1.7.3&new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, bug fix, or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants