{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D11","name":"Test Reliability","shortDescription":{"text":"Test Reliability"},"helpUri":"https://codehealth.canine.dev/dimensions/D11"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D18","name":"Solution Shape","shortDescription":{"text":"Solution Shape"},"helpUri":"https://codehealth.canine.dev/dimensions/D18"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"SqlBuilder.BuildExpressionSelect (cyclomatic 38): SqlBuilder.BuildExpressionSelect has cyclomatic complexity 38 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d91938fe676ca30567ba84274146cc0c417341199373094ab2c3b2cc64ece7"}},{"ruleId":"D1","level":"warning","message":{"text":"FileStorageKeyValueStorage.Match (cyclomatic 35): FileStorageKeyValueStorage.Match has cyclomatic complexity 35 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a792564b884b341eac2ba73b9045b6273dca88c529f3cae3beec3b7c934cef3"}},{"ruleId":"D1","level":"warning","message":{"text":"Extensions.To (cyclomatic 18): Extensions.To has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/To.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5381ae4c5d9e875eb009090c1d0b0d11ea289b914afc92586f44084f59be387"}},{"ruleId":"D1","level":"warning","message":{"text":"Extensions.To (cyclomatic 17): Extensions.To has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/To.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2621b21c142c9fc95c078e95f6b20db9431ed8c1fda7e9d159dedae7c20063"}},{"ruleId":"D1","level":"warning","message":{"text":"SshNetFileStorage.CreateConnectionInfo (cyclomatic 16): SshNetFileStorage.CreateConnectionInfo has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function, or replace a long branch ladder over a single value with a data-driven lookup or dispatch table."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Ssh/SshNetFileStorage.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"a446db72361751db76d76e1acf64e7a3b5b8a34ecbe6471a7e5a72baa3a66992"}},{"ruleId":"D2","level":"warning","message":{"text":"FileStorageKeyValueStorage.Match (cognitive 46): FileStorageKeyValueStorage.Match has cognitive complexity 46 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0594b659385269134ca84874b3730e84faf476959eea8eae3650e4cd3489022"}},{"ruleId":"D2","level":"warning","message":{"text":"NaosOperationsHealthController.GetHtmlAsync (cognitive 33): NaosOperationsHealthController.GetHtmlAsync has cognitive complexity 33 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Controllers/NaosOperationsHealthController.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8d5e47b984ab353b58d39e7dd16f6642b1d7c9e8beab74e95391ad6ee6f32e"}},{"ruleId":"D2","level":"warning","message":{"text":"ServiceBusMessageBroker.ProcessMessage (cognitive 30): ServiceBusMessageBroker.ProcessMessage has cognitive complexity 30 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7336cbb305ca4a8e79aeca79022f711032471d28fa2b13892c4e2cb9673c20"}},{"ruleId":"D2","level":"warning","message":{"text":"FileStorageMessageBroker.ProcessMessage (cognitive 29): FileStorageMessageBroker.ProcessMessage has cognitive complexity 29 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.FileSystem/FileStorageMessageBroker.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"fce862ca9fd81f4b9569aab1a0846d8995d1763c32fd46e49c9a5f1f35b1bedd"}},{"ruleId":"D2","level":"warning","message":{"text":"InteractiveConsoleHostedService.Run (cognitive 27): InteractiveConsoleHostedService.Run has cognitive complexity 27 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Console/App/InteractiveConsoleHostedService.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a7b451a6e22aed2a37fb3773e6f94177cbd10fccdafb3bbf48a6f480f56039"}},{"ruleId":"D2","level":"warning","message":{"text":"SqlBuilder.BuildExpressionSelect (cognitive 26): SqlBuilder.BuildExpressionSelect has cognitive complexity 26 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"c54925dd930c350f61b129ec95ba04cdff73490b2088d2884dcedcf0c60863a1"}},{"ruleId":"D2","level":"warning","message":{"text":"LogAnalyticsRepository.MapResponse (cognitive 25): LogAnalyticsRepository.MapResponse has cognitive complexity 25 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.LogAnalytics/Repositories/LogAnalyticsRepository.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e2204c8f4daa10c194b96f4db889754433e427d5fa45c6a66f258c1df9905e"}},{"ruleId":"D2","level":"warning","message":{"text":"RabbitMQMessageBroker.ProcessMessage (cognitive 23): RabbitMQMessageBroker.ProcessMessage has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.RabbitMQ/RabbitMQMessageBroker.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a3d67a451b6eda045823ebe903d580ce7b1b68e8270fedc9eff077c812a052"}},{"ruleId":"D2","level":"warning","message":{"text":"SignalRServerlessMessageBroker.ProcessMessage (cognitive 23): SignalRServerlessMessageBroker.ProcessMessage has cognitive complexity 23 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure.SignalR/SignalRServerlessMessageBroker.cs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"40fafe5af427efad3f07cba2cb366c8415f20a15a74afcb860831736af6628ce"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityFrameworkRepository.UpsertAsync (cognitive 20): EntityFrameworkRepository.UpsertAsync has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"4da39ea86bb5ec5eaf44597d6ef7a4ec6664f0335f106c34cd18caa3515b3f45"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityFrameworkRepository.UpsertAsync (cognitive 20): EntityFrameworkRepository.UpsertAsync has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cf6a87e0d3bd20d7708c6a7dfd4ac1e6333dc4208ffc7f79723fa94981eda0b"}},{"ruleId":"D2","level":"warning","message":{"text":"LoggingFilterContext.Prepare (cognitive 20): LoggingFilterContext.Prepare has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingFilterContext.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"76a2b017100f1ddad3b71b2566a3d0590e561e528f7a9bf3cc928e5affb27250"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyBag.ReadXml (cognitive 20): PropertyBag.ReadXml has cognitive complexity 20 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expando/PropertyBag.cs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"5646a50e43ba858e71c70372174914a5bf855de42b6fcd6f40089a987c7c6caf"}},{"ruleId":"D2","level":"warning","message":{"text":"ApiKeyAuthenticationHandler.HandleAuthenticateAsync (cognitive 19): ApiKeyAuthenticationHandler.HandleAuthenticateAsync has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c95a29fc90a47b9a46542a2f807d1ed75cb54e1099e421eca9914f41d6996df"}},{"ruleId":"D2","level":"warning","message":{"text":"BasicAuthenticationHandler.HandleAuthenticateAsync (cognitive 19): BasicAuthenticationHandler.HandleAuthenticateAsync has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d532ca29313133e4c9423c5ec1eb70e7f1340346d29f25ab50f64ba2613d9c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionExpander.VisitMethodCall (cognitive 19): ExpressionExpander.VisitMethodCall has cognitive complexity 19 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expressions/ExpressionExtensions.cs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"198be8f432369093b50ed95d51fc03e60f1d0db1bb78dfc156bb3f6f0211c870"}},{"ruleId":"D2","level":"warning","message":{"text":"CosmosSqlRepository.UpsertAsync (cognitive 18): CosmosSqlRepository.UpsertAsync has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1ac75fe67ec70480087186fee147292e3711ccda565f77276695456f8b607d9"}},{"ruleId":"D2","level":"warning","message":{"text":"CosmosSqlRepository.UpsertAsync (cognitive 18): CosmosSqlRepository.UpsertAsync has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity}.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bcf1eb640c2d801b69bfc5e666bb56d3713f89afed87687324a36748922de60"}},{"ruleId":"D2","level":"warning","message":{"text":"MongoRepository.UpsertAsync (cognitive 18): MongoRepository.UpsertAsync has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"f19d9d534dbf806e1e62fc7ef26dfced2639234ba76348e529d315490741e31d"}},{"ruleId":"D2","level":"warning","message":{"text":"MongoRepository.UpsertAsync (cognitive 18): MongoRepository.UpsertAsync has cognitive complexity 18 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ed1fe4122e656e3a31fd477b15fac64432db0b29737f73367d1fc35b9fea3f"}},{"ruleId":"D2","level":"warning","message":{"text":"InMemoryRepository.UpsertAsync (cognitive 17): InMemoryRepository.UpsertAsync has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/InMemory/InMemoryRepository{TEntity}.cs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8cd1649f42abc28771c02696e6d04e343cd2be535f66e5aa52be5c0fbf3009e"}},{"ruleId":"D2","level":"warning","message":{"text":"NaosOperationsLogEventsController.GetHtmlAsync (cognitive 17): NaosOperationsLogEventsController.GetHtmlAsync has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Controllers/NaosOperationsLogEventsController.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef2493e793d98c86735698ab7660ccb893980de7a3d537885656c934b673457"}},{"ruleId":"D2","level":"warning","message":{"text":"SshNetFileStorage.CreateConnectionInfo (cognitive 17): SshNetFileStorage.CreateConnectionInfo has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Ssh/SshNetFileStorage.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d57c5d57d028bcbbf16368b5d822a0ea22cd065187e38e8152814dd810ffacf"}},{"ruleId":"D2","level":"warning","message":{"text":"Extensions.To (cognitive 17): Extensions.To has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/To.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"026aa17e6b6bd9cd993aba76c95a56ae17303b641dcb603bc6ba7c75f8de2b66"}},{"ruleId":"D2","level":"warning","message":{"text":"Run.WithRetriesAsync (cognitive 17): Run.WithRetriesAsync has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Run.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"5213b0672d3d916379c4c569985ba050a555d62f0ba95744f6790b30439c0934"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandRequestMiddleware.Invoke (cognitive 17): CommandRequestMiddleware.Invoke has cognitive complexity 17 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/Middleware/CommandRequestMiddleware.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"eedbe49f77736b9cb61d848ad46dcbc03614fd92090751f9ae5f5c7b8c13df21"}},{"ruleId":"D2","level":"warning","message":{"text":"InMemoryRepository.FindAll (cognitive 16): InMemoryRepository.FindAll has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/InMemory/InMemoryRepository{TEntity,TDestination}.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"122a9b18b243c6b67835734af38668069196fce14ece5cc11c959e97c721aaf7"}},{"ruleId":"D2","level":"warning","message":{"text":"InMemoryRepository.FindAll (cognitive 16): InMemoryRepository.FindAll has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/InMemory/InMemoryRepository{TEntity}.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a791745fc211721df64d8a93bcfad0961a2bb81e9f6fbd3748c05b16dc2aa1"}},{"ruleId":"D2","level":"warning","message":{"text":"BadRequestExceptionResponseHandler.Handle (cognitive 16): BadRequestExceptionResponseHandler.Handle has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Exceptions.Application.Web/Middleware/Handlers/BadRequestExceptionResponseHandler.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"608f16bb7491f5d895d3ef5a5b5ff29ea52d6b6de5f0e5b028bc35dfc7121511"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyBag.WriteXml (cognitive 16): PropertyBag.WriteXml has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expando/PropertyBag.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d374d99d1dd04bbb95b5e5fb6fa26137a83620075aef25885e8134fec7cf93"}},{"ruleId":"D2","level":"warning","message":{"text":"DocumentRepository.UpsertAsync (cognitive 16): DocumentRepository.UpsertAsync has cognitive complexity 16 (threshold 15). To reduce it, flatten the nesting: invert conditions into early returns or guard clauses so the happy path stays at one level, and lift the deepest nested block into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories.Documents/DocumentRepository.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f69bb53490b918b2e2f08a9594a84cecbd22504f1fcb504fb94123f2be49e94"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: Foundation.ContentTypes/ContentType.cs: FileTooLong \u2014 1990 significant lines (blank, comment-only and punctuation-only lines excluded)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.ContentTypes/ContentType.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49faa0da8e1236f69b5f2f544b027f6da462ae64e708c5c9b0f826935cf030b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SequentialGuid: TooManyMethods \u2014 126 lines, 39 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/SequentialGuid.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d40a17c211982f0aadc1476e6ef1edbf064d51c6afcb4a4ab0b8c277aa819ad2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SqlServerDocumentProvider: TooManyMethods \u2014 378 lines, 34 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c006d2e52ca0e6e4fea3df650f656c4c9227f9692c22e0e8340d45df0b4f0659"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Node: TooManyMethods \u2014 167 lines, 31 methods."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Node/Node.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"51628d3aa482adcf081863f41d485552f7a18502524ecb623053d9d33a234170"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs:75-99 | src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs:75-99"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c0db7f0901c90e4de93693e8912542138bd23c4f272c1ca147d20da0ddb0a6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:82-103 | src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:162-183 | src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:242-263 | src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:282-303"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestOptionsExtensions.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"d818a39190e3386c31b9419be790c842cefe935f4ec2c36c616a903b7562fcd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:42-63 | src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:122-143 | src/Commands.Application.Web/CommandRequestOptionsExtensions.cs:202-223"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestOptionsExtensions.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dc088d8c978d546853be1752467ad8c8c7efa48bbb375caed8a08d92563aea6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs:142-161 | src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs:142-161 | src/Authentication.Application.Web/EasyAuth/EasyAuthAuthenticationHandler.cs:103-122"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"6715edcf7c8c8ef06d2934d6a9f58859310948d5cd44998ed33425c307778e62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs:211-230 | src/Foundation.Infrastructure.Documents.Sqlite/Provider/SqliteBuilder.cs:24-43"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ef2470ce1c3631c805da833442b7f15d0d79a0aa9ab77dc7ef52db0de50443c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/FileStorage.Infrastructure.Azure/AzureBlobFileStorage.cs:226-244 | src/FileStorage.Infrastructure.Ssh/SshNetFileStorage.cs:211-229"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureBlobFileStorage.cs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"26914086fe7973bf338d64d437feccbcc05a2a968d3be7dd84bc118092c6bffd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs:244-262 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:291-309"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3fe43694ba55f1f468075f76815a33e98b10a533822ba309cafb4e304f79606"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs:91-108 | src/ServiceDiscovery.Application/Registries/FileSystemServiceRegistry.cs:90-107"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7300a5ba599ed32d51a73e1d24a0ab0d46a3b47cd05e17ab40d211db476ea9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): src/KeyValueStorage.Infrastructure.Azure/TableKeyValueStorage.cs:105-121 | src/KeyValueStorage.Infrastructure.Azure/TableKeyValueStorage.cs:126-142"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.Azure/TableKeyValueStorage.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f21f87a0393b7ec01a5a301f09dd4bebde51097f64a022f3ca9d82aaf97204"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs:65-80 | src/ServiceDiscovery.Application/Registries/FileSystemServiceRegistry.cs:64-79"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b586be8c2348d1262c0c9630551a85fad1e4d64a91e7d247454e92e267baa9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 6): src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs:156-170 | src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity}.cs:149-163 | src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs:200-214 | src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs:193-207 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs:206-220 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs:196-210"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6ac1d825bc5ad99c0b1f28508dab800d16912828d71ab5be911863c70fa9e9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:217-231 | src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:244-258 | src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:271-285"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b978625f537007ffd108231c2372b7c2c6ca8dfcec8ce4e99790030b6d8bd22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs:31-45 | src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs:28-42"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"6557fa14a09ec609246ef4504358a8ce1355e957e0f9f7f32f871bc9518d195e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): src/Operations.Application/LoggingOptionsExtensions.cs:115-128 | src/Operations.Infrastructure.Azure/LoggingOptionsExtensions.cs:155-168 | src/Operations.Infrastructure.Mongo/LoggingOptionsExtensions.cs:74-87"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingOptionsExtensions.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf770e8f47e6697c9bf61bebca6ad5ddef0e7d01597a79b0eae1c896b2152103"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/Foundation.Application.Web/Extensions/HttpResponseExtensions.cs:23-36 | src/Foundation.Application.Web/Extensions/HttpResponseExtensions.cs:46-59"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Extensions/HttpResponseExtensions.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"88946d6cd03be88e392fe7ca436bb0f25a2042bdf0a3425c24437266ba076602"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs:202-215 | src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity}.cs:195-208"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"565d88d471cfcf1b660f5b96ca9b50bbe1b7fe863b433855ec805c229563d975"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs:286-299 | src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs:277-290"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c3ef79c67c0153e31193b4e9a6f22bac86e393f265c8dd8d43e1787fe7cde2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/Queueing/InMemoryQueue.cs:329-342 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:313-326"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/InMemoryQueue.cs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"d275f8eb1c3c6a3f4eca1e1bd2e4f316637c59431319018b1928922f3cb5e946"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs:213-226 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:255-268"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a738f2bf00d6db9788f8f1d29f51f2a5e240f9684983638d549226a989e0d4e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs:114-126 | src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs:114-126 | src/Authentication.Application.Web/EasyAuth/EasyAuthAuthenticationHandler.cs:75-87"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf74280cb7d39087b32a83da24d3eee9f49c26c79f1535e6041a5ed7da28b48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs:110-122 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs:103-115"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f7d64fdbf5956d90a6c995bca5fce136237e938ed881a4600078ae8c10a308"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs:159-172 | src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs:156-167"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f88718b6d9109d1e62a0d78764b44f23ab71ff08539de63c0390ee277b7a151"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs:39-50 | src/ServiceDiscovery.Application/Registries/FileSystemServiceRegistry.cs:38-49"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"151b059608cadcfdf53e4e52b421df77317486a2128431e904b474187ff667e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/FileStorage/InMemoryFileStorage.cs:115-126 | src/FileStorage/InMemoryFileStorage.cs:138-149"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage/InMemoryFileStorage.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"77fe98526efd1d936a9adce743e9245ff2dcd0520bea8da1482d477b3fb01c37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/Foundation.Utilities/EncryptionHelper.cs:58-69 | src/Foundation.Utilities/EncryptionHelper.cs:84-95"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/EncryptionHelper.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0eec694feccd7e9298e756ee44aa3f01717f421f59112285a354e488afde72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs:521-531 | src/Foundation.Infrastructure.Documents.Sqlite/Provider/SqliteDocumentProvider.cs:69-79"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"75639b2a3b067ad5b82b0f5ad503883e3e8623c237533e2f48a25aee14d1751f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs:166-176 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs:156-166"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d902dbf6552c3e28c619f30da1a4bd549746a69adf386f061f9d583bdd56f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): src/KeyValueStorage.Infrastructure.LightningDb/LightningDbKeyValueStorage.cs:108-117 | src/KeyValueStorage.Infrastructure.LightningDb/LightningDbKeyValueStorage.cs:126-135 | src/KeyValueStorage.Infrastructure.LightningDb/LightningDbKeyValueStorage.cs:144-153 | src/KeyValueStorage.Infrastructure.LightningDb/LightningDbKeyValueStorage.cs:162-171"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.LightningDb/LightningDbKeyValueStorage.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a50f237bf7573849888686a4ffe93e2296716c65bf183b5c664220b98048867"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/Messaging.Infrastructure.RabbitMQ/RabbitMQProvider.cs:81-90 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQProvider.cs:81-90"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.RabbitMQ/RabbitMQProvider.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"6497d2a6c9e8c373da63160fae847e96d4e573aac3bc947b3b59ba845113cd6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/Foundation.Infrastructure.EntityFramework/Repositories/Extensions/OrderByIf.cs:19-28 | src/Foundation.Infrastructure.Mongo/Repositories/Extensions/OrderByIf.cs:19-28"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/Extensions/OrderByIf.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8318b0e762f2c3e4347fcc78544aa009ab4c54004e0039dbe817978a79800e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/Queueing/InMemoryQueue.cs:46-55 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:59-68"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/InMemoryQueue.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"8489c46f09657d6af47fbc1f3da690d0855814c70f24f0732fc1f6605a20315f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/Foundation.Criteria/CriteriaExtensions.cs:26-35 | src/Foundation.Criteria/CriteriaExtensions.cs:46-55"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Criteria/CriteriaExtensions.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3579cf068f1624cd3924cc480a67a35fe4aa817b91d48957388350ab6831f98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/Foundation.ContentTypes/ContentTypeExtensions.cs:8-17 | src/Foundation.ContentTypes/ContentTypeExtensions.cs:28-37"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.ContentTypes/ContentTypeExtensions.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"2267d8c59638bd0771962f615ab030c87cce1faccc37028042d3825b798a97bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs:153-161 | src/ServiceDiscovery.Application/Registries/FileSystemServiceRegistry.cs:154-162"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1843e1c4fa82e34f3b37d76e66aa791cca433a5d5791ddb1d6406aa75ce4b8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs:155-163 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs:145-153"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a788230b50447b4dd1582521a0324ee53007a8496eac38853f402d14f17798e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs:234-242 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs:225-233"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"4781c0aabd0490ad939fe25e89fabba1a91bde04685f8ffa0e2544fdf25c8866"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs:36-43 | src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs:36-43 | src/Authentication.Application.Web/EasyAuth/EasyAuthAuthenticationHandler.cs:29-36"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"2581e000f69ee992d75ca9cd7f2f8e9f631f3c2e916259b9f33172ffd24cc580"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs:56-63 | src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity}.cs:51-58"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/CosmosSqlRepository{TEntity,TDestination}.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee5d5b38e7e690ddc06d0851aeeceaf0f7cae8e5c150211f71e64e5b46095900"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/Operations.Application/LoggingOptionsExtensions.cs:23-30 | src/Operations.Infrastructure.Azure/LoggingOptionsExtensions.cs:23-31"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingOptionsExtensions.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"503e9f1e203fc7c40f1fc2290d17b6c7d6a24101a967f67636212da0717e32cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:87-93 | src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:98-104 | src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:109-115 | src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs:120-126"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"072648ef3419ec099b701e5c9991760a069ae411188077fa30d56f1b45e2282e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Foundation.Domain.Repositories/Decorators/RepositoryDomainEventsDecorator.cs:89-95 | src/Foundation.Domain.Repositories/Decorators/RepositoryDomainEventsDecorator.cs:102-108"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/Decorators/RepositoryDomainEventsDecorator.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d7a672d03c2f5d7fb64ccf5e9cbe06078c9082ea158909174a5812a79fd72c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs:45-51 | src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs:100-106"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d607ed99de872517198d017c55df0a73f1af1895a8576145112f49f9f275062"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Queueing/InMemoryQueue.cs:168-174 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:164-170"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/InMemoryQueue.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a67b08c84f275997916f48291123734bd6e8a04edbcae18717a5bf1597e334c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs:154-159 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:136-141 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:180-185"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc6952c44b8148724a80dd5909650af911c6e445003f042fe9100520fd692ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs:173-178 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:167-172 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:205-210"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"993cd73852a476bf7be80ba1e6dab84a9bb68c4c6da581493dff5bba0274f028"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/Operations.Application.Web/Controllers/NaosOperationsHealthController.cs:95-100 | src/Operations.Application.Web/Controllers/NaosOperationsHealthController.cs:134-139"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Controllers/NaosOperationsHealthController.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0979a0b87cb0d71de5960748fdb1012f62948044e6d84c94e41a6747217c55a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/Queueing/InMemoryQueue.cs:71-76 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:102-107"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/InMemoryQueue.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"06ce9ad222b9f3f508ae0909a597628ca9a2ba0562261bc2a0ca832fbb649ba5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/Queueing/InMemoryQueue.cs:93-98 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:156-164"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/InMemoryQueue.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d8b0118a116b0200b71c63a513ba237609e2b30bea1a535e429e54b62d8f0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): src/Queueing/InMemoryQueue.cs:103-122 | src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs:153-157 | src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs:134-139 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:179-183"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/InMemoryQueue.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"207d2fdb6da1a3e0d947336ffda5879515058975e0fec943e0c9d5fd228916d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs:200-204 | src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs:236-240"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"07cbeb57bedf359bc57a468c1d9c325ade3cacdbb814f8d1dad7f41363f8bb4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs:23-27 | src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs:20-24"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"642b5aa39627335929db63531db2261973daea716227c57d525270c5aee504b7"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project Application: Application has instability 0.89 with 7 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"81a615442b5e805719328a642bff0adce5fe2e2def73ce0bfa0ac1c758dc99ac"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Application.Web.Startup (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ac803f0f6c03a2f6ed534079ca42edb8ae8ef9c2ceba54f0563158d28e2b2c39"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Application.Web.Startup.EntityFramework (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b0d4bce62533fdfebbca27f7bc38bb823589f59ed4a92ad38375d23b1f288bbc"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Application.Web (src/Application.Web) (Application) references Application.Web.Startup.Repositories (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e608237954cbe84970668625bd14cdfb66bedde1e447b31013df189a38bfca41"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Authentication.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"31494ce232ff1d64090b7978160d307a1ec5fca8f0aa3cbdba0c801885fe760d"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Commands.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"477b9248dee50953443334d8c1766ad1a1b82bb85831af1c7ba3989f93b74466"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Commands.Application.Web.Azure (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2dbd514ddb36c15c2f19f7aefbcc601e8e0ba9c61d07a8874cc802e764998430"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Commands.Application.Web.RabbitMQ (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d0b80eabd1cd42f0f1cdfabadb396013986c1b37307101ba0ddb1d7747aaa399"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Configuration.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6523165b7cbb46894c1eb5017b6cc1831e0c1ed3db81ce262a836f5ad7695b90"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Application.Web (src/Application.Web) (Application) references Domain.Repositories (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2de1247cd7395e53f942596ab7d602b03e3b928fafd1259b392af0e38963e415"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Exceptions.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cf9d85f6697b7fae090b1ba8369a59ad55c45224d2b428cc1490b50ef5230e1d"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references JobScheduling.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"274432f53b9530eeb26898047a1f6c395af6ad49ec357229f44039666101f4c7"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Messaging.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2942d655784e95a45f7e0319d274c2cc43a595b248e63f749324e7a3f1a084f8"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Operations.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91bb08a732ffe63b72b7af0ef478b21ec0c05e4afcb051fb7d057ddc8310a967"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Queueing.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dbab5c21242924c1683afc31060cf71b6f56e056d28fb1028aa9ea4a751ef6e7"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references ServiceDiscovery.Application.Web.Router (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"63878e62b1afdffce00f77fa9da6969f136451242098021140a540b3affd7988"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Application.Web (src/Application.Web) (Application) references Tracing.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8cb6c99f84911e0828a7a2e5c291895ea0a58ceebca87748cb284ff0cd162676"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Infrastructure \u2192 Web: Application.Web.Startup.Repositories (Infrastructure) references Application.Web.Startup (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"25e8105d56986c37bdf3c1ef6ac9309d288528109932382d5e626f2d0f55cd9d"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Commands.Application (Application) references Configuration.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5246ba22d1585bf9b9f9da8dd402b00fadb783f41b0c40e92f9eba50e557da59"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Domain \u2192 Infrastructure: Commands.Domain (Domain) references Domain.Repositories (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"452c03c283b35acaacfa56c5093b4468e2f234bb0321ec2de634c5a3578097c8"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Configuration.Application (Application) references Infrastructure.Azure.KeyVault (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2b00e5c620be73f9f85b5d1c20223ca9575776a05df407491f6890efad7d58b6"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Messaging.Application.Azure (Application) references Messaging.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e5f87303200d379e8edcbce68d589f6379f461ffc70cbec3ec465f1a0192b99f"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Messaging.Application.Azure (Application) references Messaging.Infrastructure.Azure (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ef7cc7eb4f8b4d3b9487b8548c6f9e48aa37ec20c2c84503c21279f63aa20206"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Messaging.Application.Azure.SignalR (Application) references Messaging.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91d9f6a64579312dd4889d04c6ddc78f8dceb2c68e1f4487526cf4028362aa58"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Messaging.Application.Azure.SignalR (Application) references Messaging.Infrastructure.Azure.SignalR (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5a57bd840c6a8f52bb5d3ef62d7e077dd9903c11b462458f2fb3094c587f1534"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Messaging.Application.FileStorage (Application) references FileStorage.Infrastructure.FileSystem (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"231877f2d11fc8b3717d95b9733f9aedc28d1a7f0b7ccc517f42f6ec25004c19"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Messaging.Application.FileStorage (Application) references Messaging.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"73512f52d81feba8223db2ac940a6f848329464137aead60710d7e3ce8b33037"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Messaging.Application.FileStorage (Application) references Messaging.Infrastructure.FileStorage (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f3a7c45f5e8a953f09bb672845e0ea0316386c8deba7097a0de7a1900c6ea518"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Messaging.Application.RabbitMQ (Application) references Infrastructure.RabbitMQ (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"90f5c38d6ef640fac6d23fb9ad4300de5a4ade39eff1399c77eaf50f62049985"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: Messaging.Application.RabbitMQ (Application) references Messaging.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7b2154fcf247231b234786d566a61a1a7563b4aba73fb7273ea0e9f18369ab83"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Messaging.Application.RabbitMQ (Application) references Messaging.Infrastructure.RabbitMQ (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"317a9ed8299de1e20691252829860a40b5415f165d668c85db03d00e1d6b2530"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Domain \u2192 Infrastructure: Operations.Domain (Domain) references Domain.Repositories (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"35f83745a3ba39ce8b6891e7dd49471d7ff591c98fa138368e87c0530767e2cf"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Queueing.Application.Azure (Application) references Infrastructure.Azure (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2f1ab9e662c9e45dd494fb799fcccc6c00a4ac0faed7fe9d1f0bef4f56dc958f"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Queueing.Application.Azure (Application) references Infrastructure.Azure.ServiceBus (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"42704010c2dc3169dfbbad467dbfe3b6e055568f9dcdd177c9f18583906b2a5d"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Queueing.Application.Azure (Application) references Queueing.Infrastructure.Azure (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"308689c3919fe4921a187a61f7392d1dbb748477b92c0b49ec25c0ca74162fb2"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Queueing.Application.RabbitMQ (Application) references Infrastructure.RabbitMQ (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"152bb14146e92ff998657389e6612eaf80ce17ea219a6ec336aceec005c7de1c"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Queueing.Application.RabbitMQ (Application) references Queueing.Infrastructure.RabbitMQ (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2c68873f74150adf9117507e70d4ec38ee2c09cee19fe4943b829650e288548d"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: RequestCorrelation.Application (Application) references Configuration.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"301adfdd1a85f1e399192c0ae49db724f3b62977ab0fee7bef4891af8693c454"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: RequestFiltering.Application (Application) references Configuration.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"baaf71c009418adb206a1d27b5fe2d68d414a2cd85300d36a985d56e73cd00d6"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: RequestFiltering.Application (Application) references Domain.Repositories (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce1afd6678beba2d2d19eb6df537f088e1ae61f674c03371071abc7d87809e18"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Web: ServiceContext.Application (Application) references Configuration.Application.Web (Web) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e26de153f7248487e1a2c25002a526d984afdaf7301336b23f691b61e10422ca"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Application \u2192 Infrastructure: Tracing.Application.Zipkin (Application) references Tracing.Infrastructure.Zipkin (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ab3637342df3520840180dbfaf741209e9dd7bd061409bd100d74a68d48a7cf5"}},{"ruleId":"D5","level":"error","message":{"text":"Layer violation: Domain \u2192 Infrastructure: Tracing.Domain (Domain) references Domain.Repositories (Infrastructure) \u2014 dependencies must point inward (Web \u2192 Application \u2192 Domain; Infrastructure implements inner interfaces, nothing depends outward on it)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"eae2e9e41cec9a00ddf1d0e944e1ba479f38b2017480eec7273c25298b441257"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Infrastructure.Azure: Infrastructure.Azure: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c97312eb7b59e4147d68360e50fd7ae4e1e8def28d4a65810ad58da1abe5acc9"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Extensions: Extensions: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f710f135a206ca54332c9f6eb3082cdd4528d763251933c9c729d4bf5cfa208f"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Encoding: Encoding: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"984e76c427885cc4ebc6ddaa3d819eb0ab6bd60277fd43b95f755d8478c92ac6"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Infrastructure.RabbitMQ: Infrastructure.RabbitMQ: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"20ca02a772ecc738d66b0d1071b0b401269fb5a894a3a74a14ed14187bdc8c31"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: ContentTypes: ContentTypes: abstractness 0.00, instability 0.02, distance 0.98 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"53feeec1e725a1d135e1708ba3d8b449bcc0cf5f35f213d276acf2879e5f4d87"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Resources: Resources: abstractness 0.00, instability 0.02, distance 0.98 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"45ff5e09106c91ae7c29ea3a39a515dc31d8f4acf518e61ec2256f446f985871"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Logging: Logging: abstractness 0.00, instability 0.02, distance 0.98 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c84801a015d8be444fb4752502db1d60df57988001132c50fe9e40f4a9fe8730"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Infrastructure.Azure.KeyVault: Infrastructure.Azure.KeyVault: abstractness 0.00, instability 0.04, distance 0.96 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"159af1412a1e29ba15c9f9cc5740ad489502940b1e4e183c2aa06e79435b099a"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Utilities: Utilities: abstractness 0.08, instability 0.03, distance 0.89 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"db64ca287e506469d336b5aabdd2b4a5f963adc0bad7a59a4f9d361efbce80ca"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Serialization: Serialization: abstractness 0.10, instability 0.01, distance 0.89 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dbb209ef9c80af5ddf335438ea0c5f156eaffef9d4c8a2301b846c9bab124eed"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Abstractions: Abstractions: abstractness 0.11, instability 0.01, distance 0.88 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2f21ef776938e1b8fccb4c2cb0c69dcd383277cbb362644ab13dcca900c0aa41"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Console: Console: abstractness 0.10, instability 0.06, distance 0.85 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d6b4a9bfd6bf50e38a815cf991d121f1746d8c22178b09359f1bb02ab0d4e75e"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Configuration.Application: Configuration.Application: abstractness 0.08, instability 0.12, distance 0.80 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8d1612e54561c00de8075ffae92369ba0120bc784a3c923aac3f43d8170279a6"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Domain.Specifications: Domain.Specifications: abstractness 0.11, instability 0.10, distance 0.78 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f22a65684e5f2573a5d39c42593f69d46f6f952bcad9cc6d7090156ece974149"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Infrastructure.Azure.ServiceBus: Infrastructure.Azure.ServiceBus: abstractness 0.25, instability 0.00, distance 0.75 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"04ea4b9e36a4a74a9fa8f0acf781eb5dd9adecf6c6e896db02d5e35d64705be3"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: Criteria: Criteria: abstractness 0.00, instability 0.25, distance 0.75 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"247037f12c518fc2afe50fbe7654de7065dc0aa62554f566e769fdef1f194d5b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SqlBuilder (LCOM4 11): SqlBuilder\u0027s methods form 11 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4d3ab3319d3eac057f0cb1d52cb6997df710ea3ea3362e4b67a9801ead3fd6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Node (LCOM4 9): Node\u0027s methods form 9 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Node/Node.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"21481a207605cba46bab77143e2a8560b35b3435bbf1779162803d448f560562"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Span (LCOM4 8): Span\u0027s methods form 8 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Model/Span/Span.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e9705f98c97c4f28081c342b4efef8f5618649008cf774325027799c3a3764"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SqlServerDocumentProvider (LCOM4 5): SqlServerDocumentProvider\u0027s methods form 5 groups that share no state and don\u0027t call each other \u2014 a sign it may have several responsibilities. Review whether it splits into focused classes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a7e0c036fc9ae61f7b8fd2c6616f004b5901bffbdab6aeb760e5e5ccc2da857"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: MixInObjectInstanceTest: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Utilities/ExpandoTests.cs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"abafbf6b10f23134d7bf1998ceb699b8b28446cc2d4c6d00d7d3b9fd0c7a3b57"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: CanSendInvalid_Test: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/IntegrationTests/Commands/CommandRequestTests.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e920617bb15c932aabf26a900c78a0ccd7e47c86434ba8cdbbae58e08783e3"}},{"ruleId":"D11","level":"warning","message":{"text":"Test reliability not measured \u2014 no test run produced results: Test reliability NOT MEASURED: the test run produced no results for any test tier, so no test ever ran and flakiness could not be exercised. The cause could not be attributed, so it is excluded from the score rather than read as an absence of tests."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7d83a505f7fa19aeeece76141ae1e468d77e2a3fea2e88604b8140ebad47a6fe"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: Newtonsoft.Json: Newtonsoft.Json 12.0.3 \u2014 High severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a744b9e0ad51e96aba7d74c7496514513b657cdf1ac401bbc56d2579f0010543"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: AutoMapper: AutoMapper 9.0.0 \u2014 High severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7ad907f4096422e42924a00fab6889d83782c07f3031eeb825e84a391fcadb56"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: Microsoft.AspNetCore.Server.Kestrel.Core: Microsoft.AspNetCore.Server.Kestrel.Core 2.2.0 \u2014 Critical severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c22a2bdd31dd1d15443607926238c2b8d923cbebb88fa7981e98155c8bfed33"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: MessagePack: MessagePack 2.1.143 \u2014 Moderate severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6b02d665c21fa33f74e5905b5ee9672e9ec1a3d5e17130410ffa3f21291e68fe"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: SSH.NET: SSH.NET 2016.1.0 \u2014 Moderate severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"18e3ced6e6a0004d5fba48da64a3bbed9de25aabf92d8b4bc311a82aa13c847c"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: System.Linq.Dynamic.Core: System.Linq.Dynamic.Core 1.1.5 \u2014 Critical severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"fdc9a534f614694e38b09739a6d660eb76a513f6b819895dad11422b0a2a2a4a"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: System.Drawing.Common: System.Drawing.Common 4.7.0 \u2014 Critical severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f069cad3143b529079c327da36934c16176e4850427eb76a8e4c1b5b9e6663dd"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: System.Data.SqlClient: System.Data.SqlClient 4.8.1 \u2014 Moderate severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"60c18bdfb9bcb0c9e6645ce9a6a2dbec1c036f361f6e3e38e9fa51fbdebad14f"}},{"ruleId":"D12","level":"error","message":{"text":"Vulnerable: MongoDB.Driver: MongoDB.Driver 2.10.4 \u2014 High severity. https://github.com/advisories/[GHSA redacted]"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a76fce3ea8c12702d42f548fa93ce717c9d878486eaac09e9c1c0b1d862f1fa"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.CodeAnalysis.FxCopAnalyzers: Microsoft.CodeAnalysis.FxCopAnalyzers 3.3.0 \u2014 Legacy Microsoft.CodeAnalysis.NetAnalyzers \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cbc03a3474caca0895722c0941bec2eb2862be6fffe1d98ab7d0ce6763afebf8"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: SecurityCodeScan: SecurityCodeScan 3.5.3 \u2014 Legacy SecurityCodeScan.VS2019 \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8c1323bb7ea4714e13f7d4a7ddf4add7f654284537452e2f73431beeef1e2696"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.AspNetCore.Mvc.Formatters.Json: Microsoft.AspNetCore.Mvc.Formatters.Json 2.2.0 \u2014 Other,Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e776a341bbb739a00f176474e98f31507223bfe94f354bf3b489e48892ecfb91"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.AspNetCore.Mvc: Microsoft.AspNetCore.Mvc 2.2.0 \u2014 Other,Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a99213a55d0bf26f9cb4256cfdeb44dbc489cfaf4f9937e8e93d5d6b38c5b542"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: System.Text.Json: System.Text.Json 4.7.2 \u2014 Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8a6a65526e46fb8d8813441732af55aa62711bac9f9735a45701166739cfdf08"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Azure.DocumentDB.Core: Microsoft.Azure.DocumentDB.Core 2.11.0 \u2014 Legacy Microsoft.Azure.Cosmos \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cc8b21286bd481b119d13195734b7e9f2b22e3995d4082b46a67e973a24f1f42"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.IdentityModel.Clients.ActiveDirectory: Microsoft.IdentityModel.Clients.ActiveDirectory 5.2.7 \u2014 Legacy Microsoft.Identity.Client \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8c89d77d5bea86f7b74e690ce3098c9712e96449c1580b758f1f9c9814f2abdc"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: xunit: xunit 2.4.1 \u2014 Legacy xunit.v3 \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d37c8c0e8046c9e8358e976373216abfb78e9fdef63ed53d3edcaa7d2238edcd"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Azure.ServiceBus: Microsoft.Azure.ServiceBus 4.1.3 \u2014 Other Azure.Messaging.ServiceBus \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1d706af43c006ef40681a14d2ef0266d87c2f1009544fa3440cca61f0395082c"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Extensions.Configuration.AzureKeyVault: Microsoft.Extensions.Configuration.AzureKeyVault 3.1.5 \u2014 Legacy Azure.Extensions.AspNetCore.Configuration.Secrets \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"364e067d42cfae4428d3919e48fa29c202593ad58555055998b989f6782b67bb"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Extensions.Configuration.AzureAppConfiguration: Microsoft.Extensions.Configuration.AzureAppConfiguration 3.0.1 \u2014 Legacy,CriticalBugs"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"aa5eb5fb2434cb369459174329b4d95520c99d1861d1bf5ba4724157a2ece13c"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: EventStore.Client: EventStore.Client 20.6.0 \u2014 Legacy EventStore.Client.Grpc.Streams \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7a547aa5c96ec8f0a0722d1a65dfaa1db3d67a36021ec4b877dec496d666b708"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Azure.Management.ServiceBus: Microsoft.Azure.Management.ServiceBus 2.1.0 \u2014 Legacy Azure.ResourceManager.ServiceBus \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e5df92360fa91ae752472ab581e3cdc79c280a75fdbd7d542c2e80d5f1c0963b"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Azure.Management.ServiceBus.Fluent: Microsoft.Azure.Management.ServiceBus.Fluent 1.34.0 \u2014 Legacy Azure.ResourceManager.ServiceBus \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"22d7c4b9306d6c377fe78c7658efa7125bd6152fb195d16b8fdbbccef8e1146f"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Azure.SignalR: Microsoft.Azure.SignalR 1.5.0 \u2014 Other Microsoft.Azure.SignalR \u003E= 1.33.1"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2aec20fba875f23d8f0a390929522c47a8c800c48fdcae8e932f9da0e084ab01"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.AspNetCore.Authentication: Microsoft.AspNetCore.Authentication 2.2.0 \u2014 Other,Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b49e745b49ea85b5a7653dc1d704bf2677c6d5516388c50ecf50484a32fc3a98"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: ProxyKit: ProxyKit 2.3.3 \u2014 Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"51f0c0bb0596077e9002ff8842f6326c96c86bd4e619a3b8f864b2dfe7baea8c"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.AspNetCore.Server.Kestrel.Core: Microsoft.AspNetCore.Server.Kestrel.Core 2.2.0 \u2014 Other,Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2868c93ce743b69253d4325a9b374f69154d53ce6c3672f90195c81258b1b861"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: WindowsAzure.Storage: WindowsAzure.Storage 9.3.3 \u2014 Legacy Azure.Storage.Common \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c8c970b3280cf0480db7b1fa101f2b0ee3ab17bbbf2bfed50b3248ffa919621f"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Serilog.Sinks.AzureDocumentDB: Serilog.Sinks.AzureDocumentDB 4.0.0 \u2014 Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0fc73673eabce646543e54771d93b6b18075d76f2b7c278b550e83ea6bc43fe9"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Serilog.Sinks.Literate: Serilog.Sinks.Literate 3.0.0 \u2014 Legacy Serilog.Sinks.Console \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"775644d328bd9371fddd6a5141c1be51b726356449030de760c6297178491e1c"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.Azure.Cosmos.Table: Microsoft.Azure.Cosmos.Table 2.0.0-preview \u2014 Legacy Azure.Data.Tables \u003E= 0.0.0"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a1d40ea26f615e0261e59712878d67339f65fcfedac95046a820c17fd29c610b"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.AspNetCore.Http.Abstractions: Microsoft.AspNetCore.Http.Abstractions 2.2.0 \u2014 Other,Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ab239d92a1ed0e780896b6b47df6648aa988d7c5c2e552fd20a0b8d4943c6f81"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: Microsoft.ApplicationInsights: Microsoft.ApplicationInsights 2.14.0 \u2014 Other"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"266160f474979404506e027f625e1305ff6091cd34b9b27c01339656c92a6174"}},{"ruleId":"D12","level":"warning","message":{"text":"Deprecated: SqlStreamStore.MsSql: SqlStreamStore.MsSql 1.2.0 \u2014 Legacy"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5e84ad383fc8777dfdc5e92e3840fa3ae8d06a9a6012152911a927d188c22ded"}},{"ruleId":"D12","level":"warning","message":{"text":"Prerelease dependency: Microsoft.Azure.Cosmos.Table: Microsoft.Azure.Cosmos.Table resolves to 2.0.0-preview, a prerelease build. Prerelease packages carry no support policy, may change breaking between previews and can be unlisted \u2014 pin a stable release before shipping, or record the reason this preview is required."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2ca425487069b722e762a8afe9b3724a3d730bcd25c2d366bc9be2b22729872e"}},{"ruleId":"D16","level":"warning","message":{"text":"dormant codebase \u2014 no living knowledge left to concentrate: All 45 significant source file(s) were last meaningfully changed so long ago that no living knowledge remains \u2014 nothing since has been substantial enough to re-establish ownership (a broad, mechanical sweep that touches many files shallowly does not count, and neither does no activity at all). There is no concentration to measure, so the bus factor is not scored. This is not a clean bill: nobody currently holds working knowledge of this code (see D34 Knowledge Freshness)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"569d55ea5cb0330f13c125b289d07e5abdfcceac947a2c2645277937942e7d5f"}},{"ruleId":"D17","level":"warning","message":{"text":"BareSuppressMessage repeated 90 times in one file: The identical BareSuppressMessage (\u0060System.Diagnostics.CodeAnalysis.SuppressMessage\u0060) appears 90 times in one file \u2014 one decision applied repeatedly (e.g. the same rule silenced on every overload of a fluent API), not 90 independent debts. Decide it once \u2014 at the type or project level, or by fixing the underlying pattern \u2014 rather than occurrence-by-occurrence. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"GlobalSuppressions.cs"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"281b36d8249818d5f4ff44e7190be5292e6c71c77a54638364554eb5d6e10025"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosGenericRepositoryControllerBase.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfa1be9d44d12b238363fdd9035f5e033e3f28f148de6b7aae3bd4934de51fec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosGenericRepositoryControllerBase.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f777189a28dcf19a69d0cee56bc87a954435cfc69d7c290cc0bad2daff4cde90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosGenericRepositoryControllerBase.cs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc3325c106584f1e7e60da647c301a326dcdce750ce99b64757a4afa6cdcdb39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosReadOnlyGenericRepositoryControllerBase.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee6d2d30ea1da2a1a2337e622b27f5a6ad6ed084c5af9543c14bdba5ebabbf32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosReadOnlyGenericRepositoryControllerBase.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4141a80606c746c09e91a917e94fd62e09ace6c8980706899679011ac548520"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobRegistrationsController.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe46d751663f0da64fc1e8c3835c5dbcaa750faf3ded57a9b333991965d096cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobRegistrationsController.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d31793033279aa2a072086541bc9ce4b58ea43aedf80cea221e1021e13d1aec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobsController.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fea3de5edceacc97e48626473c84650108f6540562b9ed4d58c45b34842fd42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/Controllers/NaosServiceDiscoveryRegistrationsController.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c2dfff4f37d5c8bcfd40fc480389ec8663cecec3209618e284e584779c240d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/Controllers/NaosServiceDiscoveryRegistrationsController.cs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5851b6d0209d289ddbef28c931af5e44d1117412675d543831a395ffb980bbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/Controllers/NaosServiceDiscoveryRegistrationsController.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaef80a19393804f35325cf83568d2a233b1fddc99fcfed29cb2781908755833"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use 2.2 conventions https://blogs.msdn.microsoft.com/webdev/2018/08/23/asp-net-core-2-20-preview1-open-api-analyzers-conventions/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Presentation/Web/Controllers/CountriesController.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"035d08a623634a39864a65ef6c26cea4e19a0cc0103b64b933bb55388c7989ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosGenericRepositoryControllerBase.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ed4118a8174ce772536ee68327273e2368126ba37ab5870e3eccc9f42361ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosGenericRepositoryControllerBase.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9698155c2052efef6b7e5ba952094bd26c5bbe8bcf1115d0d4961f3221e1e97e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosReadOnlyGenericRepositoryControllerBase.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e2ca3eacd3d48800fb7ba3839e9f2acdbfb09015725ae3de8cea4d81482a43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobRegistrationsController.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75da09490b6af7e996a1dfbe185f77e06c20d3eb264fcd106d822406c835c30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobsController.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b5dcb667b6efbef04089a5fa27afeda080c386e793005031146f4b4d383286"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/Controllers/NaosServiceDiscoveryRegistrationsController.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd62918f1bbc3a68c43074c7920899356abd40c411be7b0dd0dafc62dc66343"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: throw notfoundexception? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Presentation/Web/Controllers/CountriesController.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"04582077eaeba7ca9d3ab611a4edb71719312a327cd3df5bfa0041efee0f180d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: better happy path flow https://www.strathweb.com/2018/07/centralized-exception-handling-and-request-validation-in-asp-net-core/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosGenericRepositoryControllerBase.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ce307bd7f0a6f1957aa1a5accf3180e7943699a192383ca9b7fa171c37c446"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Controllers/NaosReadOnlyGenericRepositoryControllerBase.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2e1e49b85bfeb51f76df48685c5d33670f345657a0800ccc6ef00e4eff83ac"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestWrapper.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e55b2366dfe6d7637ea12e4eb606308623a7e3da8179401207f71c2810bed05"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestWrapper.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"f65512bd815643f51518e0ba0aded90ed65323e1716283364df3a46dcdf0ad1a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/NaosExtensions.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e1281abe33c01e39ca5df732a3a57cf01cb37f8e4b702eec00735656c984876"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Extensions/HttpRequestMessageExtensions.cs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"0591ccd83f39a1cc36525192e36755c328d70bb3451259195dbd08d2889aa005"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories.Documents/DocumentRepository.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b77fab79a5f40a601b74b8cc1d4bb31cb4a77a7739e62414fc9718729643b83"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/IsNullOrEmpty.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b8ab3dd4bd2eb469a97c1c1ab85329bd16b3b8a3aba9bf0860a72af14419b8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/TryGetValue.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b569745f88ec8c28808b7b8ad8514871a711a5e69ddb0298afcc2e1f8a3eeba5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64688de5fd6e9979ce2fd08f8de41ac4f60c99ee4cb2403c946434631eb1151"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e8285460336313f712892bd6cdb5491d19802878da8f0c391ff5b0676c742e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc1aeae57768ecb6bd4c975ee12a9a6885a010206053629db5af28f411eec68"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96fdd9b2e6e3e9fd4d8b117cfa5f5101362331b753664159c8e88c938428b29"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Controllers/NaosOperationsLogTracesController.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b3787e73e6affbc846151a95720d728a9d61f9e5fb8b76626893a2cdb406ee"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingFilterContext.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"11eef3d75d7d6d205a9a4f252bddc600cdc3f5056f6668d5ce116b5ccb3e6a66"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingFilterContext.cs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f9fc7a217ffabcc1a32ce1c567ddf07c64d7982d6fe70670951c8cc7844170"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application.Web/Controllers/NaosQueuesController.cs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b51d684f06a27801eb3fd8023731fbb1212c96c81f49c61bd46358de6b370d4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ddeecf7aa49480045257d166163557071f5094b31612bd71a7ef9790c6406c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueueOptionsBuilder.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"50cd4c90ade3e0cbfed86cc36fa1cafc2b6a633a17a3e5658203ed5053e5d8af"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/EventSourcing/Repositories/EventSourcingRepositoryTests.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb25af6a5c7ed266632a5016d9ff8123ec4bb524ab8e84163e6848f66bd733d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12fa4646c656dff923b5cdd4643492fb16078639b2dc19ea1e38dfe871cf7b3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Catalogs/Infrastructure/SqlServerDocumentProviderTests.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"768a4d80e48eb125808f7da55648c0cdbe02a72fc18d6f6c73526e34632a568c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Domain/Repositories/OrderRepositoryTests.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"eebcf11587a5100de4e173eb2f0e94534283cdaca027ef3d270c4a1f4a4ae393"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Domain/Repositories/OrderRepositoryTests.cs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e69a3402072b4516caf20c8802aca2af0d24ae3ea2ce5f73e844bbe7a613fc0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Infrastructure/CosmosDbSqlProviderV3Tests.cs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"1486a5cdb2881ed4f2643d0da62dc5af71d3308ad2536bc955791d6a03250cf9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Inventory/Domain/Repositories/ReplenishmentRepositoryTests.cs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"31538452682d8e2ff593eca7a5534aa270893d72524c884bbc2f1e133ee9c223"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Shopping/Infrastructure/EventSourcing/EventSourcingRepositoryWithEventStoreTests.cs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5dc4a7a49c4a6ccf3c252656d07d884eda359b79240e49fa803f3fea01b5854"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Shopping/Infrastructure/EventSourcing/EventSourcingRepositoryWithEventStoreTests.cs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa8b9a1ad21c51c2f244cedbe6a87b119c15807a11eaa9a32f90b0ce094f861"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/UserAccounts/Domain/Repositories/UserAccountRepositoryTests.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"91489adea4d69ac842a9847a5c3a5ad90a87bc01e21fd95ced8107e5c4487580"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/UserAccounts/Domain/Repositories/UserVisitRepositoryTests.cs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"e53abbd093f89bd70e36e9a1a912e3f56c7510f2e3285f9558b78b368f839fff"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesExportJob.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef3beec1b2ea5c295d228f006201b4d4e475404b282fa1becf4343d1c1823609"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Application/Commands/CreateCustomerCommand.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ca7d07f666687c314bf412b4b8c9db88ecd3952120fa4182162e633834373f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Shopping/Domain/Events/CartCreatedEvent.cs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc1bbac00681c45a5997a1466e11233af221fa0ef6db71fb16a828fe2147d56"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Shopping/Domain/Events/ProductAddedEvent.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd2ea4e56c983a3fad2cc7999f2b434bc11f8b6315101bb9c4db11d7902dbd0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Shopping/Domain/Events/ProductQuantityChangedEvent.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb79984fc507eb247b7aa2cd754e0256075b2e05589bdd4a832da8794ae61b6e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/InMemoryFileStorageTests.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e018214ddf8df17d26ecd55357023b13386b924eb1632e60e1943deba44a3e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/Infrastructure/AzureBlobFileStorageTests.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"33618dab5c9b2758dcb73c9683554e35c7cc3d617d6de44e8535ca4dafd18d4d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/Infrastructure/FolderFileStorageTests.cs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"497cf1dad57989246a8afee51e30fc81c69b6ba850c43d85ed13fdc654bc3c55"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/ScopedFileStorageDecoratorTests.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0730647f9c46f0c95cb6c02f5496f15469f0b60191a9df6c77e54ecc5402fc2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/JobScheduling/Domain/Model/JobTests.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7eb4102fe2bbe11c72b573a0ffe683b14f85c4521cb58e9f8b27cd8c81aa2b2"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/KeyValueStorage/Infrastructure/FileStorageKeyValueStorageTests.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"805bb9b7dddc8e99eecaeee91ee0f6adbdb31370332c3f834867f3a2127bc9ed"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/KeyValueStorage/Infrastructure/LightningDbKeyValueStorageTests.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81e243811e86b60571b694932ff0a32fd6a0fe44da8b8331d5b8f5790e27a80"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 4 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/KeyValueStorage/Infrastructure/LightningDbKeyValueStorageTests.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8647f9c2f0958645e57c3a670c389919eb2d6c52526e26c0a0757b0e23389db3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with .AddOpenApiDocument, but currently has issues with example model generation in UI \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/NaosExtensions.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32dd1e0f5c5be0ae1fb41f9dc3fcd9af8171917445d51c53091604f1583ab4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: AddNaos.AddSwaggerDocument() ^^^^ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/NaosExtensions.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cea6891f6022607a099d47c57b4f32869cc49bf38df85c9bde847522529ffce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also allow the auth header to be sent in the querystring \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/NaosExtensions.cs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d7ac0930cad38a9f393708d5f5a545b0e66eaebbf3def73fb995a3ce3b597d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also allow the auth header to be sent in the url https://en.wikipedia.org/wiki/Basic_access_authentication"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/NaosExtensions.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"452eba660a42908b63e9b2a18fce6f1fd79a5d01b3754eceb3cb7cce1ad34c44"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/NaosExtensions.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"17cbc5e6fafd71b435185cc90b42d145cb5aa763bcfedd3053622191192c8225"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/State.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"869c9ca4df9271223f4ae9fd62dfa9cfd8f098b786bc2e98fd369aebbb0a3a29"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/State.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f614cdbd4e02f21f84458db983f668338941e3c72b3d0585fc5d5a2a1bd488d"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/State.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84a8846f6c6aa78a51320f5240aca26ac01f45cee5af93aab15b0e90c9ba379"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/State.cs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"634aa7401aa0aa9a131db4ad4c946b3e76eb6aecaa244f0cf318aae7fc40588c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/State.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d472a90b7de03d65ebdddd504a2598c21b79c6152b4a6fb4184142969b8297"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/State.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d02255be8e4ec343fdbcabdbc6faa7b3e4bd1279fe742cfaa4a9febbec659f4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c60ff22e0552636ee2bbfee485cc64c63ae3ed2c70c74257dcb78eb4c59d68"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Node/Node.cs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"32895b3e24ee6d33ed8a191df601d2800134a22da7d690b5740da8564b00324c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Controllers/NaosOperationsLogEventsController.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e526efe2240259f111e8544434a349e374cadaa802378bc82a370ba8f1da71"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Controllers/NaosOperationsLogTracesController.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"b24cd7fbbb4d267005ef38aa4abf9b50305a6bfab7c422ad1a4e45d7c23ae6b9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Middleware/RequestLoggingMiddleware.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"03da196c65afa7845743ed093c0820964fd98742a78c32adcbf7b34870f5d42f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/Services/LogEventService.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5501da1692ff1eddb73e64e5a83c6d86e7596580f40df7192248fc979fcbcbd1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Infrastructure/CosmosDbSqlProviderV3Tests.cs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"994526c2b95d03d80d1a10aff370a0c1b893a908d179d67760608a289fdac819"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Infrastructure/CosmosDbSqlProviderV3Tests.cs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"e118c71972841f13b8dbc85820a5cfd6761c0381a64073690de778ec0cd15d4f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Shopping/Infrastructure/EventSourcing/EventSourcingRepositoryWithEventStoreTests.cs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"de711ce09834a3667fb1c86b2d61f25eeb09d67bfcf4959a6d748b8e23bace95"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Infrastructure/EntityFramework/UserAccountsDbContext.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce7e98185396de396dd830e60f5e1ad7c33860d5bfb315ec4f3bad5ab720640f"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 5 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/FileStorageBaseTests.cs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a31b6ba2aae2f8576098ed42e917e5f90aecc1d2739235759638efe56acf892"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"17ceb3498c8b6b9006f837fc3ff6c82deafd91eb1daa1f5874367a1411b37fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f1e8d7a4d7e24f753e000e3532d85ed4bf50a3e34568f50bcefd71fa0f9ea1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1a4dca7b8161f5fc5e6da8666cf422e7feb11f3f5ea8546f151d704ee8958c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Serialization/Json/SerializationHelper.cs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"58305bbb452c344db0963b6e286e2405efe1475104a4bb7a7a7f2b590c731cc5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expando/PropertyBag.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86a410063611150b9ab77cf91ce9a5b815342dcc687f3fd4c78b7fb9f34a8de"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.FileStorage/FileStorageKeyValueStorage.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd4310024e4118e50fc9fe28203f9275852e7418cef9bc60a304e40ca96bb40"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.LightningDb/LightningDbKeyValueStorage.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc5c1d3e78abbe6853f735c85d044fb8cc6ade2ad630cb59861ddc899bde157e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b60361bdd0312c82f303b2d592ba2f73f6546ec943792ac1b7f100df5c382a9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/UserAccounts/Domain/Repositories/UserAccountRepositoryTests.cs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5d5a501deeac1849571d36d4df662988c4de028c8050a825e26f4a590597268"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/UserAccounts/Domain/Repositories/UserVisitRepositoryTests.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"28daae31741d3b1cf4ee1cc6dd46ed21ca4ba98d921173011f519625f9998da1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 6 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Presentation/CompositionRoot.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c5bd4e49dbbc3a20fee0a7f2c150b3c0212fdc32206db440de48edce3eafde"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable SA1008 // Opening parenthesis must be spaced correctly"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApiKey/ApiKeyAuthenticationHandler.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaea55ec08a34045d05dc9108751dcac8d6439b3c162e99806b4d1ec6960c1d8"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable SA1008 // Opening parenthesis must be spaced correctly"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/Basic/BasicAuthenticationHandler.cs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45c83609bb4c7c3c4fa41606d3ed416547616a2ca360638100b6b89da1f001c"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable SA1008 // Opening parenthesis must be spaced correctly"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"71dd63069b472b7a2e2c67a7294e3099c57a58d3d0cc578cd93dd7c0305bb619"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable SA1008 // Opening parenthesis must be spaced correctly"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0993742fe796cd23d905de0363dc542a3bc38be9f575cc5af89a2be515bf97c"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable SA1008 // Opening parenthesis must be spaced correctly"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity,TDestination}.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8ab47b20a85c9ba50b8f323cb25c9c48dbac3bb750104f6c452d5015f994b60"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable SA1008 // Opening parenthesis must be spaced correctly"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/MongoRepository{TEntity}.cs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef01236693dc391280238fb6eee0a33fd43575831d225243d46fc2527382766"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: register other middleware for different authentication schemes (easyauth?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApplicationExtensions.cs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb521db2bee68a1893169b631b585e5f919c782df8a3991d15712d4facc75c3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: register other middleware for different authentication schemes (easyauth?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/ApplicationExtensions.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"01224c420cde46cbcb218c2133f5896678579c8f861a34663938323430d75fc8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/NaosExtensions.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e535cfae33a844e73936acccdf910ad0320c1d2b5e8fd315c83948f56be100"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 11 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Specifications/Check.cs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f5afd830ef0a1d2706013967ac7d828a756fa4c0e4ef882351fa30f80efcd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ignore for now, or throw? \u002Blog \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestDocumentProcessor.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20d8b395b11219e096089824c33eb9ea76a96966fb9bf18e7973f65105ae577"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ignore for now, or throw? \u002Blog \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/Middleware/CommandRequestMiddleware.cs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa17ba59a44aa38feade7b60b885f34c93febeae605623dd9d38474732492353"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: does not work for child objects \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestDocumentProcessor.cs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86c67f8dc41d50adbe291e59b1247e065f806f9182596a45c00bd47e820ff06"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestDocumentProcessor.cs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ecaab520eb4cfec44d59e04189dd61c037581406b3a7261392e4ab8065ed2f4"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/ToEnumerable.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a4885bc0a4471a8cf6999b819bf2381d875b7c53f06b7fab1fa1568ccf2bb6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application.Web/Controllers/NaosQueuesController.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"355df0be957e82ed7c45a653d363eadc8681284b04bbb2210491baa827e4e228"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use for new tracer scope request.Item.Data.ParentSpanId \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestQueueEventHandler.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"978d42ef7b95ecfae9c9966ed4b7cd5c2bf5e05d1126d75fb5288cbebad9f763"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable repeated across 20 files: The identical BarePragmaDisable (\u0060#pragma warning disable SA1402 // File may only contain a single type\u0060) appears in 20 files (20 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 20 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestRegistration.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f6e81a60898eea3ebd1618ef2ac4bd02765cf126b66ce36c76fbc3409599ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: what todo with the routeValues, copy them on the body object? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/Middleware/CommandRequestMiddleware.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7955bc0c90b01b35192d2cdb18818ac99d7a405960b45dd7f82c426817e56f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: start command TRACER \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/Middleware/Extensions/MediatorDispatcherCommandRequestExtension.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c61c368963a447209e5dfa84fe28ca5b7992e93ddd0a00bbfdac6493d4f9182"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: list available command \u002B routes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/NaosExtensions.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac6e2f31069829eb4d50741a404ef1e41bf3770a3a085601968f88a80cde572"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log scope (correlationid)? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/BaseCommandHandler.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4314354bccbeab22bcc89381402b1810af2e743144e6db349ef9b4a919c9926"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log reason \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/BaseCommandHandler.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ad2c4ecc732efa9fd707ae15ac99280f5a57872805a2b5a1e61959ede86e22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log reason \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/BaseCommandHandler.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c1069fa39cdbdf93da9f3e36d24778f7be3940967c461dd64221e1610e6a287"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: order! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/BaseCommandHandler.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3eff2426f6617a7748e2a803ce53a28b8b5ea4297b2fd78c48671cf98db6546"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: order! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/BaseCommandHandler.cs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf61e9867af9f5096f4f18cc7f21e0ba769f2d7b3c47c06a5c6bf9f109c65fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/Behaviors/IdempotentCommandBehavior.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a433b410f7cdaaba6223eaced969b3e8732127d875bbfc75b1db9b48384605e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/Behaviors/PersistCommandBehavior.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"79488d35ece5a2548899935ba1ba741fad78d928bfd22f334e970b435f54347c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce0a5c3b5e0c76bcd091db54108433f589a7f7aca5ea07131ef1d19f7e6be1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        public ServiceContextEnrichCommandBehavior(ServiceContext serviceContext) // TODO: accessor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/Behaviors/ServiceContextEnrichCommandBehavior.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccbc3d1e9ace1238ee0986f7c4916005697490bf6ba870cf80e9b537a7d13d46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log validation errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Handlers/Behaviors/ValidateCommandBehavior.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"693b8b6069416b2d742a0f357abc54b68bb5045c759f90997864617e6fd5ae7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: rename to CommandId \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Model/Command.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccdd9685b143eab637454e9d6b5f2e409c891b01c4d8a7075a7b0b17a1cbc0b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: list available commands/handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/NaosExtensions.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"58200570eb6416e12396838e7b6a16f6f9764699e4b9de47395b3111855e7613"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: list available commands/handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/NaosExtensions.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"17c4eaf8801265a90a4aa78e1ab71919f926a4b5f493e676cf0bb3bf97242a44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: list available commands/handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application/NaosExtensions.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"fba9b68f39e78ac92db594040c38f31f302441247df07a3523814ea1654822e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: list available commands/handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application/NaosExtensions.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"397da49fdeb5223629e7f7fc7448acc31badbce6bdc73bf8d22e472b180695d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: list available commands/handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/ApplicationExtensions.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea2270f1627a7fc059e2d80f493802ac88e1235707853fdaab8277931c2f493"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //options.Context.Messages.Add($\u0022naos services builder: commands behavior added (type={typeof(TBehavior).Name})\u0022); // TODO: list available commands/handlers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/NaosExtensions.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"76953fde730b12b2aead589dd3fa9fab129911c3f867b9251928f76fb0d79089"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: command should not be an ientity\u003C\u003E only needed for persistency, but can be dealed with through mapping onto other entity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Domain/Model/Command.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff46d4036f40ed9dabb505b8060fdb325366220da85437b5b90d21af7e7d3d1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be CommandRequest\u003CTResponse\u003E \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Domain/Model/Command.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e76514ae4a761625e23c59dfc294fd77c7d8e39ce9f621c4f768c0d1aa2a48e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t let the repo grow with ALL commands in time \u003E out of mem issue \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Domain/Repositories/CommandInMemoryRepository.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99f0068f504e1c38b2f128591e81dd19bbfa1beadd24a1235d0ded00c8b6bb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to Infrastructure.Azure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/CachedKeyVaultClient.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94fa59a2ef8eb6374fe07cd071dbb70e8429fd9e36d881c62dca65ad0be5e28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: optional or provide own settings? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/NaosExtensions.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"53843707bb727cf3073f37e080e6f291ad0ed8349fe57f3a13a00eeddc9d353c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: create T instance with Factory.Creat\u003CT\u003E() and call inst.AddModule(options) \u003C\u003C see CompositionRoot examples \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/NaosExtensions.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dfa17b25e60eff089bde5a6973af9918a86e33033cac495a5969e3ce3653e15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: check other configuration providers here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/NaosExtensions.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc69cb0eebf10d580a62cdbdb48289f5a92a09f8044992e75f21a5f0bc9a1c56"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/NaosExtensions.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"86c93efbeb9f8a9b66bb330eb223e175ee8bf62b7e1c3a7fe64f74c17a9da0a9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d49d735856947bc653e4dab7511ef3729e51de00bc2ee92efd097aa8b97abc0"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.Sqlite/Provider/SqliteDocumentProvider.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea51ad00b43ce232828b4ec0e50c8fab7abb71e389abac10e8bab4116b2975b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Logging/LoggerExtensions.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9990e034e587c3e048a9e430065887c67a878b720deb826196987659d3ba632"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"91c9618d95ccdf085cb494c98160367b7f9a935162e11fbeaa7a06bb0fab050a"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Client/ServiceDiscoveryClient.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"235f66c46df45f9c969b881403ad899e8732c4b926224e9009ea9be9585dfc2e"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity,TDestination}Tests.cs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c4e39cde32dd0a17c7432bd95a682d78be7e57454ab0d68de864e851251dc8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"37d17cc46cb24ebf8c816e7feb388079d62b3bf5aa7d1cea2477b824648c64b6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Extensions/ExceptionExtensionsTests.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"118e902f6e238a24f811b9d54af68f90847da5d7033d5c803d67fe80c2f33abf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Extensions/JTokenTests.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e142d63705bbf032c7902a393476107581f2d35f567770d33792dc529109c1c5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Utilities.Web/RouteMatcherTests.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fedd623aa049c215db570186cc095cd71802d1132db19b1055ef1b66d468da8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Utilities/ExpandoTests.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a40d654dbc5bd3ae2859cee0d8f778f4f0dc7c62cc51968640bd4794db8359"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/IntegrationTests/Commands/CommandRequestTests.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc34f0bb6123dc6c6d453065233515f045298c80cd83fb654aed7b2b2a3ef9c1"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/BaseTests.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6bb4d95ed7241565063dd6c814e74434c5c3f5c5c576d1dd988bf057644c376"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/App.Commands/Handlers/CreateCustomerCommandHandlerTests.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3131293b7ba2e6349cad7e69945ec52d92dc88963169a7d4f248fe381533728"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/App.Commands/Handlers/CreateCustomerCommandHandlerTests.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a90f8feecc5650b8c34c6d72d01d569446eec8b828841172e4e4123903f03c"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Domain/Repositories/OrderRepositoryTests.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1a79001d2ced4fdb2474839fad10fe0273cdb5a1677186cf610dabc3242573"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Infrastructure/CosmosDbSqlProviderV3Tests.cs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9eab8e6a2ee9419653b1d4fcfc8996b7d6b04c8c3942b25d30b507399ed7650"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Infrastructure/CosmosDbSqlProviderV3Tests.cs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e2a04fecf14c1a06e5cf6586307af79687220356c42d065eae11881f136b0ff"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Shopping/Infrastructure/EventSourcing/EventSourcingRepositoryWithEventStoreTests.cs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"a473c53c93944428ce5396f35134b31eefbe7eb47d1ec8ca599e58d1e2929699"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/UserAccounts/Domain/Repositories/UserAccountRepositoryTests.cs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c2aa024346cc5d47723d6b7e8591f281180da4336716ee1beb11d6b872474b"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/UserAccounts/Domain/Repositories/UserVisitRepositoryTests.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"2806e805bcf7d7ee1d9a26d2747f5f5d7fcde8caf3f638d8b86111fda67f06e3"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesImportJob.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef06db4d72bcf60004007446f6e6b9502bbbda538e6ba2b711c2596c0478833"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Infrastructure/MapperFactory.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f432fc83b9c870382881e3e5781cedd8456696c8a8008a906a9b074bd732674"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Application/Commands/CreateCustomerCommand.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa365ad1a0efffe42a0cc7509ec93f804079f4051f248e5fc1d9ef770b40d60"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Inventory/Infrastructure/MapperFactory.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"daee60fc720e5f6826d18999ed65e1d8a2561b46f0b2a76a853f69236e44b026"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/FileStorageBaseTests.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dd4529eda301401a1b31ec2de98655dfecb9301d72269bcfd833b3c585e11bf"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 3 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/FileStorage/FileStorageBaseTests.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aae2d1f145237f56c7b5f8e0215f02f9bca4b64b78722322fb3b0f7f9a0ac2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add the current correlationid header to the outgoing CLIENT request header (get from ICorrelationContextAccessor) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Correlation.Application/Web/Client/Handlers/HttpClientCorrelationHandler.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d10b994a6c73c0ff80df490768f2f27b22854a07e3b6ac915820ff4e34ede06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generate a new unique request id and put in outgoing request headers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Correlation.Application/Web/Client/Handlers/HttpClientCorrelationHandler.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"32089da87205238658c8f0467b297e5d39f95bbf95302c788dd2b1557f69e377"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also add these headers to the RESPONSE message \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Correlation.Application/Web/Client/Handlers/HttpClientCorrelationHandler.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfba589f40d1adf5008581800c26847b5937014f780b0394ac2f246d539c170b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to request logging middleware (operations) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Correlation.Application/Web/Middleware/RequestCorrelationMiddleware.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6955fe2674fe7eda2bcb4f5ca8a0f195664b6853d60e60905b3f815c83819c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureBlobFileStorage.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"674f41a31efd7d125644f6ab86a62b47154359ef08f3a58d93a8106fc4504d8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Dashboard/HttpResponseExtensions.cs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a10b5e2829c125def45fe0b0a77df636c280f95d7481432ca8edc566e02b10e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Dashboard/HttpResponseExtensions.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"0978221d2fd80d66886df9c94bff8318cc16c0dd777359c8d3403e7b6018d467"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: really wait? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureBlobFileStorage.cs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd7541893e65f1c50dc71ffc4befebda08af97dd31aab7988f6689c6569b649"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: really wait? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureFileShareStorage.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f10170baba6769c1aaa393c9103e45353c74485d36b28c09d6c3588e117971b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement paging \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureBlobFileStorage.cs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8b0ca8b077a057f2dfb74eea36a21fc858f1b7e56df6c74a529b14b1bdc4243"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement paging \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureFileShareStorage.cs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd52bee36971331105cce0a8d17d2875a45e856be0079160904614f5da9d0e81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/aloneguid/storage/blob/master/src/Azure/Storage.Net.Microsoft.Azure.KeyVault/Blob/AzureKeyVaultBlobStorageProvider.cs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/AzureKeyVaultFileStorage.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c5333cd0f5f4304bb9e23d30fe25aa5579a1e8f57fadde88b63ca45899a2ae"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable repeated across 11 files: The identical BarePragmaDisable (\u0060#pragma warning disable CA2000 // Dispose objects before losing scope\u0060) appears in 11 files (17 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 17 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage/Domain/FileStorageExtensions.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"059ea49d0b6a01deb90236451b72251b67b0ff02135a220b8359eb54f986371e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: AND / OR \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Filtering.Application/Web/FilterContextFactory.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"50e1f2e0f6d057b0b631d64abe9eed0419479a61c8f0dee4dbffa15d385aae54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: properly determine numeric oder not and pass to criteria \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Filtering.Application/Web/FilterContextFactory.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a792e967b8139db17db2e4dd571d0eaed691da70973d9de714e2f4ed8b3760"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //public TimeSpan? Delay { get =\u003E TimeSpan.Zero; set { } }; // TODO: c#8"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Abstractions/IStartupTask.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"037e521d3cd96afbe77580e8965b4ea0fd388b8215c75dae7cd085a488c79ac7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: provide possibility to start a specific task (task.StartAsync()) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web.Startup/Console/StartupTaskConsoleCommand.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0e22b018dced061481acc941abefcb662a635641f4f573802663ad2ef002be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: provide possibility to start a specific task (task.StartAsync()) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web.Startup/Console/StartupTaskConsoleCommandEventHandler.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"1290b5c41d18237fa243cedecbc900e9526aced6da95b90a5e9419d437438c44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this more discoverable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Dashboard/HttpResponseExtensions.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e4c0a79204bdcdbf261625ba846f1530c0b00adce83fa73e2f311eb317f1f20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: render some default footer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Dashboard/HttpResponseExtensions.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc2a2b379e8dd44f93c36f745296c9758e4486d19fa2ec9d843c7c1f89e58475"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: let all ConsoleCommands fill this (via reflection/helptext?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Console/App/InteractiveConsoleHostedService.cs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1f58706ed996d6951e0889eec430fe6dffb2e1c6dba7435fab4db85d1f180c"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Console/App/InteractiveConsoleHostedService.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3fd982ef762b8dd038e4b2325550857ca98524a980704dc65c3a972cef6dbf5"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/DataDictionary.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"2675f4bc59b96f3da45c4bb223430c09257d6cc79f999074cf1194449b4ad1f8"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/EnumExtensions.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ce150f3753503094983617bf87f4073cfe29b714ff48699fd8d1ed4358317f"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/JTokenExtensions.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"34ce9ef642bf83ea8b6e5e11e237684fd977779c44fdf078f1ae9ab4e2c75ea1"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/JTokenExtensions.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b978822f3254f5dd907ccc3fae44a83458b4399e5fb5e04184ba9a8ead35b3fc"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/JTokenExtensions.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9d0b88d4190af18ebc97429e8272367c595e7aa92de0f350acaa7123d19895"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1031 // Do not catch general exception types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Pipeline/Pipeline.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5755a6fc46fdc674bbaff0930807291583f3301393a193bfcccec8699d1802"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, not needed anymore because of blob storage migration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.ContentTypes/ContentType.cs"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"f416bf67d9c05ac5a1496f4c2c7c272b63b1eecd7d9f0c67a86f6e9e64be196a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: set extensions for all values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.ContentTypes/ContentTypeMetadateAttribute.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"c786fe0b3e210bd2abe61188489890d2e99e13205a148f97c03f612b6236cda6"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 19 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Criteria/Criteria.cs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da22fa818baba3a23dc1a74a4902d8206a24ac715d48613071800568d21c750"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.EventSourcing/Repositories/EventSourcingRepository.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c13288f9e5056bb99b005ed21f9023bc50aee4bf53598376fe2047d99a47cc62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.EventSourcing/Repositories/EventSourcingRepository.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e137e4de9ebff71ae47cf806f128e2c7996c437f87b21cb8af01a5329b6bc5cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: an alternative mapper is FluentInjectorEntityMapper, or hand coded \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories.AutoMapper/AutoMapperEntityMapper.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f302a9ba75ae8462ae09a0574f77cc6e9200a1ff82e096016201aa5cc91045"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: an alternative mapper is FluentInjectorEntityMapper, or hand coded \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Mapping.AutoMapper/AutoMapper.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"e742c7bc1027cdcf12756968a5dbd79adcb7e4ee01dfeb52b7b4d9fef07765ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: accept a proper OrderByOption collection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/Decorators/RepositoryOrderDecorator.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"e359cfa5054825e445fd12c2c74d57fec8cf6979419efdbd1a3aaae280721e92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: accept a proper OrderByOption collection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/Decorators/RepositoryOrderDecorator.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"277ab89d92128360d74a711e3fd5126832193152eb1b5c923c4193ea33ee7ef2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: really needed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/InMemory/InMemoryRepository{TEntity,TDestination}.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"f015bb17033a6f6dd674b5dd261af260f66a09a1c556af24d0e7eb969b3b31ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use HasIdSpecification \u002B MapExpression (makes idSelector obsolete) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/InMemory/InMemoryRepository{TEntity,TDestination}.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f70ff5ce1ce3844af32d072311fc646e096bd7433bbd77859a296cad75f9ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: map to destination \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/InMemory/InMemoryRepository{TEntity}.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"face3cf06a97c6e4bbc7108a0a5fa592e511fe5d558afcd6833714fc1a25a6ce"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 10 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Specifications/Check.cs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce460764c089e908b46493d333692cd68e058bb6ce3c185ac1787132036e412"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use current identity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Events/Handlers/EntityInsertDomainEventHandler.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"974e18ccc9a0343fe689058bcd4e786f5da7a58b160a06dc768e483abe82eb1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use current identity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Events/Handlers/EntityUpdateDomainEventHandler.cs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b442ee7da2d9881d70d5e340640f8acabf61bd91d5c5590c09bcec613186d915"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: concurrent collection? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/DomainEvents.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"640592762e8c285d1632c8d40826fbcd3d2ed610bf4b377c5f362ccc3ff90641"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: omit .State from the hashcode generation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/Entity.cs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78db2d3327faf5e08a242e78d7461ae05f0d6673d2dd204039c74b0cc8f58f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: obsolete because of cosmos client v3 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Model/IHaveDiscriminator.cs"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe2ca9b2563c79f3df824933c58cacec7e883201a8cc48e4d2a299ece22ec9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this an array of allowable prefixes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/AssemblyExtensions.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7753b6866a0045019cd1d190dcfbbbf54d80edff3353273564b1bffe8182be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: optimize https://www.stevejgordon.co.uk/using-high-performance-dotnetcore-csharp-techniques-to-base64-encode-a-guid"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/GuidExtensions.cs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e23c4fdff561410b2c7313d0512f34f69574f88579a46281f03006ff9d70919"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: or SafeAny()? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/IsNullOrEmpty.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be4cd0d57adddcd0ce12f8094c9f3ad97e5b7eb2e0c807805b5cd2618837606"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: or SafeAny()? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/IsNullOrEmpty.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b96b9304667053dd67d15c6b8fe17b295fc389b1222664301bef4911afe8a9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use OptionsBuilder here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be7987cc52496dd18260e1fcc57cd0ab08c4f08a8920c4c6b8b0697c9fe6623"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: shouldn\u0027t this return IEnumerable\u003CT\u003E? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"808e550469667c2c599192b7b7a9c99a616d95230c08799795d70efc70848a75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement cosmosdb skip/take once available https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6350987--documentdb-allow-paging-skip-take"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"2777df6082f4fa1fa43f178119279eb116cd1fe1468997ecf7c4223e6a761e12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement cosmosdb skip/take once available https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6350987--documentdb-allow-paging-skip-take"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec329bb203e66f7c06a9cb932eda2fd3c28cf781a9455f4583c3adfd01278b42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: this does not make sense when using a master collection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b0e323e727a398fa1ac76aad2935a05eadfdce1f177b3fbaac16f924e48f91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //            // TODO: use discriminator in query (if ismastercollection) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"b69ecb341f1d9dee55b01ca570088ddffc172709d583d2f5dbd64c17f52f9f5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO: use TOP if pagesize \u003E 0 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"59fa772dd97a2a738617adbf01441efbffc6a15e4b0c108b28c56980c43de583"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        // TODO: use TOP if pagesize \u003E 0 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"044e3dcaa08364e904d049f22fd2d3b2f4158b3dcc0caeee8e08049598bf171f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: instead use UriFactory.CreateCollectionUri(this.databaseId, this.collectionId); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"e257dcd76636cc35e1af5b4365569d8cee51084f7be2932313a2506e0ca8a562"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with IAsyncEnumerable (netstandard 2.1) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V3/CosmosSqlProviderV3.cs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebc39eccdd9d70085a9f156a244551ce3ce9ff30ed84ed55737749015de647e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with IAsyncEnumerable (netstandard 2.1) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V3/CosmosSqlProviderV3.cs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"1adb73f270ec308f9f02e1b4b9787300f853a485799c69f6397d170d9a37ddd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: set timetolive (ttl) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V3/CosmosSqlProviderV3.cs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5fd90656f7d86294e288cd8224a0901bb02934083c554dc837196985bc7bb6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use options\u002Bbuilder here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.LogAnalytics/Repositories/LogAnalyticsRepository.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"069fba3fab7a6822cb35b62bc05f6c1840876611f576806811527c80fab16c96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to seperate mapper \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.LogAnalytics/Repositories/LogAnalyticsRepository.cs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"d085d96590c090617aebdb5199e780f1cfe7c048c1adce3111362e84182fb83c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //properties.Remove(item.TargetProperty); // TODO: remove only if no further mappings based on TargetProperty \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.LogAnalytics/Repositories/LogAnalyticsRepository.cs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"a70f719dd4be59daafe79e139446165ab7844759663671005339b6684d9c0eb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to infra.arm \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.ServiceBus/AzureUserCredentials.cs"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"56eed02c1ffd6d41e0a81349208ac68ea90fed4687a6347b1fa2dfddb077315b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to infra.sb \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.ServiceBus/IServiceBusProvider.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c8636ee53bf36da9b5b197550b41f80c5e89af9e0c3bb4fd7914624472d298"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move below to Infra.Arm \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.ServiceBus/ServiceBusConfiguration.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"a022fdb874d345c916f7e85a175c97af66727a476ed1a984fd9202127f0242a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlBuilder.cs"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f81821434009ec52ed27b8a868c17038ad6da39e60302f3b298db8dcd1f8a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //return Enumerable.Empty\u003CT\u003E(); //TODO: yield break; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebcbadea36602371f86acfacc2ff820cc88fb646285234466d0fadf46123d2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use lock \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c9f50657a9d527c7bbac7e8f8d5c8764aef6c1b601b075eb493d41d5769b60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: more conversions needed? int? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity,TDestination}.cs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"91bec806f984a859557f582a5bf8cf1eb12fe57630e36d84a19fe1367963cba0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: more conversions needed? int? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/EntityFrameworkRepository{TEntity}.cs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f81b8fd8096c03813c9dcfa625b6129bcc91b26ba18095b4abdcab686c73001"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this returns null, find a way to return an IOrderedQueryable event if no orders are provided. possible? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/Extensions/OrderByIf.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d4d812711bac59bbd6add22dec3294de2b234a70ac1660f55723b1ca93733c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this returns null, find a way to return an IOrderedQueryable event if no orders are provided. possible? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Repositories/Extensions/OrderByIf.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"62917358dbfd1d3872757bed3bf47db5da5a02a676ea95d2953220d02f4ac9ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this returns null, find a way to return an IOrderedQueryable event if no orders are provided. possible? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/Extensions/OrderByIf.cs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1860da554994f7eb1b13dab0f3de5c4c99fdec0f1749016d48e19deeb9a43a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this returns null, find a way to return an IOrderedQueryable event if no orders are provided. possible? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Repositories/Extensions/OrderByIf.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfd3fb33f0bfd6b21651d9b290ae4d48f1e73122bc9757c1fa0fc3df8847c2e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: incorporate toVersion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1bdc97a5817b8dbd8bc48bf66cd4652fae8b7902b1abea810274b3b23653d47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: yield return? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"5970c27829a0e832e0cd22a3c5bb39d0fb7ae660aac6c5b8cc4ce1810e3a7e47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: CorrelationId as metadata? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e3ea7612df036d4ec800cfe395657d6fec2bd405be9c52037fe56776b1763b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: CorrelationId as metadata? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"410753bc5080501a546d348e09cede1ff632ca9a7604a7f87b30ebc3532a3efa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with ISerializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba23f1cc50b875def0c18495e9cbcda0c51db136550bdb866bf7ea1d8493992f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with ISerializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d90ebebe2d5b502454f5d9807225189e370a1c380fce4ccfb5a974b3f46f6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with ISerializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49a36f300a9553c88918aa36ce9b6caa9024c167ece5e899ae7d030df599865"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with ISerializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/EventStore/EventStoreEventStore.cs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"2001d344eeb977d503b4ba9bdcd31a66ccabc8ec9e39613db9bd01a7c35bab32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //public static ILogger LogTrace( // TODO: obsolete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Logging/LoggerExtensions.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8aa185e3a23e5131ced675b8144b5e100e1fdb715a8f2b4212498698542c94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: publish tracing notification (so other tracers can pick it up?), mediator publish \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Logging/LoggerExtensions.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"305f97d18bce669954a9fa4d15046f6bfd8f0b8ab784fdbaa16a6c6e03d164cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: split in multiple extension classes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Mapping.AutoMapper/Extensions/AutoMapperExtensions.cs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba1f7ee85a6d2a007f15214cd81f8ad101d5774b851497e750e413eeea4f724"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: rename to ActionMapper? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Mapping/Mapper.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0b1c4170b0a07d2827bc41567d682958d84856d1ef8eecb29eaeb1649a579f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: factory? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Serialization/DefaultSerializer.cs"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d9fa22e7427c06100dbfdafb1dae2893fe74d7c677b8a55074ed7c465d9f45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: factory? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application.Zipkin/OperationsTracingOptionsExtensions.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c657e6d63d8937423067b032816469c69b76b077a6c94d040aafb964d670f0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: as method() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Serialization/DefaultSerializer.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"7078e4b177eca3c0d57fc07980e2a3d3e739b9622f12efa4cfa955dec7c18619"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expando/Expando.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"36c926da105dbe531d339b80a772274ac278a64b20623afa2b1091dc4a04c46f"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expando/Expando.cs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd69206f2b6b7441969ec59249919accdea756a760895f6b4d85a2219422a39"}},{"ruleId":"D17","level":"error","message":{"text":"EmptyCatchBlock: empty catch block"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Expando/Expando.cs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ce60f1f82504e24a981a66791c6a7cf04065433c4fdc2125720f74bbaf5185"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable repeated across 14 files: The identical BarePragmaDisable (\u0060#pragma warning disable SA1402 // File may only contain a single class\u0060) appears in 14 files (14 occurrences) \u2014 a single repo-wide policy (e.g. a Directory.Build.props decision or an idiomatic suppression), not 14 independent debts. Decide it once centrally rather than file-by-file. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Factory.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"36690bc6b4b73309d05083a4810da6e57457241a0929be6a784889f6fe30f887"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass the content json as an object to the job \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobsController.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"be61f4da323e602899743726d03efd3aad7cd7d892dbc97729a5ebec6d7c6376"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: querystring args as trigger args \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/Controllers/NaosJobsController.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc240c1187dda2deefa5781fe24ce182bf6c2ce0e50768d15daae4afce2b87bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use typed client here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application/EchoJob.cs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d0d3228b73e69bfdf9988d022583acc576cc7e7565258407fc88a1cdc54f01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: or use BackgroundService? https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice#implementing-ihostedservice-with-a-custom-hosted-service-class-deriving-from-the-backgroundservice-base-class"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application/JobSchedulerHostedService.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ad9688259f8395524b23f80f664dcf2b17b8c89f175f6fd4feb088ee900d1a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: or use BackgroundService? https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/background-tasks-with-ihostedservice#implementing-ihostedservice-with-a-custom-hosted-service-class-deriving-from-the-backgroundservice-base-class"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application/MessagingHostedService.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba9e4ca2161d605e977af9e3d3a686a474e40594818aab784ee8b53c3fc051e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: start/stop from outside https://stackoverflow.com/questions/51469881/asp-net-core-ihostedservice-manual-start-stop-pause"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application/JobSchedulerHostedService.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"a73c767f2820acb06432c20ac48e18b35d758e80faa1bc44a47215871ac0ce51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: try to cancel the running jobs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application/JobSchedulerHostedService.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c9accb6332561aee9a55714adb551a2903e2d4447531e0b0c50084d46a2ac50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Other things to schedule \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Model/Job.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"a79c6664cb8efa3fb494a8857755fddaa00f2e976a9caeedc7928cdf86849fdb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: action/func/type containing the thing to invoke when due \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Model/Job.cs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb9528336c4851554c0f3fc6d55bdcec7d6c46fe2a9aba3e465f7a50565438ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use https://github.com/madelson/DistributedLock for sql based cross machine locking"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/DistributedMutext.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"01cb76759e814a2a78acfceb29073907e0782dbde80d5065a02a4e63d142bb92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: a different token per job is better to cancel individual jobs (\u002B timeout) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/JobScheduler.cs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb8429a10b6c379c3ba00c936be7a42b14143cdf989a5d1a1606e88caa82135"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: a different token per job is better to cancel individual jobs (\u002B timeout) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/JobScheduler.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"de008597afdf865f51f175c5300a1ba2bb1b8728b3390210ce7f47b3ccd98b4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: publish domain event (job started) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/JobScheduler.cs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"a40aa7ed58bb023530903d5210f319e8a6de26dc3bf9308bded434c0bfb70642"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: publish domain event (job finished) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/JobScheduler.cs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c9f1c71e42d5c5ae040601d93e252b49e536d280287c4ab61fc0d53ddf6990"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: publish domain event (job failed) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/JobScheduler.cs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"407bab8f801763145c77afacd6132161e14ac0cf0ce7990d933aafd497b134e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: publish domain event (job failed) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/Domain/Services/JobScheduler.cs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b8d8d0bd5ec1862055d9a518f582ead4363caef33e1070f16c43ce0d8718475"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not really needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/JobSchedulerOptions.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff410f5b5ea97c74e0ae433cf63f6c3acc03a35ebdd0630b545317614a50433"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: optionally don\u0027t break when something goes wrong \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage/Extensions/ToObject.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7e0a00e46cce34298a30d0d7c97e22120d33ee0dcd4b1a33605102d2527fe7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: does not work with azure hosted hub \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.Azure.SignalR/NaosExtensions.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"09aad3b1b8ea226a4d4fea6db13a95453317bcbaae188defdafac0222e606580"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: scoped with ITracer injected \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.Azure/NaosExtensions.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"171ad1609a2cbd7bd91241085d948ef254f985079a0cad4e1b6ebe01a5466db5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to Authentication.Utility? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure.SignalR/ServiceUtils.cs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"9168afb9042ca468913558bb723585212a61fb29b7265eb6df7576b36599b9a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure.SignalR/SignalRServerlessMessageBroker.cs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f773ea1926078015be1472cf4ae407f76af4368f1b7a5572ba4facb7d82485"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.FileSystem/FileStorageMessageBroker.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8eaa8a259ecc6f02deb778b09417c0f21be30bb6c7e4baf1a33008ad92f6c05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async publish! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure.SignalR/SignalRServerlessMessageBroker.cs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea9c8b028573bfed4ebb2202b2062d6ef3c0eca8b370e3762c14aa02227847a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async publish! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3939def83318f439fa7f099546b674f775319da9c713f3e08322e3fc8eb3d95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async publish! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.FileSystem/FileStorageMessageBroker.cs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"9703ba7e18b48db6eacdb3e6988efe9086bcb4ed305bcf8707c7b667d630a0dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async publish! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.FileSystem/FileStorageMessageBroker.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"791449bcd6c358ae1f0c4d3090a24c26f911a48d92da4767b008266ff3f96bb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async publish! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.RabbitMQ/RabbitMQMessageBroker.cs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ec908eaf6319e25ef40a62e1b9f1d58fad085aa39e32123f6b2b7c114ac72b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: unregister from connection this.connection(messagename) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure.SignalR/SignalRServerlessMessageBroker.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"305d33b57015aaa5424caaa0a5cba656f49cc4c17ac7e2573050772014af8dfc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: really need non-async Result? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a1038c5cbb55ccc821c88e2b557f4dd9eb100b51f8c62d62aa3014eb3716ad4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //Body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message)), // TODO: use ISerializer here, compacter messages \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"be88e39bfde02181195aa373edf3a2e37195129a1c33718331d0ebd15d63b707"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //var jsonMessage = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(serviceBusMessage.Body), messageType); // TODO: use ISerializer here, compacter messages \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"a298583850112be1749506c8094e003d54c13b98ffc05bdf309694de27194c1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: message can be null, skip \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/ServiceBus/ServiceBusMessageBroker.cs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1f394321f35b550a10ec4f5d71a9523b924ab9abd975e1ead36be17280822ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: maybe use this client/provider https://github.com/EasyNetQ/EasyNetQ  http://easynetq.com/"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.RabbitMQ/RabbitMQMessageBroker.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff170ed4ef03942bdcf9484b9332d0cd7d90b3df225aa5308c5f03193153296e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: dead letter in case of exception https://www.rabbitmq.com/dlx.html"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.RabbitMQ/RabbitMQMessageBroker.cs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd712ea1c668efcce651b1deaf4618f27cdc7c6b148ff1237d911b2a4c563ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: really need this? or just like DomainEvent (=clean) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging/Domain/Model/Message.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"110bca2792e773f6a82998bfe7d1faf6c2190299bf25dcba3842a859f1a1361e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: achtung casing! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging/SubscriptionMap.cs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ac0e9a7a055c8a92fe7117862a493a362336353f74e9a2b7023d63a9d401ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //this.logger.LogTrace(LogKeys.InboundRequest, requestId, context.Request.Path, LogTraceNames.Http); // TODO: obsolete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Middleware/RequestLoggingMiddleware.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"da95e2d6b4d8dcf6ccb2c1f76d949405dfce7261f88a3984369f85a5bc1c1d3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //this.logger.LogTrace(LogKeys.InboundResponse, requestId, context.Request.Path, LogTraceNames.Http, duration); // TODO: obsolete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Middleware/RequestLoggingMiddleware.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73566c648d95efe42f1cae47f3c0870d97e734a183099dad40fd49141978a35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: actual renderings (keys) are not camelcased yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/CamelCasedJsonFormatter.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"de2f830c538d0a4f57d278b5a102ddaa07d7a6813a95997559bf9fdd589957a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: actual renderings (keys) are not camelcased yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Mongo/CamelCasedMongoDBJsonFormatter.cs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f80b8f7424dad06e44a2cbcc73f575b0e27f7ee121767f30e2913cffed44009"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use tryparse \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingOptionsExtensions.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ca3251af719d4d316c0013c497ae7bfe7708e96c3d53879eac2e4d2d287ffe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use tryparse \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/LoggingOptionsExtensions.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"900acb0bb7d59b8ba223f2df4513bfdda6999358e26d5b1dcd0edd3a54249614"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make generally available \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/LoggingOptionsExtensions.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"61bc4d9d20646d0352e1f0fd0f53da16ce51a08f2ea50ef0ead7e4cab31fb75f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make generally available \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/LoggingOptionsExtensions.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6169d45f8b72a030b0e96e89ddadf1fada78418730085d58b30245c16ca715"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make generally available \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Mongo/LoggingOptionsExtensions.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"88180aafa3883f0fa06471a9783cbee59e1624f1cf9bb63fa25471f7f300f5b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use optionsbuilder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/Logging/Repositories/LogAnalyticsLogEventRepository.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0d9bbfca3830d9b78c7d60f8efb529bd2814d3d03b1d8776abbd9faef04a133"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to operations:logevents:azureLogAnalytics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/LoggingOptionsExtensions.cs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ec04378d0aefe18796b4004040af28034ed067896485b92769987d62a52a90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to operations:logevents:azureLogAnalytics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/NaosExtensions.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b42c13a200135fe51e1e69cbba9a6e938a326c33e352a783ef10f04cc26c990"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: resolve from container! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/NaosExtensions.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"29710c8657eac4806b39811c76180d7a60144fa79dd9d2a06c58be93bffc0186"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: resolve from container! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Azure/NaosExtensions.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"091cd8f2b75365579fe8611877759dae5505a280f783d0dbd5873af95567a664"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: make nice extension to get a named mongoclient \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Mongo/NaosExtensions.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ba547ae7c4beb67580d5a2ea07499e3b39f66b142c35df456dfa0287f38ba1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: make nice extension to get a named mongoclient \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Mongo/NaosExtensions.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41b4a6c121dce15feddefba93f4b12bfbfef716c26b2e7e9a9dbcfdb5d4e114"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: make nice extension to get a named mongoclient \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Inventory/Presentation/CompositionRoot.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e073312dfe26fdc2bfe8a2cd627d61f9bd2b57c059539fa36676852e0f6482"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: set from outside \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application.Web/Tasks/QueueProcessItemsStartupTask.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"62284650946975dda769d417dea8ff85d17a2a397d6a8d02704248b04398380a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ReceiveBatchAsync? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"e173d11ea50a65564529449d2dabb442e519fe2fc9f2a26baea3d465137156d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: store correlationid \u002B traceid/spanid \u003E\u003E QUEUEITEM \u003E data \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a05c4917703f438d64abd66d4def2b09213e4b9e1aad6c552facb79006b7342"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //properties.AppId = message.Origin; // TODO: get from descriptor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"15fc5eec09601971c0d5753b7246520262aa3f236ab1b36df6cb75c5d17aeae6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: wait for timeout \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e91d603c94bb934efa87f7143e6c73aeb650f4356527eff0ea770883f077db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: queue expiration (ttl) https://www.rabbitmq.com/ttl.html"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"946a3dc8603e7babe7569cc95c8dc081a80b09e325d35bd0209b84b615684348"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: lock! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/RabbitMQQueue.cs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2fcdac2c8874b65b82fff2f1161b75de309aa32dc1e88c45837eae9fb8d8361"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: each enqueued item will also be stored by using the FileStorage instance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/Domain/Decorators/FileStorageQueueDecorator.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d7ce17ccbdb8eb8b9f74f5cba48b5e31a15681b8f1cb0f41a496906d3bcbfc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add some strategy to control the healtyness of the service (for testing purposes) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/NaosExtensions.cs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a79b585edaacfb33569a7214d70c7c5da69627f4a682cb05da3e327f0923991"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with RequestCorrelationContext \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/Web/Controllers/NaosServiceContextRootController.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f7515b42f6177a8d550726f418bad3f7a83c11d91bc0358f94ecd5b5884ba51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get these endpoints through DI for all active capabilities \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/Web/Controllers/NaosServiceContextRootController.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7caad41c9b9b3cc77ecd767d84fe04b7fb57047c3d918eb61466d87d8b4c28f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get these endpoints through DI for all active capabilities \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/Web/Controllers/NaosServiceContextRootController.cs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4c7ead46413d3a0e4fc20d76d4619f7e4380cfa6692c9cb9dcb3d5a69046efb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: discover below \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/Web/Controllers/NaosServiceContextRootController.cs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"19b4eff5769854631df61246aca230e260b30bd2a7fedc275e2c1882c1c9dae7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: log below should take blacklistpatterns in account (RequestResponseLoggingOptions) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/Web/Middleware/ServiceContextMiddleware.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"352627c4d148ee800c0fd54a6b650f30c7dc874950ccba4dba12fd1ad468ccca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: do some kind random/roundrobin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/ApplicationExtensions.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"582a3984c407b6a1a3652c1088aa37e10af77a91fafac3eb8f28f6e689740860"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how is api/registrations NOT forwarded? based on missing router headers? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/ApplicationExtensions.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"b874645c06609bed14fec9ef881f852dd85360c37d216daa9477efbd456eb372"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: round robin https://github.com/damianh/ProxyKit/blob/master/src/Recipes/05_RoundRobin.cs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/ApplicationExtensions.cs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ea576cc95a7817908ea01ee71304dac7608cb02724f76ae9349f48ec51d291"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement service https://github.com/damienbod/Secure_gRpc/blob/master/Secure_gRpc/Secure_gRpc.Server/Services/GreeterService.cs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/Services/RpcRouterService.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"64914ed08d424dd9515937dbde6c3018bcbdd31678600362edc297d16a571243"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get serviceregistration by name OR any of the tags \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Client/ServiceDiscoveryClient.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9712abb5ef1c2ea07f75048c81576d92e541dac5dba4608164b29546729aec3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: inject HealthStrategy which can validate the registrations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/FileStorageServiceRegistry.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a90e5e5f752be08a84958ad52bf04754933d4233bd6262bd147383c8f6474e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: inject HealthStrategy which can validate the registrations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/FileSystemServiceRegistry.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"9525354e7431847e781e57a9d037b307651ba6afc489edb514efdcbf61d98098"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: call remote service https://github.com/damienbod/Secure_gRpc/blob/master/Secure_gRpc/Secure_gRpc.Client/Program.cs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Registries/RpcRouterServiceRegistry.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"696fbda2fb8108d93b2d0cdfba547983632c23a12ba27aff83833c527eb376b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: register all addresses (foreach) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Web/ServiceDiscoveryHostedService.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"43085f545f9601bd9e96301b3a0c11ec6adbb6078419f23baea69f92aab3a13b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: register all addresses (foreach) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Web/ServiceDiscoveryHostedService.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d5a1583ddb806dd412c6a81c027c134ef7d9fe54a07dde04257c46970984843"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use resolved servicedescriptor for id/name (AppDomain.CurrentDomain.FriendlyName) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/Web/ServiceDiscoveryHostedService.cs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7800af0c2f2848b5b623ce07323d548ce1287e28a1c06a423f06886b58f7f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get service name as operationname (servicedescriptor?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application.Web/Middleware/RequestTracingMiddleware.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a58af209bb81f5f16c10db897ef7641c5947453da1b1bc9d702b2f0ed4bda78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get service name as operationname (servicedescriptor?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application/HttpClientTracerHandler.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"81409cc3d3b4307f047eabb4e1cac34e598b5ca56840deb08d5af16003ed082d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: request size? SpanTagKey.HttpRequestSize \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application.Web/Middleware/RequestTracingMiddleware.cs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"1216241bea3957f126243bc6fd27c2f0f8c429af23564a1d9cdae7e739ebd866"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: response size? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application.Web/Middleware/RequestTracingMiddleware.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"115eef8e2ff6331f5567ce9b0e4d7620c108200d5ed62b45bc3bac2f6a52f9b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get current scoped tracer in here! only happens in out of httpcontext request, for example inside a dequeued message handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application/HttpClientTracerHandler.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d59d3f821721410c24e52676ece527d909ce580a6598a74197cb8e613de6f54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //options.Context.Services.AddSingleton\u003CISampler\u003E(sp =\u003E new OperationNamePatternSampler(new[] { \u0022http*\u0022 })); // TODO: configure different samplers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application/OperationsOptionsExtensions.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"88caf17874d0a3351198c46d570e1cfaa295fae611146fb28a4029bfc2433940"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //options.Context.Services.AddSingleton\u003CISampler\u003E(sp =\u003E new RateLimiterSampler(new RateLimiter(2.0, 2.0))); // TODO: configure different samplers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application/OperationsOptionsExtensions.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed18675a0d2accfd07fccd6a9e7bfce7905fcf3f60cd537944e235a93b21bd67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: queue some spans before exporting (threshold) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Events/SpanEndedExporterDomainEventHandler.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ccb9fc895650a931b4f175157015fe71c09459fa2c911784ed1f4817e0c763"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: map all TAGS/LOGS/BAG \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Events/SpanEndedLogTraceDomainEventHandler.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"e965009535cf62465ae5cfa465d8b1def13f1f80a5099a7132cf6127bae4380a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: copy baggage items from parent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Model/Span/SpanBuilder.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3f1b6c160163abb66d553dabe2cf76f92605e536cd640838aa51ca88f795d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: store the trace event by using the logger (with LogAnalytics sink) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Services/LoggerTraceAdapter.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd69dfde7a42a8c8796c383594800b4998be4e02ac94f479487cc30baf3e97ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to infrastructure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Services/ZipkinTraceAdapter.cs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f81565adf75c9d929f8bf87a065826492f2379cf962d06e6e9991b8da294bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: store the trace event in zipkin https://github.com/openzipkin/zipkin4net"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Services/ZipkinTraceAdapter.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf2e621de284b86e51672c7128198cce4460d1cd86b6b6b1203ce207e70ee4bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement like https://github.com/open-telemetry/opentelemetry-dotnet/blob/87d0d1eeaa077aa08e408b43ce155449b78d9e47/src/OpenTelemetry.Exporter.ApplicationInsights/ApplicationInsightsTraceExporter.cs#L36"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Azure/ApplicationInsights/ApplicationInsightsExporter.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"13b85bbf8e90ebac44dd1b40dd42da943a8792843245219e542accfb9a110663"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to operations:tracing:azureLogAnalytics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Azure/NaosExtensions.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b03f069bb95d78f61f2d8b474654342ed76e7742eab0edb53fe75e7ab3d7488"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: place a circuit breaker here? see RabbitMQMessageBroker (polly) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Zipkin/ZipkinSpanExporter.cs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b39395ac301bf0cb6a1bc44ea1d9a31c523ae74e813efaa70e51c2430ca3e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //using Shouldly; TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity,TDestination}Tests.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd5e113ec2c8fcd9deacf10911640929bd2992ce9cb41e40c5e5386ec07101f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //using Shouldly; TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity}Tests.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"880da903bfdb2f8f5109925a9b5b75d1b5811a1c11cab77e9a4274f4ed6c5fef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to own test class \u002B mocks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity,TDestination}Tests.cs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6485e5bbb50dec6bdfd0cf8489d896f44afc7707739ddb3bd9839de680c7f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to own test class \u002B mocks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity,TDestination}Tests.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef7bc4d156d4057185ef1e02bcc3c844bd2c6a43e649379160781dd35891458"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to own test class \u002B mocks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity}Tests.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3d7fb39c088357e18474b116ec5c6745a65f4d3753442c01ef06a382a09721"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //public void TenantSpecificationExpressionMap_Test() // TODO: move to own test class \u002B mocks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity,TDestination}Tests.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"1724adc6b756702965644d816e61cf9607b2fbc2230e5c201bd59169025a3ebd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity}Tests.cs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"930da4916da17870d7b3d0da1b173cc2781722d2858b5cfde69ee4e828e34825"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/InMemoryRepository{TEntity}Tests.cs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"015bae72b864ad2782abfb48f1bc99c462a07df9d3ba149503a28294cca6926d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ad90278735c6d069a25f383cba066cf41bda5d4052afbf13face0b71fa863bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d65a4b872fa4e9021169ca8bfb516a19bf0076dd8950e1d8430915cd3825a20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f2a918b3360940f5056cb9055c7004e0814539af74a01c43bd113537fe2263"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e40abc4c57bbd3d75d7a7fb15d61dc243cbf9984da9ccd7254bb53ada6a85e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be mocked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Infrastructure.EntityFramework/Repositories/EntityFrameworkRepositoryTests.cs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebc68463f45448634e1a303a187ea2a61c61848677cc8320afa79c245f1ce80e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: try reversemap https://stackoverflow.com/questions/13490456/automapper-bidirectional-mapping-with-reversemap-and-formember"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd441fd62cec67b34df443a6dea5347a9d32234298e6b62054a1b465b4bad108"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: try reversemap https://stackoverflow.com/questions/13490456/automapper-bidirectional-mapping-with-reversemap-and-formember"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Infrastructure/MapperFactory.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1db924017cc647b23757e0665c317d4260e3b7cacc3db5438285c8c22077a74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: try reversemap https://stackoverflow.com/questions/13490456/automapper-bidirectional-mapping-with-reversemap-and-formember"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Infrastructure/MapperFactory.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8fa541269c18dee7f179d9afd935bb277154927739a9b472a998688d43b76f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: try reversemap https://stackoverflow.com/questions/13490456/automapper-bidirectional-mapping-with-reversemap-and-formember"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Inventory/Infrastructure/MapperFactory.cs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"8664648baca34fb01cb645631c4a3bb332eb4c4f5504bcfe125524bae48b0bc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: try reversemap https://stackoverflow.com/questions/13490456/automapper-bidirectional-mapping-with-reversemap-and-formember"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Infrastructure/EntityFramework/MapperFactory.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2689da860d1669ffea2bf6244e815b30ec5fa935b1e8e65d4ab4db1139f799"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b7e38bed202d5d36c4f71574ab2eac6c0961779e73a72b191a2ac7fc30def9"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"4791366e5bd36c46f079d490e1e64f40b6c2f7a1ee4b6b1551ac3c142fefeec5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Domain/Repositories/Stubs.cs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a4d4f17cbab57b840dd7c7f837b9101f5f93cd64bef4bd22733916107a57bc8"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Infrastructure/CosmosDbSqlProviderV3Tests.cs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"02448d3a5376ed1a4f62ba31fae8643ee120eb19938199631b48b23f9cadf2ec"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Shopping/Infrastructure/EventSourcing/EventSourcingRepositoryWithEventStoreTests.cs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"72eb239c888fedad280122ce2f43d3d4f52961376b0645d854c0b3678a74e8dc"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1307 // Specify StringComparison"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Utilities/ExpandoTests.cs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec120b0757ba42c2b1a98fd1f0ed2b95ffaa113f3fb82d545eba61952316b6b"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1307 // Specify StringComparison"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Foundation.UnitTests/Utilities/ExpandoTests.cs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"75d55b7952b27814e146239c150c8d12ac44dbe954d5eaa0abbd09e9247a8550"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1307 // Specify StringComparison"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Catalogs/Infrastructure/DocumentRepositoryTests.cs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebaf1792c05e6821ff99eb2a3590d2a791af0139cab97a37ee3688c793a2d900"}},{"ruleId":"D17","level":"warning","message":{"text":"BarePragmaDisable: #pragma warning disable CA1307 // Specify StringComparison"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Catalogs/Infrastructure/SqlServerDocumentProviderTests.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8f0183c38ea014513a3b47fe6f7c1fb5f290b1a87704ef3b39a4281cae1b32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //opt.ValidateOnBuild = false; // TODO: turn validation on again \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Program.cs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3612583345b42677ddfacba83bb4153f8d7c3724da4ee6ec52026fe6e113195d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //opt.ValidateOnBuild = false; // TODO: turn validation on again \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Program.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff485e1152012135422f4b6ef2fc56ee4c761dccedc30e3aba7f3de5b170052a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: swagger ui has a problem creating the correct try it out url for the actual customerid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b683a590f1275f8903f441beeac5849e99264a31760a9c53d4b83893dde7d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //.UseCosmosDb() TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0b14b2bad79dba0796a28e77899c8dfd8dd6118a12a03a2128a6717bf116c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //.UseCosmosDb() TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36d867de5087f9b3832bfc68c5b6604b8b4686c53338c56d82cf3b350daa8a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //.UseExporter\u003CZipkinSpanExporter\u003E())) // TODO: UseZipkinExporter \u002B configuration \u002B zipkin url health (options.Endpoint) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3c1e2656f4af518e98c30087861ecbb78c1e6cb169c423d2ba93be7da45e0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //.UseExporter\u003CZipkinSpanExporter\u003E())) // TODO: UseZipkinExporter \u002B configuration \u002B zipkin url health (options.Endpoint) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a68d82b3ace08568acbed580c62c457fcf1092b952f3e41d5827c6dad8456bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: create a cloud based registry (storage) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32641466cab17069c06ec6dfb18513bec072118a1ee9d06fe08b0739efece05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: create a cloud based registry (storage) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"024ababb7121f3f89c16449f673702a202fffbd4403e65ca031237c63fe1b5f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove some offending DI registrations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"c22d3b41b2b61005df36ea965f27d1acd2aac7816eb6e82efcfbede30169275e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: UseNaos.UseSwaggerDocument() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59775639dcb2e225f5e96ce8945b74dc4ef52afaa56df3aab6700f5895baf4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: UseNaos.UseSwaggerDocument() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5020ac0bf7ed1131cfe72abe632f3eee39e28255a4b6a6d365bb64e928f458"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: UseNaos.UseSwaggerDocument() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f10258aa9ae1e26e9af00cebe3af4fc787d0c11c80280a6f32fc717ff91a43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: UseNaos.UseSwaggerDocument() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b1d24cf8716c5a5e64b0a1ad387cb0fdc329eea17497e35291b23777419798"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get from Configuratoin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"734bc386dc90c669959a8e942e30cc40e740183d8d8f436830697f682f6e895d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get from Configuratoin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web/Startup.cs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa93f3b426456e2057f26279377e81de4e8602f4f2d29810c547caa97d255166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get from Configuratoin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"42944f4bff4be9111579963d51ed00fd53390d4a001acc4ec0b61b23ab1b8e76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get from Configuratoin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"64000c7375e2cc38a8c7fc86863795efb17b7472307f53c2305b31cc855cfbf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: swagger ui has a problem creating the correct tryout url for the actual customerid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.Application.Web2/Startup.cs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f848f84a34112e7aed511e77a5c2750b7c9d7854fd5420c653d2f268fd232098"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 12 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.FitnessTests/ArchitectureFitnessBaseTests.cs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d97f588f7820d80e5c9b3bcc2c43e17cc91c1b05f12aed6f4af404587df499"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this more like a real unit tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/Customers/Domain/Events/Handlers/DomainEventHandlersTests.cs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce49f87f522284c51541e0d5f4310c86cb520878fcd975f3cd99e4dc55f8fd37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: causes issue with netcore 2.2.7 (testhost not found), try again with netcore 3 http://jasperfx.github.io/alba/getting_started/#sec0"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample.IntegrationTests/RootControllerTests.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"51174cca92544d6a590853ea42ed86dfe2d01f6fb4a84ad0d4128a8902d452cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this scope setup more generic \u003E move to base Job \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesExportJob.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"aefde6c449f2b5339ff73af7f1a3ef8f30d6e854e382155e90bfc289374979c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this scope setup more generic \u003E move to base Job \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesImportJob.cs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"75da8c7fd6ee5a514613e780de9bf95c7062214c49b90c1b7777d5c59b99610e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use storage to write file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesExportJob.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16fdc9e5717163b19177c6d9cb07ba5272a701d6a1a146577d16b3855fd1177"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use storage to read file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesImportJob.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"33aacac1e18a8bbf525876d4917c918a6d227ee87b593f9b22e1dca3103eb87f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: send a message or so... CountriesImportedMessage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesImportJob.cs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be5940bbba2526c4beb1838f467e46a80399ce4569d45d677a92c0e6a92687a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: foreach country in csv \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Application/Jobs/CountriesImportJob.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e001a85d1fa319f952a19c843aa5978dd5297020f4e9236c0426c5d3fe6298"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Domain/Event/Handlers/CountryInsertedDomainEventHandler.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6ca00411cd2b9001ce656709d49031ce378bcac510b8efe0cb5e145fe1a8aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Countries/Domain/Event/Handlers/CountryUpdatedDomainEventHandler.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33b885eae2f9fcfed2d747dda089dbe30dc1b4e0c6e851438b677e4b8456d12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Domain/Events/Handlers/CustomerInsertedDomainEventHandler.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c5bd7174cd5c56c9d74a47285cb5a452f52e40c5c1d26cdb4d8e24b47508dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Domain/Events/Handlers/CustomerUpdatedDomainEventHandler.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"63693d201ddc17cf26c20f18c1dcc4ee784d50f9b4b49fde21ba7c0b811074b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Inventory/Domain/Handlers/InventoryInsertedDomainEventHandler.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6dd8f32d4a73b5117c8ec6c90f63aa15a09e9f8b7a152c418a585594b9d87a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Inventory/Domain/Handlers/InventoryUpdatedDomainEventHandler.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7efcb230c5ef6258171cc01e2fddbcae94628f49e570e6c6b6dadc9ad336d2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Domain/Events/Handlers/UserAccountInsertedDomainEventHandler.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b3995e4ebf527b3266750a85ba62e5afcfd0e1243bf61720bb86c5a059ca28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do something, trigger message (integration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Domain/Events/Handlers/UserAccountUpdatedDomainEventHandler.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e99f40bd704c190c5cc2177f373552c99a2e7436c8221c1b01dc45908074aeae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be immutable, but settable for json deserialization \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Application/Commands/CreateCustomerCommand.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e0e79c481403a4bb22a773593500f4709717f1011ba58738f80de5375b4533"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //public Customer Customer { get; set; } // TODO: should be immutable, but settable for json deserialization \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Application/Commands/CreateCustomerCommand.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"187ddd129ca3fa8aa0cd81ec6f464d5f24697ef5edff89a9dc86a3da66dc0719"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: publish CreatedCustomer message (messaging) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Application/Commands/CreateCustomerCommandHandler.cs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee5f23d26411c3d082e276b52d776e86f3860f2be7a96aab99d3d28a5affe8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: discover (how?) alle aggregates for this module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Customers/Presentation/CompositionRoot.cs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b669f2d1270fc44be3865cd4c749d4d245dc5d21e8b33bbd8e74506e1001902a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: is valueobject or entity? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/Shopping/Domain/Model/CartItem.cs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"edde06642f11694e942448873181bff0ca4e2b193e8abb46517a0160cf0dd303"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //modelBuilder.HasDefaultSchema(\u0022Development\u0022); // TODO: this is too static, as the migration contains the environment (fixed) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Infrastructure/EntityFramework/UserAccountsDbContext.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb93805ba9c9cf2f3a0be8a23ae4be4a17a0ce6513c55f5d4c28e6535455c7ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //\u0022naos_sample_test\u0022, // TODO: resolve from runtime context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Presentation/CompositionRoot.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"30eb94631d5b358399b44f0e7bfb12258c93faafc15f16721a7d00717789aea0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: resolve from runtime context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/Sample/UserAccounts/Presentation/CompositionRoot.cs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf6017f7dfd2476007eca4272fd5b64ae98afa8b9059119f1b503cfb9dd5253"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: delete table first (if exists) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/KeyValueStorage/KeyValueStorageBaseTests.cs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f90ccbbc03326deb9d517b7f351e37c0ede4121f0143410428e798a078f152"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should verify that only one retry occurred. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/UnitTests/Queueing/QueueBaseTests.cs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd1e5e3566fa38d8d38aa6612c4f4b6694d9e584b8bcf0c450fd7cfa2480d42"}},{"ruleId":"D19","level":"note","message":{"text":"The README contains only an architectural Concepts section (a single bulleted list of patterns) plus the dev stack and a logo; there is no cohesive architecture or design documentation describing how each module fits together.: Expand with a high-level architecture diagram showing modules, their interdependencies, and data flow. Add a Design section covering domain events, repositories, query patterns, and cross-cutting concerns."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":""},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"542c9a131cec0fd2b125b9dcf51fa3584a123006b1d79ecd2c34d211fa7329ed"}},{"ruleId":"D19","level":"note","message":{"text":"No architecture or per-module design documentation describing how each module fits together.: Create an Architecture document mapping every module to its purpose, dependencies, and the modules it interacts with."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":""},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ecaaf7aca6317db1bd7298e25b310921763f5d8febede50729f19d24d88fd2b"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Application: Application: 0 % XML-doc coverage (0/10)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application/Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5a9b574080b90e6e3e51ffd1b47ca0ec417f8fc5550e48076c79e643016d64"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Application.Web(netcoreapp3.1): Application.Web(netcoreapp3.1): 32 % XML-doc coverage (11/34)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Application.Web/Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2cc5dd7e56938941fa8d1765f3d570e3c20ed9b153ee7e6d8dfb36cbf39b8c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Application.Web(netcoreapp3.1): Application.Web(netcoreapp3.1): 35 % XML-doc coverage (50/141)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web/Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"000f1a03f28a8ffe4a1f6adc02dc2d152c33a83dc8181662f38be6a19143e904"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Domain: Domain: 29 % XML-doc coverage (42/147)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain/Domain.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0bd5044b2bb78e395ca27c882991ed6c80828939081173ea4beb58f5dae3714"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Azure.Cosmos: Infrastructure.Azure.Cosmos: 8 % XML-doc coverage (11/136)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Infrastructure.Azure.Cosmos.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdfe7cc2bbe7f48ce1951cee90965a0adc946a92288d0ccff27a3a360677d4a0"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Azure.LogAnalytics: Infrastructure.Azure.LogAnalytics: 0 % XML-doc coverage (0/26)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.LogAnalytics/Infrastructure.Azure.LogAnalytics.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b17e18d2f32b91d88cdb4afa5f269ec82161e72203ca18edda7a53cd74bb2fb"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Infrastructure.RabbitMQ: Messaging.Infrastructure.RabbitMQ: 5 % XML-doc coverage (2/40)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.RabbitMQ/Messaging.Infrastructure.RabbitMQ.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa3fa25ed7410f94d294dcad4fbe28937a81764a704142e8c6578949a7e17bc"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Commands.Application: Commands.Application: 31 % XML-doc coverage (32/104)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application/Commands.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4ca68bb15032daab7bae019cbfd27c7347e3f8788a7809e9b42002655d690f9"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Infrastructure.Azure: Messaging.Infrastructure.Azure: 15 % XML-doc coverage (6/39)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure/Messaging.Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"30cadb514dfd0fbf056f16bc0db8b14f1a16761918042b1fbe597895b0f4ae38"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Azure.KeyVault: Infrastructure.Azure.KeyVault: 0 % XML-doc coverage (0/11)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.KeyVault/Infrastructure.Azure.KeyVault.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"885818aa160048e8162216ef43a94f5be869204059d78f3c67dc25e81b4c6823"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Configuration.Application: Configuration.Application: 14 % XML-doc coverage (9/64)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application/Configuration.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d546476e635ae14900520fe299ac7c89b3d5a82af8f665dec0fb50da2e19300"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Azure.Arm: Infrastructure.Azure.Arm: 0 % XML-doc coverage (0/1)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Arm/Infrastructure.Azure.Arm.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e390ec7cb8e0c277678a3500cdf8d32d8570cc3a95886aeebbfff64064285cde"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Domain.Repositories: Domain.Repositories: 40 % XML-doc coverage (78/197)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories/Domain.Repositories.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"00abd663acc8014a1612216ded7c28ca6967ac175fb26a8ea3fafce9e0f7f3dc"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Domain.Specifications: Domain.Specifications: 0 % XML-doc coverage (0/90)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Specifications/Domain.Specifications.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"36c415d862388cf5547499973639b4124c231716ad9bff0727a6433b4091b590"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Domain.Repositories.AutoMapper: Domain.Repositories.AutoMapper: 0 % XML-doc coverage (0/7)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories.AutoMapper/Domain.Repositories.AutoMapper.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f05e6c709f9b948d0ead5621f0607605d69ec5ec9bbaefbfb963a8177a9c01"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.EntityFramework: Infrastructure.EntityFramework: 22 % XML-doc coverage (18/81)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EntityFramework/Infrastructure.EntityFramework.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a10bceac20ec9fac719a75ac310a3948d24e9a4b5436db011284f9f896180f0d"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Azure.ServiceBus: Infrastructure.Azure.ServiceBus: 17 % XML-doc coverage (4/23)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.ServiceBus/Infrastructure.Azure.ServiceBus.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e41f67cbf79c2bc2b53b25c20151b14fef106a76d88f198a329e5d1e293cc048"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Operations.Domain: Operations.Domain: 2 % XML-doc coverage (1/42)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Domain/Operations.Domain.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1f8ca57a16258a054c3244523d6b7a5ab365f60f5ffb4917c6a7696ba10bdf"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: JobScheduling: JobScheduling: 28 % XML-doc coverage (29/105)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling/JobScheduling.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da08de3b268dbe689fdf30f31e29f3452b04c58f0dd36753ed4c2c7f240924d"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: JobScheduling.Application.Web(netcoreapp3.1): JobScheduling.Application.Web(netcoreapp3.1): 0 % XML-doc coverage (0/10)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application.Web/JobScheduling.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed897c519cbf4d6ffbe7d20051e4afce332121580cac2c31c041de77623077c9"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: RequestFiltering.Application(netcoreapp3.1): RequestFiltering.Application(netcoreapp3.1): 46 % XML-doc coverage (22/48)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Filtering.Application/RequestFiltering.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9657f071ee17bcd420cd8b1d4ce16c7bd1805c502aa8ecdb211f38ed4a0cfcf1"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Infrastructure.FileStorage: Messaging.Infrastructure.FileStorage: 0 % XML-doc coverage (0/30)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.FileSystem/Messaging.Infrastructure.FileStorage.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"05140de291b8bfec74166e28abe855328c3c9849ce3a7e6da55d593e6b2a8a66"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Infrastructure.Azure.SignalR: Messaging.Infrastructure.Azure.SignalR: 3 % XML-doc coverage (1/36)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Infrastructure.Azure.SignalR/Messaging.Infrastructure.Azure.SignalR.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"266212fcb0165d0e449a02291b1e5cdc1f332f2899d4fbe53ae52e7ad0561fc1"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: ServiceContext.Application(netcoreapp3.1): ServiceContext.Application(netcoreapp3.1): 27 % XML-doc coverage (9/33)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceContext.Application/ServiceContext.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"88fc091ead060c0fbfa5b4e1ff006e2096624a925c70c36f861830ea462fc984"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: ServiceDiscovery.Application.Consul: ServiceDiscovery.Application.Consul: 22 % XML-doc coverage (2/9)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Consul/ServiceDiscovery.Application.Consul.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c7a2a0c20cb2e92bb5a2ab044de4288bd3d8abce8b856720700b9e96d2cd8c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: ServiceDiscovery.Application(netcoreapp3.1): ServiceDiscovery.Application(netcoreapp3.1): 5 % XML-doc coverage (4/79)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application/ServiceDiscovery.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2c1da1af985e788adc45c019ec4fb4ea1205ca8f09d2f866ff086a037f9053"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Authentication.Application.Web(netcoreapp3.1): Authentication.Application.Web(netcoreapp3.1): 18 % XML-doc coverage (19/107)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Authentication.Application.Web/Authentication.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"822032af0a2b39ba44fd83663ecef16a5e43b09af34cd5b8cb78c1cdcf88d963"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: ServiceDiscovery.Application.Web.Router: ServiceDiscovery.Application.Web.Router: 16 % XML-doc coverage (5/31)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ServiceDiscovery.Application.Web.Router/ServiceDiscovery.Application.Web.Router.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2402a6682a503b2736d455061c0252a6ba237a172202ab27c036fe763cc7d1a3"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Application.Azure: Messaging.Application.Azure: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.Azure/Messaging.Application.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5fb8d4d4c7af725f76caf2d991462f6239694757870fe7e0fd9a0edb126967"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Application.Azure.SignalR: Messaging.Application.Azure.SignalR: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.Azure.SignalR/Messaging.Application.Azure.SignalR.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20721ac651009f83f51948129b0de511c560188a7108faad23200690daf4a2e"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Application.FileStorage: Messaging.Application.FileStorage: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.FileSystem/Messaging.Application.FileStorage.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8871ec9a4123bd099f23144ddc597f85dbc1368f829cf5a44082b7228479852"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Application.RabbitMQ: Messaging.Application.RabbitMQ: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.RabbitMQ/Messaging.Application.RabbitMQ.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06d23d827bd204c3aebd6fcdb0879600eed2a25b1c7056efa76d00c5bf6df995"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Application.Web: Messaging.Application.Web: 0 % XML-doc coverage (0/3)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application.Web/Messaging.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2056f73f831937ec1364d1b42c0ab8873870af9817a5f3742cc1adf379ff99d4"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: JobScheduling.Application: JobScheduling.Application: 0 % XML-doc coverage (0/24)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/JobScheduling.Application/JobScheduling.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39beb94ce691339cb92f12a0c9c0f753342c41a5c5160b496b28fee3c048df7"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Commands.Domain: Commands.Domain: 9 % XML-doc coverage (1/11)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Domain/Commands.Domain.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3dafbd9d26a8da8a93341573900eb343673c3a8a9bebad87f5a2ce8de33e82"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Operations.Application.Web(netcoreapp3.1): Operations.Application.Web(netcoreapp3.1): 13 % XML-doc coverage (7/52)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application.Web/Operations.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f96aa5d4c993f35ae4c2669307d8e999ed5528f52d33e82fa3a1fa6f139935"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Exceptions.Application.Web(netcoreapp3.1): Exceptions.Application.Web(netcoreapp3.1): 7 % XML-doc coverage (2/28)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Exceptions.Application.Web/Exceptions.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d6332f520cb3cd4f6b1e71cb719fe8e7c6d25a906df029f2f955d9a5ce8fae"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: FileStorage: FileStorage: 1 % XML-doc coverage (1/111)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage/FileStorage.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9e4a31411fca5ca81638c4a6dd0ba6815e0e8c17c1ed1a46cebc2bc1cd81f4"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: FileStorage.Infrastructure.Azure: FileStorage.Infrastructure.Azure: 0 % XML-doc coverage (0/61)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Azure/FileStorage.Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f43a5fccbe10132e8f7c7da6f8dc8707a98ac129af6221175a30087eb9f8d2d"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: FileStorage.Infrastructure.FileSystem: FileStorage.Infrastructure.FileSystem: 0 % XML-doc coverage (0/42)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.FileSystem/FileStorage.Infrastructure.FileSystem.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ddfc7944ee9bf226130496ed7ac33954bd447608501a5b2870249f090220d66"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: FileStorage.Infrastructure.Ssh: FileStorage.Infrastructure.Ssh: 0 % XML-doc coverage (0/31)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Infrastructure.Ssh/FileStorage.Infrastructure.Ssh.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8969920c57c7b81d2fffc609bb4941f9de588f2345346d81383cc97e88f21dfd"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Messaging.Application: Messaging.Application: 0 % XML-doc coverage (0/16)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Messaging.Application/Messaging.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2520b2e5a3eada0743ff1b4ec85a53ce091591d2b6f3e65b7fe9612e8312fd5e"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Operations.Application: Operations.Application: 0 % XML-doc coverage (0/77)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/Operations.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09ba0c52fbbe5db51acfb565aaa8f165430fffd1713acc3c43283750664078d"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Operations.Infrastructure.Azure: Operations.Infrastructure.Azure: 0 % XML-doc coverage (0/22)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Azure/Operations.Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7a72673480a2ac09c9d6a814ddc1737b4c7d1c44042e77dc352241d805ae69"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Configuration.Application.Web(netcoreapp3.1): Configuration.Application.Web(netcoreapp3.1): 10 % XML-doc coverage (1/10)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Configuration.Application.Web/Configuration.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0036365f84637036792ae8d39a5623f22803a03a35aaccab0e2c0e106849dbe2"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Azure: Infrastructure.Azure: 0 % XML-doc coverage (0/32)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure/Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9a6a18c030074eb27396ad267c85cb5806a1a4ea4f288978bca82b910c5c9a"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing: Queueing: 1 % XML-doc coverage (2/136)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing/Queueing.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2523a4dee11ab27846efd8d857081626479fec8adb543a51ecd4d32fe5d59e3"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing.Infrastructure.Azure: Queueing.Infrastructure.Azure: 17 % XML-doc coverage (16/92)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Queueing.Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ba23702d562e1b716d1a14bd4fca71f952efafa3007c875a51ecae6a9440baa"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing.Application: Queueing.Application: 0 % XML-doc coverage (0/16)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application/Queueing.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"377f6fc4d8b462d923fffcc9fd9de92a02e7674e36de1a2efd3c0a48ce9859af"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing.Application.Web: Queueing.Application.Web: 8 % XML-doc coverage (2/24)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application.Web/Queueing.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0b1fb5303a973a49ec7f98b22de84f3bb586ed3468706741a650244f6fc6002"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Console: Console: 0 % XML-doc coverage (0/54)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Console/Console.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e84318f113b66db381354a296c6552f30e29e442660440b421ab142df2db01"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: KeyValueStorage.Infrastructure.Azure: KeyValueStorage.Infrastructure.Azure: 3 % XML-doc coverage (1/30)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.Azure/KeyValueStorage.Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b57267c21d1ec905654d8ef8625b1fbb7ad2addaf54a66cf36c3753abc73f8"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: KeyValueStorage: KeyValueStorage: 21 % XML-doc coverage (16/75)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage/KeyValueStorage.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e79cf14207471f7c9af7d92e3b6190cdbf448769e6b2839389bb6a61f222c7"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Criteria: Criteria: 5 % XML-doc coverage (1/19)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Criteria/Criteria.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"912cd5c67a2cb48379266ed1e798e9904c2241a591f90aa3f1faf04097a72e6c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Compression: Compression: 35 % XML-doc coverage (6/17)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Compression/Compression.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a69e633febc1f8fbbfb501cd4a7d990ef9f4674a391b94d445d547233cd0365"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: KeyValueStorage.Infrastructure.FileStorage: KeyValueStorage.Infrastructure.FileStorage: 6 % XML-doc coverage (1/17)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.FileStorage/KeyValueStorage.Infrastructure.FileStorage.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6127dc540a6784c53404c1e74d82bd04ce30422e88e45b41ba0b1927830750"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: FileStorage.Csv: FileStorage.Csv: 0 % XML-doc coverage (0/4)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/FileStorage.Csv/FileStorage.Csv.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74d7cf2a8ba868c36e1819041d01eb540771940a43d3fdde75eb536a6e28992"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Serialization.Csv: Serialization.Csv: 0 % XML-doc coverage (0/8)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Serialization.Csv/Serialization.Csv.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f1f669c234aaa1a50b7dc31492bb55bf28642b12fed428f3d2ec26e538c632c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Abstractions: Abstractions: 19 % XML-doc coverage (21/110)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Abstractions/Abstractions.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc1ca1846ee05b9558e6434f534f5ad90ded9fe11fe5216983f80a386469a663"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Extensions: Extensions: 33 % XML-doc coverage (86/261)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Extensions/Extensions.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f625fcd6be9fb95c2afdfd6d2bc94058f9c714208402aa03c22574655191af4e"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Commands.Infrastructure.FileStorage: Commands.Infrastructure.FileStorage: 20 % XML-doc coverage (1/5)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Infrastructure.FileStorage/Commands.Infrastructure.FileStorage.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"269b42d03fd6e64b45b3e4dd665c07b3e6f9f7e88df8b43cf1f2bae321b44a5a"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Utilities: Utilities: 28 % XML-doc coverage (79/280)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities/Utilities.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2482d2e081c7900600f1e157ab2baa49dd13b8db6eea12e715c695dadbeacd6"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Application.Web.Startup(netcoreapp3.1): Application.Web.Startup(netcoreapp3.1): 28 % XML-doc coverage (7/25)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web.Startup/Application.Web.Startup.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa966b0b043355d0979a2e4b76d2c86d2ae0aa0b8debd4938998a39fa6b97aed"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: ContentTypes: ContentTypes: 0 % XML-doc coverage (0/15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.ContentTypes/ContentTypes.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c0c63468ca19282c16b6b9cf3f3d6c39393af092a3eb49df5b768d183e97bd"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Logging: Logging: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Logging/Logging.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b609bf41693c88cc57f6b886395e4554549b09089a634a700212941f9864664"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Resources: Resources: 0 % XML-doc coverage (0/9)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Resources/Resources.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddcb4949cc8804062c9709e57fe3a0a9c65fff311af1f16a90f32dcb16a7e13c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Tracing.Domain: Tracing.Domain: 25 % XML-doc coverage (46/183)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Tracing.Domain.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17aad8d45c30c9302b250b72503a5f4297021e58e31e82dceb1613b7ba26c34"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Tracing.Application: Tracing.Application: 5 % XML-doc coverage (1/22)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application/Tracing.Application.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12ba508902aa633a3a6ef8a03d706c161f4bbbb6d546aaf7de677c8b40e40d7"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Tracing.Infrastructure.Azure: Tracing.Infrastructure.Azure: 0 % XML-doc coverage (0/7)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Azure/Tracing.Infrastructure.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86bc4f05ba70b25b03a931eb8802c12e5339b10b3da318c39ba5e2ca9956741"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Commands.Application.Web(netcoreapp3.1): Commands.Application.Web(netcoreapp3.1): 5 % XML-doc coverage (6/118)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/Commands.Application.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5be082447ebb70961cca1a5a20e7eb7fd5322daaacf0a26ef2704b76537953"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Utilities.Web(netcoreapp3.1): Utilities.Web(netcoreapp3.1): 0 % XML-doc coverage (0/11)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities.Web/Utilities.Web.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f5df6d9f0bdd414d898c36a9aef69c53293eb9428bcaf926f24701dabbbabb"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Documents.SqlServer: Infrastructure.Documents.SqlServer: 0 % XML-doc coverage (0/74)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Infrastructure.Documents.SqlServer.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fdb1c1e057c4b5836630c55db0f8bd6d1d398ac18853782661a62281104d647"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Documents.Sqlite: Infrastructure.Documents.Sqlite: 0 % XML-doc coverage (0/13)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.Sqlite/Infrastructure.Documents.Sqlite.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f30088a2f1d6d51e9c5f337e36adef8bb2e2f98c2785d3ae51c6658494c0874b"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.Mongo: Infrastructure.Mongo: 7 % XML-doc coverage (5/74)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Mongo/Infrastructure.Mongo.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"936a4aa14f5328af94582de94b8be592129d0cbc6cad21fce8842deeaf59231a"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Operations.Infrastructure.Mongo: Operations.Infrastructure.Mongo: 3 % XML-doc coverage (1/35)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Infrastructure.Mongo/Operations.Infrastructure.Mongo.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"535ab85c599910b6d4f919f51b4d604090e75a0c81edeac330fd78b455e7c91b"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Operations.Abstractions: Operations.Abstractions: 0 % XML-doc coverage (0/7)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Abstractions/Operations.Abstractions.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b396ff076575b3e7b4990079cb3ef81743bb1ac660ca0af47d1c3569108177"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Tracing.Infrastructure.Mongo: Tracing.Infrastructure.Mongo: 3 % XML-doc coverage (1/39)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Mongo/Tracing.Infrastructure.Mongo.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f48e7405bd856f79bc838ea54a78463151cfc6e691ac3e9e12ebaa3d48cea049"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Utilities.Xunit: Utilities.Xunit: 30 % XML-doc coverage (19/63)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Utilities.Xunit/Utilities.Xunit.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eaa9e1fd3231d781a580bb1b903e10fd412a338621fef06f14b3e4c9aec8c35"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Application.Web.Startup.EntityFramework: Application.Web.Startup.EntityFramework: 8 % XML-doc coverage (1/13)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web.Startup.EntityFramework/Application.Web.Startup.EntityFramework.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e944387374fd92c4168a87e5e5878a4b7dbadb040cfc7fefafecf9d7ec945cd"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Tracing.Infrastructure.Zipkin: Tracing.Infrastructure.Zipkin: 0 % XML-doc coverage (0/30)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Infrastructure.Zipkin/Tracing.Infrastructure.Zipkin.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b75d7e5918e7ebda3b65a2b80469b07636c6a6e3a54e147155c04cd1c2cb161"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Domain.Repositories.Documents: Domain.Repositories.Documents: 3 % XML-doc coverage (1/29)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.Repositories.Documents/Domain.Repositories.Documents.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2681539bcac638301b2ba6d071c92a81459da29d70d3ff3b5b6a6e8d1287698f"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Tracing.Application.Zipkin: Tracing.Application.Zipkin: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Application.Zipkin/Tracing.Application.Zipkin.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"883c7437748a0ba3ad0b653be51d07a8f8f2b08769dc65a93899bd062100659e"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing.Infrastructure.RabbitMQ: Queueing.Infrastructure.RabbitMQ: 0 % XML-doc coverage (0/39)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.RabbitMQ/Queueing.Infrastructure.RabbitMQ.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e62b7972c0315433b382f39a51eabe2807218b5c3fc5aa25437724055df5f086"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Application.Web.Startup.Repositories: Application.Web.Startup.Repositories: 12 % XML-doc coverage (1/8)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Application.Web.Startup.Repositories/Application.Web.Startup.Repositories.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49af5943efee086fbff5368030f0faa2063b4258a2cbcbc2548d87d0e201de58"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing.Application.Azure: Queueing.Application.Azure: 0 % XML-doc coverage (0/3)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application.Azure/Queueing.Application.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17fce58782d8c6d434a7b0fc9639822c910891d336e6c391560413621a41402"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Queueing.Application.RabbitMQ: Queueing.Application.RabbitMQ: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Application.RabbitMQ/Queueing.Application.RabbitMQ.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed3a7d3124b4892e872a40c23f97df4766cb2a28ca1ecc1de55c6baaa646f367"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.RabbitMQ: Infrastructure.RabbitMQ: 0 % XML-doc coverage (0/9)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.RabbitMQ/Infrastructure.RabbitMQ.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ed15e7fb6ac23b8a3e7c43e0dba76be1f5a8c9eeac603b5ec3f6955c73f247f"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: KeyValueStorage.Infrastructure.LightningDb: KeyValueStorage.Infrastructure.LightningDb: 6 % XML-doc coverage (1/17)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/KeyValueStorage.Infrastructure.LightningDb/KeyValueStorage.Infrastructure.LightningDb.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e782f5fcf527376d657215ed293705b4ef604614378235d7cc2056bdee697c"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Commands.Application.Web.Azure: Commands.Application.Web.Azure: 0 % XML-doc coverage (0/6)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web.Azure/Commands.Application.Web.Azure.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b2bdf989f1b47360f6da04b0da6d1032c205040dd889471e6f90536c1ed53b"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Commands.Application.Web.RabbitMQ: Commands.Application.Web.RabbitMQ: 0 % XML-doc coverage (0/2)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web.RabbitMQ/Commands.Application.Web.RabbitMQ.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdede399b24d0378db5409d5c38ce5d5c3e5c85c7e718439768365411b370b6e"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Domain.EventSourcing: Domain.EventSourcing: 0 % XML-doc coverage (0/50)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Domain.EventSourcing/Domain.EventSourcing.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d11efb86734fe2d080104c806dab7c1b1defebefa053c56a98366bddae3c7d"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Infrastructure.EventSourcing: Infrastructure.EventSourcing: 0 % XML-doc coverage (0/11)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.EventStore/Infrastructure.EventSourcing.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b6e122735c836a749e347b3a250bbf4c0c09a056fab629b8f4a0c647b3ac0c"}},{"ruleId":"D23","level":"note","message":{"text":"Bounded contexts not declared: At 52k LoC across 123 projects the codebase is both large and multi-module, so explicit bounded contexts are warranted. Name this codebase\u0027s bounded contexts (\u22652 module groups, e.g. per subsystem) so cross-boundary type coupling can be assessed. Declare them in \u0060.codehealth/config.yaml\u0060 at the repository root (create it if absent), mapping each context name to the namespace prefixes that belong to it \u2014 e.g. \u0060architecture:\u0060 \u2192 \u0060contexts:\u0060 \u2192 \u0060Billing: [\u0022Acme.Billing\u0022]\u0060, \u0060Catalog: [\u0022Acme.Catalog\u0022]\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c7e276c9c682731f01819ed5378b90ca320cde1b583c90920172911598362b3"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"abc8ccc507cc39a5da276d953dcc851fbeeed974ce9bfda5650e1b4f0dd4cd62"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"78b1782fda4cfe1fcc9a6d8119921b82d7767b440f7ca915d36a14c04bd7f8a5"},"taxa":[{"id":"CWE-502","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4743fb763c581ed49ec92f77b0e64b559145bf48531ad6525be3ffeae5d305ab"},"taxa":[{"id":"CWE-502","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"998549978dadefc2084ff427bae8c51c46d070fb745cd8f8bdaf0098f8f64e56"},"taxa":[{"id":"CWE-502","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4cd6b0cfa21023666098808e2e1ea76601f3a983c0a2d2ba30b115574a6c387c"},"taxa":[{"id":"CWE-502","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"note","message":{"text":"Dormant codebase: 274 of 274 significant files have no living knowledge \u2014 the codebase as a whole is dormant, not 274 separate risks. Re-engage owners or document before change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c69f1e54b7dd6fe9029dd02df6ba8f8145b789f2f18dbdaa086c40ded49dba6"}},{"ruleId":"D34","level":"note","message":{"text":"Largest orphaned file: One of the largest files with no living knowledge remaining \u2014 a reasonable place to start a read-through before the aggregate risk above bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.ContentTypes/ContentType.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d89ae806c3c63d6d23eb5ea381ccacbad6adabc2b66f9f712fe46ba5a799979e"}},{"ruleId":"D34","level":"note","message":{"text":"Largest orphaned file: One of the largest files with no living knowledge remaining \u2014 a reasonable place to start a read-through before the aggregate risk above bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0fdca53519b3746645a090f70b23eff396bfeb0a496dc2f573e44c869e2f8a"}},{"ruleId":"D34","level":"note","message":{"text":"Largest orphaned file: One of the largest files with no living knowledge remaining \u2014 a reasonable place to start a read-through before the aggregate risk above bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Azure.Cosmos/Repositories/Provider/V2/CosmosSqlProviderV2.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f853648a5198f24cec680b66bf59610a30b0aa6c0d734fa7e12756bc062209a5"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: AzureStorageQueueOptionsBuilder.cs \u2194 QueueOptionsBase.cs: \u0060src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueueOptionsBuilder.cs\u0060 (context Queueing.Infrastructure.Azure) and \u0060src/Queueing/Domain/Model/QueueOptionsBase.cs\u0060 (context Queueing) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 of the 11 commits that touched the less-changed of the two, renames followed) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueueOptionsBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3039f95bcc17b11a1df09f4a62bbcf758618246645f6e436047b33cac247ea92"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: AzureStorageQueue.cs \u2194 InMemoryQueueOptionsBuilder.cs: \u0060src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs\u0060 (context Queueing.Infrastructure.Azure) and \u0060src/Queueing/InMemoryQueueOptionsBuilder.cs\u0060 (context Queueing) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 of the 11 commits that touched the less-changed of the two, renames followed) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee68b81b78eb225ee1737ad743d57a16a257894a13eb67bc7e19c247a1672af"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: AzureServiceBusQueue.cs \u2194 InMemoryQueueOptionsBuilder.cs: \u0060src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs\u0060 (context Queueing.Infrastructure.Azure) and \u0060src/Queueing/InMemoryQueueOptionsBuilder.cs\u0060 (context Queueing) sit in DIFFERENT parts of the tree yet change together 55% of the time (6 of the 11 commits that touched the less-changed of the two, renames followed) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/ServiceBus/AzureServiceBusQueue.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a067b1fe732fe00edacf3cc9fc2f3e19d43407eb52bd12fc6d3bb6ae376c1f6e"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: AzureStorageQueue.cs \u2194 QueueOptionsBase.cs: \u0060src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs\u0060 (context Queueing.Infrastructure.Azure) and \u0060src/Queueing/Domain/Model/QueueOptionsBase.cs\u0060 (context Queueing) sit in DIFFERENT parts of the tree yet change together 54% of the time (7 of the 13 commits that touched the less-changed of the two, renames followed) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cbc68058e93166bc6f867fd1e06044b77a48c6e3ed6807732c18032c91bbd26"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: OperationsOptionsExtensions.cs \u2194 HttpClientTracerHandler.cs: \u0060src/Operations.Application/OperationsOptionsExtensions.cs\u0060 (context Operations) and \u0060src/Tracing.Application/HttpClientTracerHandler.cs\u0060 (context Tracing) sit in DIFFERENT parts of the tree yet change together 50% of the time (5 of the 10 commits that touched the less-changed of the two, renames followed) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Operations.Application/OperationsOptionsExtensions.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dc0fefdcc2fc37b4e494df40d85094cb5f5bb0afb11088fe2ea21acfbb255cc"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: AzureStorageQueue.cs \u2194 QueueItem.cs: \u0060src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs\u0060 (context Queueing.Infrastructure.Azure) and \u0060src/Queueing/Domain/Model/QueueItem.cs\u0060 (context Queueing) sit in DIFFERENT parts of the tree yet change together 50% of the time (5 of the 10 commits that touched the less-changed of the two, renames followed) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Queueing.Infrastructure.Azure/Storage/AzureStorageQueue.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5cced4eb2f9954d7036457c7e2423cb0cf42b3644e315ad392cd73bcc6e7f67"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: ISqlBuilder.cs \u2194 SqlServerDocumentProvider.cs: \u0060src/Foundation.Infrastructure.Documents.SqlServer/Provider/ISqlBuilder.cs\u0060 and \u0060src/Foundation.Infrastructure.Documents.SqlServer/Provider/SqlServerDocumentProvider.cs\u0060 change together 100% of the time (10 of the 10 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. They already sit in the same directory, so if they share structure, extract the common part into one unit; otherwise break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Foundation.Infrastructure.Documents.SqlServer/Provider/ISqlBuilder.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07b487fd6745d082fe55c05c65643ae1092dfd63610c3a4903cfa4dba4740f10"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: CommandRequestWrapper.cs \u2194 MediatorDispatcherCommandRequestExtension.cs: \u0060src/Commands.Application.Web/CommandRequestWrapper.cs\u0060 and \u0060src/Commands.Application.Web/Middleware/Extensions/MediatorDispatcherCommandRequestExtension.cs\u0060 change together 73% of the time (8 of the 11 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestWrapper.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"343be4e11ee575dc6b0bae637c689805f8a7fc806c5bfb40151d2a588ab047ae"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: AsyncLocalScope.cs \u2194 IScopeManager.cs: \u0060src/Tracing.Domain/Model/AsyncLocalScope.cs\u0060 and \u0060src/Tracing.Domain/Model/IScopeManager.cs\u0060 change together 73% of the time (8 of the 11 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. They already sit in the same directory, so if they share structure, extract the common part into one unit; otherwise break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Tracing.Domain/Model/AsyncLocalScope.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea4b24e07d58859ec7748f975cc60c7c267f124cc976ee01549c8b78de1b394"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: CommandRequestQueueEventHandler.cs \u2194 QueueDispatcherCommandRequestExtension.cs: \u0060src/Commands.Application.Web/CommandRequestQueueEventHandler.cs\u0060 and \u0060src/Commands.Application.Web/Middleware/Extensions/QueueDispatcherCommandRequestExtension.cs\u0060 change together 69% of the time (11 of the 16 commits that touched the less-changed of the two, renames followed) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Commands.Application.Web/CommandRequestQueueEventHandler.cs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b66ff127d978aa52a26ac1c8a153ea17987b60d9924fae39dc1919886402c89"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-502","guid":"f7d3b296-aac0-5c5a-b706-e07faba26c36","name":"CWE-502","shortDescription":{"text":"CWE-502"},"helpUri":"https://cwe.mitre.org/data/definitions/502.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":9,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}