Feature/maintenance#361
Merged
Merged
Conversation
…rides - Bump Microsoft.OpenApi.Readers 1.6.28 -> 1.6.29 - Bump Microsoft.Extensions.Diagnostics.HealthChecks 10.0.5 -> 10.0.7 - Remove per-project Microsoft.SourceLink.GitHub overrides (now in Directory.Build.props)
…nfo leakage - Add includeExceptionDetails parameter (default false) to ToHealthCheck and ToHealthChecks; raw exception text can carry connection strings, file paths or other internals - Propagate the same opt-in through HealthCheckOptionsFactory.CreateJson - Document the security tradeoff on HealthCheck.ExceptionMessage - Add tests for default-off, opt-in, and connection-string non-leakage
…nd logger - Stop injecting Access-Control-Allow-Origin: * on static files; the configured CORS policy already handles cross-origin headers - Replace fragile substring check in IsFormatJsonAndProblemDetailsModel with JsonDocument-based property inspection (case-insensitive on names) - Promote per-instance regex in ErrorHandlingExceptionFilterAttribute to static readonly and tighten its timeout to 250 ms - Wrap StreamReader in RequestResponseLoggerMiddleware in a using block with leaveOpen so the swap-stream lifetime is explicit - Add tests for substring false-positive, camelCase and JSON-array root
… logging - Wrap the blocking GetIssuerSigningKeysAsync call in Task.Run with a 30-second timeout so startup cannot hang or deadlock when the identity provider is unreachable - Replace silent Debug.WriteLine on token-fetch failure with a structured ILogger.LogWarning (logger optional, DI-resolved) - Add Microsoft.Extensions.Logging to GlobalUsings; drop unused System.Diagnostics import
…helper - Replace null-forgiving Process.Start results in ProcessExtensions with explicit is-null guards; add class-level XML doc - Cache ASIN, ISSN and digit regexes as static readonly Lazy<Regex> with Compiled and 250 ms timeouts - Replace bare catch in IsValidIssn with explicit char-range validation - Use TryGetValue in SimpleTypeHelper.GetBeautifyTypeName (single hash) - Replace null! Tuple<int, string> values in NumericAlphaComparer with string.Empty
…ongDefinitions - Replace NotImplementedException stub with a per-type validation call to AssemblyAnalyzerHelper - Extract CollectMethodsWithWrongNamingForType helper so the assembly and single-type overloads share logic - Add tests for happy path and null-argument validation; add FluentAssertions to test GlobalUsings
- Add runOnNonWindows parameter to MarkdownCodeDocGenerator.Run so the generator is callable on Linux and macOS when the XML doc files are reachable; default behavior remains Windows-only - Cache CommentLookup access per type via GetTypeXmlDocumentComment and GetCommentsForType helpers - Replace EventHandlerType! with a null-safe SafeBeautifyEventHandlerName
…Reference - GetEnumSchema previously dereferenced schema.Reference.Id without a null check; now throws ItemNotFoundException with context and documents the new exception path
- Build error message previously stringified the Task<List<string>> returned by ToListAsync because it was never awaited; fix by awaiting the call so the file list is rendered correctly - Reduce ParseBuildOutputHelper regex timeout from 2 minutes to 10s
- Add KillTreeAsync(CancellationToken) and KillTreeAsync(TimeSpan, CancellationToken) mirroring the existing sync KillTree, scheduled on the thread pool so callers do not block their own context - Add class-level XML doc on the existing sync overloads - Add tests covering null process, pre-cancelled token and an already-exited process round-trip
- Accept a fully configured ProcessStartInfo so callers can set custom environment variables, encoding, working directory etc; the overload forces RedirectStandardOutput/Error and disables UseShellExecute since the ProcessExecutionResult requires captured output - Validates FileName is set (ArgumentException otherwise) - Add validation tests for null and missing FileName, plus an integration test that runs a real shell echo on the current platform
… tags - Replace the three TODO placeholders in CodeDocumentationTagsGenerator with real implementations for <code>, <example> and <exception cref="..."> tags - Reuse the existing GenerateTag formatter for code and example so output spacing, indentation and dot-termination match the other tags - Add tests covering all three new code paths
…overage - Replace the single CA1062/CA1720 + SA1413 hard-coded switch with explicit lookup tables covering ~30 CA rules and ~14 SA rules drawn from current codebase usage - Fall back to a generic Microsoft.Design / StyleCop.CSharp.MaintainabilityRules category for unknown rule ids instead of throwing NotImplementedException (analyzer matching only uses the rule id, so the fallback is functionally correct and removes a hostile API edge) - Update existing tests for the new fallback semantics; add theory cases for the newly mapped rules
…er overload - Replace the duplicated body in the no-logger overload with a single forward to the with-logger overload using NullLogger.Instance, removing copy-paste drift between the two public surfaces - Add a remarks block recommending the with-logger overload for build progress visibility
…oint - Expand the setupAction parameter doc to call out that this is the recommended position for app.UseRateLimiter() and app.UseRequestTimeouts() - Add the setupAction step to the middleware-order list in <remarks> - Provide a concrete example that wires both rate-limiting and request timeouts so consumers can copy/paste a working configuration
…ceptionFilter - Track the exception in telemetry first, then short-circuit the response composition when the client has already disconnected (RequestAborted is signalled). This avoids JSON serialization on a closed connection and prevents noisy I/O failures from surfacing in logs - Add tests for both the aborted and live request paths
…g int - New EnumHelper.ConvertEnumToReadOnlyDictionary<T>() returns IReadOnlyDictionary<TEnum, int> keyed by typed enum value with each member's underlying int as the value, replacing hand-rolled rank / threshold dictionaries at call sites - Reuses ShouldEnumValueBeSkipped so includeDefault, byFlagIncludeBase and byFlagIncludeCombined behave identically to ToDictionary - Uses Convert.ToInt32 with InvariantCulture so non-int-backed enums (byte, short, long) work correctly — a small improvement over the existing (int)box cast in ToDictionary - Add Enum<T>.ToReadOnlyDictionary wrapper next to ToDictionary - Add EnumHelper tests for happy path, includeDefault=false, [Flags] base/combined matrix, and a byte-backed fixture; add Enum<T> theory test exercising the wrapper through DayOfWeek
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
✨ Features
🔒 Security
🐛 Fixes
♻️ Refactoring
📝 Documentation
📦 Dependencies
Breaking Changes