Umbraco is a free and open source .NET content management system helping you deliver delightful digital experiences.
This report summarizes scanner evidence for umbraco/Umbraco-CMS, a C# project with 5,265 GitHub stars. SynthScan examined 1,437,481 lines of code across 17142 source files, recording 5979 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 4.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 5660 finding(s).
Are imports declared and package/API names verified? 266 finding(s).
Are wrappers, guards, and repeated structures necessary? 139 finding(s).
Which changes need focused human review? 5979 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 5979 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/Umbraco.Tests.Benchmarks/HexStringBenchmarks.cs | 41 | // Nov 8 2018 | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/HexStringBenchmarks.cs | 61 | // ToHexStringBuilder | 64 | 5,775.33 ns | 2,825.42 ns | 154.871 ns | 1.00 | | COMMENT |
| LOW | …Tests.Benchmarks/CompositeStringStringKeyBenchmarks.cs | 1 | using System.Collections.Concurrent; | COMMENT |
| LOW | …Tests.Benchmarks/CompositeStringStringKeyBenchmarks.cs | 81 | COMMENT | |
| LOW | …Tests.Benchmarks/CompositeStringStringKeyBenchmarks.cs | 101 | // | 'OrdinalIgnoreCase: TryGetValue (mixed case)' | 32.6253 ns | 14.1231 ns | 0.7741 ns | 1.218 | - | | COMMENT |
| LOW | …Umbraco.Tests.Benchmarks/StringExtensionsBenchmarks.cs | 241 | } | COMMENT |
| LOW | …braco.Tests.Benchmarks/StringReplaceFirstBenchmarks.cs | 61 | //| | | | | | | | | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/CollectionBenchmarks.cs | 81 | [Benchmark] | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/CollectionBenchmarks.cs | 101 | //| IReadOnlyListToList | 236.8 ns | 3.77 ns | 3.53 ns | 0.6464 | 0.0098 | 4056 B | | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/GuidUdiBenchmarks.cs | 81 | // | COMMENT |
| LOW | ….Tests.Benchmarks/CompositeStringArrayKeyBenchmarks.cs | 1 | using System.Collections.Concurrent; | COMMENT |
| LOW | ….Tests.Benchmarks/CompositeStringArrayKeyBenchmarks.cs | 101 | // | 'OrdinalIgnoreCase: construct key' | 40.20 ns | 0.58 | 0.0112 | 48 B | | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/CombineGuidBenchmarks.cs | 41 | //WarmupCount=3 | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/HashFromStreams.cs | 1 | using System.IO; | COMMENT |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 1 | using System; | COMMENT |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 101 | // else | COMMENT |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 121 | /// <remarks> | COMMENT |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 141 | // else if (char.IsSeparator(c)) | COMMENT |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 3321 | COMMENT | |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 3601 | // { | COMMENT |
| LOW | …ts/Umbraco.Tests.Benchmarks/OldUtf8ToAsciiConverter.cs | 3621 | // return false; | COMMENT |
| LOW | …/Umbraco.Tests.Benchmarks/MediaUniqueNameBenchmarks.cs | 21 | /// <list type="bullet"> | COMMENT |
| LOW | …mbraco.Tests.Benchmarks/ShortStringHelperBenchmarks.cs | 101 | //| RemoveSurrogatePairs | 70.75 ns | 15.307 ns | 0.839 ns | 1.00 | 0.0610 | 192 B | | COMMENT |
| LOW | tests/Umbraco.Tests.Benchmarks/DetectJsonBenchmarks.cs | 61 | } | COMMENT |
| LOW | …anagement/Services/UserStartNodePathComparisonTests.cs | 1 | using NUnit.Framework; | COMMENT |
| LOW | …Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs | 81 | // { | COMMENT |
| LOW | …Tests.UnitTests/Umbraco.Web.Common/ImageCropperTest.cs | 101 | // Alias = "thumb", | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 1 | // // Copyright (c) Umbraco. | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 21 | // d.Test.CollectAuto = false; | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 41 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 61 | // Assert.IsTrue(d.Test.NextGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 81 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 101 | // var d = new SnapDictionary<int, string>(); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 121 | // Assert.AreEqual(1, d.Test.GetValues(1).Length); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 141 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 161 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 181 | // Assert.AreEqual(1, d.Test.GetValues(1).Length); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 201 | // Assert.IsFalse(d.Test.NextGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 221 | // Assert.AreEqual(0, d.GenCount); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 241 | // Assert.AreEqual(1, d.Test.LiveGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 261 | // Assert.AreEqual(2, d.Test.LiveGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 281 | // Assert.AreEqual(0, d.Test.FloorGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 301 | // Assert.AreEqual(1, d.SnapCount); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 321 | // // poof, gone | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 341 | // await d.CollectAsync(); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 361 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 381 | // // collect snapshot | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 401 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 421 | // [Test] | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 441 | // Assert.AreEqual(2, d.Test.GetValues(1).Length); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 461 | // Assert.IsFalse(d.Test.NextGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 481 | // [Retry(5)] // TODO make this test non-flaky. | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 501 | // d.Set(1, "two"); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 521 | // Assert.AreEqual(3, d.Test.LiveGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 541 | // { | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 561 | // Assert.AreEqual(2, d.SnapCount); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 581 | // [Retry(5)] // TODO make this test non-flaky. | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 601 | // v1 = s1.Get(1); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 621 | // Assert.AreEqual(0, d.SnapCount); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 641 | // Assert.AreEqual(0, s1.Gen); | COMMENT |
| 5330 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …mbraco.Tests.Benchmarks/StringReplaceManyBenchmarks.cs | 20 | //Text = "Sed ut perspiciatis unde omnis iste natus &error sit voluptatem accusantium doloremque l:audantium, to | COMMENT |
| LOW | …Configuration/ConfigureBackOfficeCookieOptionsTests.cs | 224 | new Claim(ClaimTypes.Name, "admin@example.com", ClaimValueTypes.String, Constants.Security.BackOfficeAuthent | CODE |
| LOW | …b.Website/Controllers/BasicAuthLoginControllerTests.cs | 519 | return BackOfficeIdentityUser.CreateNew(globalSettings, "admin", "admin@example.com", "en-US"); | CODE |
| LOW | …/Umbraco.Infrastructure/Security/MemberManagerTests.cs | 319 | Email = "test@test.com", | CODE |
| LOW | …aco.Tests.UnitTests/Umbraco.Core/Models/MemberTests.cs | 129 | .WithKeyValue("author", "John Doe") | CODE |
| LOW | …braco.Tests.UnitTests/Umbraco.Core/Models/UserTests.cs | 55 | .WithEmail("test@test.com") | CODE |
| LOW | …co.Tests.UnitTests/Umbraco.Core/Models/ContentTests.cs | 751 | content.SetValue("author", "John Doe"); | CODE |
| LOW | …co.Tests.UnitTests/Umbraco.Core/Models/ContentTests.cs | 755 | Assert.That(content.Properties["author"].GetValue(), Is.EqualTo("John Doe")); | CODE |
| LOW | …Core/PropertyEditors/Validators/EmailValidatorTests.cs | 20 | [TestCase("test@test.com", true)] | CODE |
| LOW | …mbraco.Core/ShortStringHelper/StringExtensionsTests.cs | 406 | [TestCase("test@test.com", true)] | CODE |
| LOW | …ts/Umbraco.Tests.Common/Builders/MemberBuilderTests.cs | 56 | var testPropertyData3 = new KeyValuePair<string, object>("author", "John Doe"); | CODE |
| LOW | …p/App_Plugins/custom-text-box/custompropertyeditors.js | 40 | this._maxLength = this.config?.getValueByAlias("maxChars"), this._placeholder = this.config?.getValueByAlias("placehol | CODE |
| LOW | …ests/DefaultConfig/Content/ContentWithTextarea.spec.ts | 83 | const textExceedMaxChars = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis porttitor orci id cu | CODE |
| LOW | …ests/DefaultConfig/Content/ContentWithTextarea.spec.ts | 83 | const textExceedMaxChars = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam mattis porttitor orci id cu | CODE |
| LOW | …ts/DefaultConfig/Content/ContentWithTextstring.spec.ts | 87 | const textExceedMaxChars = 'Lorem ipsum dolor sit'; | CODE |
| LOW | …eTest/lib/builders/dataTypes/decimalDataTypeBuilder.ts | 55 | alias: 'placeholder', | CODE |
| LOW | …o.Tests.AcceptanceTest/lib/helpers/DataTypeUiHelper.ts | 345 | this.dynamicRootPlaceholderBtn = this.dynamicRootComponent.locator('uui-button[look="placeholder"]'); | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/MemberBuilder.cs | 306 | .WithKeyValue("author", "John Doe" + i) | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/MemberBuilder.cs | 333 | .WithKeyValue("author", "John Doe") | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/MemberBuilder.cs | 354 | .WithKeyValue("author", "John Doe" + i) | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/ContentBuilder.cs | 323 | author = "John Doe" | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/ContentBuilder.cs | 337 | author = "John Doe" | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/ContentBuilder.cs | 358 | new { title = name + " Subpage", bodyText = "This is a subpage", author = "John Doe" }, | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/ContentBuilder.cs | 449 | content.SetValue("bodyText", "Lorem Ipsum Body Text Test"); | CODE |
| LOW | tests/Umbraco.Tests.Common/Builders/MediaBuilder.cs | 220 | .WithPropertyValues(new { title = name + " Subpage", bodyText = "This is a subpage", author = "John Doe" }) | CODE |
| LOW | …tion/Umbraco.Web.Common/Security/MemberManagerTests.cs | 103 | Email = "test@test.com", | CODE |
| LOW | …o.PublishedCache.HybridCache/MemberHybridCacheTests.cs | 42 | Assert.AreEqual("test@test.com", member.Email); | CODE |
| LOW | …o.PublishedCache.HybridCache/MemberHybridCacheTests.cs | 59 | Email = "test@test.com", | CODE |
| LOW | …shedCache.HybridCache/MemberPropertyCacheLevelTests.cs | 80 | Email = "test@test.com", | CODE |
| LOW | …Api/Document/GetPublicAccessDocumentControllerTests.cs | 79 | var member = MemberService.CreateMember("test", "test@test.com", "T. Est", memberType.Alias); | CODE |
| LOW | …/Document/UpdatePublicAccessDocumentControllerTests.cs | 94 | var member = MemberService.CreateMember("test", "test@test.com", "T. Est", memberType.Alias); | CODE |
| LOW | …/Document/UpdatePublicAccessDocumentControllerTests.cs | 146 | MemberUserNames = ["test@test.com"], | CODE |
| LOW | …/Document/CreatePublicAccessDocumentControllerTests.cs | 80 | var member = MemberService.CreateMember("test", "test@test.com", "T. Est", memberType.Alias); | CODE |
| LOW | …/Document/CreatePublicAccessDocumentControllerTests.cs | 121 | MemberUserNames = ["test@test.com"], | CODE |
| LOW | …/Document/DeletePublicAccessDocumentControllerTests.cs | 80 | var member = MemberService.CreateMember("test", "test@test.com", "T. Est", memberType.Alias); | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 106 | Assert.AreEqual("test@test.com", model.Email); | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 108 | Assert.AreEqual("test@test.com", model.UserName); | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 667 | Email = "test@test.com", | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 669 | UserName = "test@test.com", | CODE |
| LOW | …co.Infrastructure/Security/BackOfficeUserStoreTests.cs | 75 | Email = "test@test.com", | CODE |
| LOW | …co.Infrastructure/Security/BackOfficeUserStoreTests.cs | 76 | UserName = "test@test.com", | CODE |
| LOW | …co.Infrastructure/Security/BackOfficeUserStoreTests.cs | 102 | Email = "test@test.com", | CODE |
| LOW | …co.Infrastructure/Security/BackOfficeUserStoreTests.cs | 103 | UserName = "test@test.com", | CODE |
| LOW | …/Persistence/Repositories/ContentTypeRepositoryTest.cs | 923 | content.SetValue("metaAuthor", "John Doe"); | CODE |
| LOW | …/Persistence/Repositories/ContentTypeRepositoryTest.cs | 928 | Assert.That(updated.GetValue("metaAuthor").ToString(), Is.EqualTo("John Doe")); | CODE |
| LOW | …/Persistence/Repositories/ContentTypeRepositoryTest.cs | 967 | content.SetValue("metaAuthor", "John Doe"); | CODE |
| LOW | …/Persistence/Repositories/ContentTypeRepositoryTest.cs | 972 | Assert.That(updated.GetValue("metaAuthor").ToString(), Is.EqualTo("John Doe")); | CODE |
| LOW | …ture/Persistence/Repositories/ElementRepositoryTest.cs | 925 | element.SetValue("author", "John Doe", "en-US"); | CODE |
| LOW | …ure/Persistence/Repositories/DocumentRepositoryTest.cs | 949 | child.SetValue("author", "John Doe", culture); | CODE |
| LOW | …raco.Infrastructure/Services/UserIdKeyResolverTests.cs | 26 | UserName = "test@test.com", | CODE |
| LOW | …raco.Infrastructure/Services/UserIdKeyResolverTests.cs | 27 | Email = "test@test.com", | CODE |
| LOW | …raco.Infrastructure/Services/UserIdKeyResolverTests.cs | 47 | UserName = "test@test.com", | CODE |
| LOW | …raco.Infrastructure/Services/UserIdKeyResolverTests.cs | 48 | Email = "test@test.com", | CODE |
| LOW | …on/Umbraco.Infrastructure/Services/UserServiceTests.cs | 176 | var user = UserService.CreateUserWithIdentity("John Doe", "john@umbraco.io"); | CODE |
| LOW | …on/Umbraco.Infrastructure/Services/UserServiceTests.cs | 929 | var user = UserService.CreateUserWithIdentity("John Doe", "john@umbraco.io"); | CODE |
| LOW | …on/Umbraco.Infrastructure/Services/UserServiceTests.cs | 940 | var user = UserService.CreateUserWithIdentity("John Doe", "john@umbraco.io"); | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 59 | Assert.AreEqual("test@test.com", member.Email); | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 211 | Email = "test@test.com", | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 345 | Assert.AreEqual("test@test.com", member.Email); | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 413 | Email = "test@test.com", | CODE |
| 197 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …Editors/ValueConverters/TimeOnlyValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":null} | STRING |
| HIGH | …ueConverters/DateTimeUnspecifiedValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":null} | STRING |
| HIGH | …eConverters/DateTimeWithTimeZoneValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":null} | STRING |
| HIGH | …Editors/ValueConverters/DateOnlyValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":null} | STRING |
| HIGH | …Editors/ValueConverters/TimeOnlyValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":"europe/copenhagen"} | STRING |
| HIGH | …ueConverters/DateTimeUnspecifiedValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":"europe/copenhagen"} | STRING |
| HIGH | …eConverters/DateTimeWithTimeZoneValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":"europe/copenhagen"} | STRING |
| HIGH | …Editors/ValueConverters/DateOnlyValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000z","timezone":"europe/copenhagen"} | STRING |
| HIGH | …Editors/ValueConverters/TimeOnlyValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000-05:00","timezone":"europe/copenhagen"} | STRING |
| HIGH | …ueConverters/DateTimeUnspecifiedValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000-05:00","timezone":"europe/copenhagen"} | STRING |
| HIGH | …eConverters/DateTimeWithTimeZoneValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000-05:00","timezone":"europe/copenhagen"} | STRING |
| HIGH | …Editors/ValueConverters/DateOnlyValueConverterTests.cs | 0 | {"date":"2025-08-20t16:30:00.0000000-05:00","timezone":"europe/copenhagen"} | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1001122"" parentid=""100112"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1001122"" parentid=""100112"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1001122"" parentid=""100112"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1001122"" parentid=""100112"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100121"" parentid=""10012"" level=""3" | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100121"" parentid=""10012"" level=""3" | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100121"" parentid=""10012"" level=""3" | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100121"" parentid=""10012"" level=""3" | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1001221"" parentid=""100122"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1001221"" parentid=""100122"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1001221"" parentid=""100122"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1001221"" parentid=""100122"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10013"" parentid=""1001"" level=""2"" w | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10013"" parentid=""1001"" level=""2"" w | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10013"" parentid=""1001"" level=""2"" w | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10013"" parentid=""1001"" level=""2"" w | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // </doc> // <doc id=""1003"" parentid=""-1"" level=""1"" writerid=""0"" creatorid=""0"" nodetype=""1044"" template= | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // </doc> // <doc id=""1003"" parentid=""-1"" level=""1"" writerid=""0"" creatorid=""0"" nodetype=""1044"" template= | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // </doc> // <doc id=""1003"" parentid=""-1"" level=""1"" writerid=""0"" creatorid=""0"" nodetype=""1044"" template= | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // </doc> // <doc id=""1003"" parentid=""-1"" level=""1"" writerid=""0"" creatorid=""0"" nodetype=""1044"" template= | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100311"" parentid=""10031"" level=""3" | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100311"" parentid=""10031"" level=""3" | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100311"" parentid=""10031"" level=""3" | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[<div>this is some content</div>]]></content> // <doc id=""100311"" parentid=""10031"" level=""3" | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1003121"" parentid=""100312"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1003121"" parentid=""100312"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1003121"" parentid=""100312"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // <doc id=""1003121"" parentid=""100312"" level=""4"" writerid=""0"" creatorid="" | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10032"" parentid=""1003"" level=""2"" w | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10032"" parentid=""1003"" level=""2"" w | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10032"" parentid=""1003"" level=""2"" w | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // </doc> // </doc> // <doc id=""10032"" parentid=""1003"" level=""2"" w | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""100322"" parentid=""10032"" level=""3"" writerid=""0"" crea | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""100322"" parentid=""10032"" level=""3"" writerid=""0"" crea | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""100322"" parentid=""10032"" level=""3"" writerid=""0"" crea | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""100322"" parentid=""10032"" level=""3"" writerid=""0"" crea | STRING |
| HIGH | …s.UnitTests/Umbraco.Core/Routing/UrlRoutingTestBase.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1003222"" parentid=""100322"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …s/Umbraco.Core/Routing/UrlsProviderWithDomainsTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1003222"" parentid=""100322"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …tTests/Umbraco.Core/Routing/DomainsAndCulturesTests.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1003222"" parentid=""100322"" level=""4"" writerid=""0"" cr | STRING |
| HIGH | …nitTests/Umbraco.Core/Routing/UrlsWithNestedDomains.cs | 0 | "> // <content><![cdata[]]></content> // </doc> // <doc id=""1003222"" parentid=""100322"" level=""4"" writerid=""0"" cr | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …braco.Web.Website/AspNetCoreHostingEnvironmentTests.cs | 89 | // Step 1: Normal traffic sets the URL | COMMENT |
| LOW⚡ | …braco.Web.Website/AspNetCoreHostingEnvironmentTests.cs | 93 | // Step 2: Attacker sends request with forged Host header — must be ignored | COMMENT |
| LOW⚡ | …braco.Web.Website/AspNetCoreHostingEnvironmentTests.cs | 97 | // Step 3: Legitimate traffic continues — URL remains stable | COMMENT |
| LOW | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 41 | // Step 1: Use an EFCore scope to trigger InitializeDatabase() which calls | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 55 | // Step 2: At this point the scope has disposed: | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 60 | // Step 3: Get a context from the factory. If pooling is active, this may return | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 64 | // Step 4: The context should be usable. Before the fix, this would throw | COMMENT |
| LOW | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 78 | // Step 1: Normal data access via scope (triggers SetDbConnection) | COMMENT |
| LOW | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 89 | // Step 2: Migration-like operation via factory (the scenario that fails) | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 112 | // Step 1: Capture the original connection string before any scope usage. | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 121 | // Step 2: Use and dispose an EFCore scope, which calls SetDbConnection(null) on cleanup. | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 131 | // Step 3: Get a context from the pool — may be the same instance that was just disposed. | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 135 | // Step 4: The connection string must still be set. | COMMENT |
| LOW⚡ | …astructure/Security/MemberUserStoreConcurrencyTests.cs | 95 | // Step 1: Create (as MemberSignInManager.AutoLinkAndSignInExternalAccount does). | COMMENT |
| LOW⚡ | …astructure/Security/MemberUserStoreConcurrencyTests.cs | 103 | // Step 2: Update security stamp (as SignInOrTwoFactorAsync does after sign-in). | COMMENT |
| LOW | …ent/Extensions/UmbracoApplicationBuilder.BackOffice.cs | 33 | // NOTE: This method will have been called after UseRouting, UseAuthentication, UseAuthorization | COMMENT |
| LOW | …eb.UI.Client/devops/generate-check-const-test/index.js | 63 | // Step 1: Validate package.json existence and read exports field | COMMENT |
| LOW | …eb.UI.Client/devops/generate-check-const-test/index.js | 103 | // Step 2: Scan JavaScript files for exported "UMB_" constants | COMMENT |
| LOW | ….UI.Client/.claude/skills/general-create-kind/SKILL.md | 34 | ## Step 1: Define the kind manifest | COMMENT |
| LOW | ….UI.Client/.claude/skills/general-create-kind/SKILL.md | 70 | ## Step 2: Create the default element (if providing UI) | COMMENT |
| LOW | ….UI.Client/.claude/skills/general-create-kind/SKILL.md | 92 | ## Step 3: Create the default API (if providing logic) | COMMENT |
| LOW | ….UI.Client/.claude/skills/general-create-kind/SKILL.md | 106 | ## Step 4: Register the kind in manifests | COMMENT |
| LOW | ….UI.Client/.claude/skills/general-create-kind/SKILL.md | 118 | ## Step 5: Add kind-specific type to the extension type (if not already done) | COMMENT |
| LOW | …lient/.claude/skills/general-create-condition/SKILL.md | 31 | ## Step 1: Define the alias constant | COMMENT |
| LOW | …lient/.claude/skills/general-create-condition/SKILL.md | 38 | ## Step 2: Define the config type | COMMENT |
| LOW | …lient/.claude/skills/general-create-condition/SKILL.md | 83 | ## Step 3: Implement the condition controller | COMMENT |
| LOW | …lient/.claude/skills/general-create-condition/SKILL.md | 158 | ## Step 4: Register the condition manifest | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 46 | ### Step 1: Create the summary element | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 76 | ### Step 2: Create the manifest | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 96 | ### Step 3: Wire manifests into parent | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 129 | ### Step 1: Create the summary element | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 133 | ### Step 2: Create the resolver | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 173 | ### Step 3: Create the manifest | COMMENT |
| LOW | …ient/.claude/skills/general-add-value-summary/SKILL.md | 194 | ### Step 4: Wire manifests into parent | COMMENT |
| LOW | ….Client/.claude/skills/general-create-package/SKILL.md | 49 | ## Step 1: Create package.json | COMMENT |
| LOW | ….Client/.claude/skills/general-create-package/SKILL.md | 65 | ## Step 2: Create vite.config.ts | COMMENT |
| LOW | ….Client/.claude/skills/general-create-package/SKILL.md | 84 | ## Step 3: Create umbraco-package.ts | COMMENT |
| LOW | ….Client/.claude/skills/general-create-package/SKILL.md | 102 | ## Step 4: Create the package-level manifests.ts | COMMENT |
| LOW | ….Client/.claude/skills/general-create-package/SKILL.md | 116 | ## Step 5: Create the first module | COMMENT |
| LOW | ….Client/.claude/skills/general-create-package/SKILL.md | 144 | ## Step 6: Register the package | COMMENT |
| LOW | ….Client/.claude/skills/general-add-value-type/SKILL.md | 28 | ## Step 1: Create the constant file | COMMENT |
| LOW | ….Client/.claude/skills/general-add-value-type/SKILL.md | 77 | ## Step 2: Export from the package index | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 55 | ### Step 1: Create store context token | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 69 | ### Step 2: Create store | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 88 | ### Step 3: Create server data source | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 195 | ### Step 4: Create repository | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 215 | ### Step 5: Create constants | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 224 | ### Step 6: Create manifests | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 248 | ### Step 7: Wire manifests into parent | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 299 | ### Step 1: Create item store context token | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 313 | ### Step 2: Create item store | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 332 | ### Step 3: Create item server data source | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 362 | ### Step 4: Create item repository | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 382 | ### Step 5: Create constants and manifests | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 409 | ### Step 1: Create collection server data source | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 448 | ### Step 2: Create collection repository | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 506 | ### Step 1: Create types (if needed) | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 517 | ### Step 2: Create server data source | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 550 | ### Step 3: Create repository | COMMENT |
| LOW | …ient/.claude/skills/general-create-repository/SKILL.md | 579 | ### Step 4: Create manifests | COMMENT |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ntent/BlockGrid/VariantBlockGridDiscardChanges.spec.ts | 26 | async function createContentWithBlocksInSeveralCultures(umbracoApi) { | CODE |
| LOW | …chTextEditor/VariantTipTapBlocksDiscardChanges.spec.ts | 26 | async function openVariantContentWithTipTapAndAddABlock(umbracoApi, umbracoUi) { | CODE |
| LOW | …ntent/BlockList/VariantBlockListDiscardChanges.spec.ts | 26 | async function createContentWithBlocksInSeveralCultures(umbracoApi) { | CODE |
| LOW | …raco.Web.Website/Routing/PublicAccessRequestHandler.cs | 17 | public class PublicAccessRequestHandler : IPublicAccessRequestHandler | CODE |
| LOW | …raco.Web.UI.Client/devops/module-dependencies/index.js | 90 | function getFolderPathFromModuleAlias(moduleAlias) { | CODE |
| LOW | …raco.Web.UI.Client/devops/module-dependencies/index.js | 103 | function getUmbracoModuleImportsInModule(moduleAlias) { | CODE |
| LOW | …raco.Web.UI.Client/devops/module-dependencies/index.js | 115 | function reportIllegalImportsFromCore() { | CODE |
| LOW | …raco.Web.UI.Client/devops/module-dependencies/index.js | 157 | function reportSelfImportsFromModules() { | CODE |
| LOW | …raco.Web.UI.Client/devops/module-dependencies/index.js | 191 | function reportBidirectionalModuleImports(modules, label, threshold) { | CODE |
| LOW | …b.UI.Client/devops/localization/generate-known-keys.js | 92 | function findDefaultExportObjectLiteral(source) { | CODE |
| LOW | src/Umbraco.Web.UI.Client/utils/test-utils.ts | 16 | export function ignoreResizeObserverLoopErrors(): () => void { | CODE |
| LOW | …able-api/utils/strict-equality-memoization.function.ts | 8 | export function strictEqualityMemoization(previousValue: unknown, currentValue: unknown): boolean { | CODE |
| LOW | …/type-guards/is-manifest-element-name-type.function.ts | 8 | export function isManifestElementNameType(manifest: unknown): manifest is ManifestElementWithElementName { | CODE |
| LOW | …s/core/sorter/replacement-resolver-as-grid.function.ts | 8 | export function UmbSorterResolvePlacementAsGrid(args: UmbSorterResolvePlacementArgs<unknown>) { | CODE |
| LOW | …core/resources/extractUmbNotificationColor.function.ts | 11 | export function extractUmbNotificationColor(type: EventMessageTypeModel): UmbNotificationColor { | CODE |
| LOW | …ts/tokens/notify-workspace-action-starting.function.ts | 13 | export function notifyWorkspaceActionStarting(options?: UmbWorkspaceActionExecutionOptions): void { | CODE |
| LOW | …core/workspace/entity/entity-workspace-data-manager.ts | 8 | * @class UmbEntityWorkspaceDataManager | COMMENT |
| LOW | …core/workspace/entity/entity-workspace-data-manager.ts | 13 | export class UmbEntityWorkspaceDataManager<ModelType> | CODE |
| LOW | …e/workspace/utils/check-will-navigate-away.function.ts | 12 | export function umbWorkspaceWillNavigateAway( | CODE |
| LOW | …space/utils/object-to-property-value-array.function.ts | 8 | export function umbObjectToPropertyValueArray(data: object | undefined): Array<UmbPropertyValueData> | undefined { | CODE |
| LOW | …kspace-split-view/workspace-split-view.context.test.ts | 78 | async function waitForFirstDatasetContext(): Promise<void> { | CODE |
| LOW | …ore/utils/pagination/target/is-target-request.guard.ts | 9 | export function isTargetPaginationRequest( | CODE |
| LOW | …ore/utils/pagination/offset/is-offset-request.guard.ts | 8 | export function isOffsetPaginationRequest( | CODE |
| LOW | …/utils/path/remove-initial-slash-from-path.function.ts | 6 | export function removeInitialSlashFromPath(path: string) { | CODE |
| LOW | …aco.Web.UI.Client/src/packages/core/utils/math/math.ts | 109 | export function calculateExtrapolatedValue(initialValue: number, increaseFactor: number): number { | CODE |
| LOW | …aco.Web.UI.Client/src/packages/core/utils/math/math.ts | 124 | export function getInterpolatedIndexOfPositionInWeightMap(target: number, weights: Array<number>): number { | CODE |
| LOW | …aco.Web.UI.Client/src/packages/core/utils/math/math.ts | 159 | export function getAccumulatedValueOfIndex(index: number, weights: Array<number>): number { | CODE |
| LOW | …/packages/core/utils/deprecation/deprecation-origin.ts | 31 | export function umbParseDeprecationOrigin(stack: string | undefined, selfUrl: string): UmbDeprecationOrigin { | CODE |
| LOW | …y-contains/string-or-string-array-contains.function.ts | 7 | export function stringOrStringArrayContains(value: string | Array<string>, search: string): boolean { | CODE |
| LOW | …y-contains/string-or-string-array-contains.function.ts | 17 | export function stringOrStringArrayIntersects(value: string | Array<string>, search: Array<string>): boolean { | CODE |
| LOW | …s/core/components/input-slider/input-slider.element.ts | 41 | function undefinedFallbackToString(value: number | undefined, fallback: number): string { | CODE |
| LOW | …variant-tree-structure-workspace-context.test-utils.ts | 65 | export function createTestVariantAncestorItem( | CODE |
| LOW | …s/core/variant/variant-object-sort-compare.function.ts | 10 | export function umbVariantCodeSortCompare(a: string | null | undefined, b: string | null | undefined): number { | CODE |
| LOW | …s/core/variant/variant-object-sort-compare.function.ts | 27 | export function umbVariantObjectSortCompare(a: UmbSortableVariantObject, b: UmbSortableVariantObject): number { | CODE |
| LOW | …-data-source/is-picker-searchable.data-source.guard.ts | 8 | export function isPickerSearchableDataSource(dataSource: unknown): dataSource is UmbPickerSearchableDataSource { | CODE |
| LOW | …-data-source/is-picker-collection-data-source.guard.ts | 8 | export function isPickerCollectionDataSource(dataSource: unknown): dataSource is UmbPickerCollectionDataSource { | CODE |
| LOW | …core/validation/context/validation-messages.manager.ts | 20 | function MatchPathOrDescendantPath(source: string, match: string): boolean { | CODE |
| LOW | …e/validation/utils/scope-mapper-json-paths.function.ts | 8 | export async function umbScopeMapperForJsonPaths( | CODE |
| LOW | …e/validation/utils/first-json-path-bracket.function.ts | 12 | export function umbGetFirstJsonPathBracket(path: string): string | undefined { | CODE |
| LOW | …/utils/extract-first-json-query-containing.function.ts | 16 | export function extractFirstJsonQueryContaining( | CODE |
| LOW | …ation/utils/data-path-property-value-query.function.ts | 11 | export function UmbDataPathPropertyValueQuery( | CODE |
| LOW | …c/packages/core/validation/utils/json-path.function.ts | 25 | function GetNextPropertyValueFromPath(data: any, path: string): any { | CODE |
| LOW | …c/packages/core/validation/utils/json-path.function.ts | 101 | function JsFilterFromJsonPathFilter(filter: string): Array<(item: any) => boolean> { | CODE |
| LOW | …es/core/router/generate-route-path-builder.function.ts | 9 | export function umbGenerateRoutePathBuilder(path: string) { | CODE |
| LOW | …ent/src/packages/core/router/route/router-slot.test.ts | 213 | function createParentRouteWrapping(child: IRouterSlot): IRoute { | CODE |
| LOW | …lient/src/packages/core/router/router-slot/util/url.ts | 52 | export function constructPathWithBasePath(path: string, options: Partial<ISlashOptions> = {}) { | CODE |
| LOW | …tiptap/components/input-tiptap/input-tiptap.stories.ts | 22 | function ensureManifestsRegistered() { | CODE |
| LOW | …/map-data-type-to-collection-configuration.function.ts | 17 | export function umbMapDataTypeToCollectionConfiguration(dataType: UmbDataTypeDetailModel): UmbCollectionConfiguration { | CODE |
| LOW | …nt/controller/merge-content-variant-data.controller.ts | 14 | function defaultCompareVariantMethod(a: UmbVariantDataModel, b: UmbVariantDataModel) { | CODE |
| LOW | …ckages/content/content/manager/element-data-manager.ts | 6 | export class UmbElementWorkspaceDataManager<ModelType extends UmbElementDetailModel> | CODE |
| LOW | …ckages/content/content/manager/content-data-manager.ts | 7 | export class UmbContentWorkspaceDataManager< | CODE |
| LOW | …ient/src/packages/content/property-type/utils/index.ts | 9 | export function UmbDataPathPropertyTypeQuery(value: Pick<UmbPropertyTypeData, 'unique'>): string { | CODE |
| LOW | …ackages/user/current-user/current-user.context.test.ts | 286 | async function removeUsersSectionFromCurrentUserGroup() { | CODE |
| LOW | …ges/elements/configuration/configuration.repository.ts | 41 | export function resetUmbElementConfigurationCache(): void { | CODE |
| LOW | …s/repository/detail/element-detail-response.mappers.ts | 11 | export function umbMapElementResponseToDetailModel( | CODE |
| LOW | …ts/repository/detail/element-detail-request.mappers.ts | 14 | export function umbMapElementCreateRequestBody( | CODE |
| LOW | …ts/repository/detail/element-detail-request.mappers.ts | 33 | export function umbMapElementUpdateRequestBody(model: UmbElementDetailModel): UpdateElementRequestModel { | CODE |
| LOW | …-context/document-publishing.workspace-context.test.ts | 50 | async function countPublishWithDescendantsCalls(run: () => Promise<unknown>): Promise<number> { | CODE |
| LOW | …ts/documents/configuration/configuration.repository.ts | 41 | export function resetUmbDocumentConfigurationCache(): void { | CODE |
| LOW | …s/repository/detail/document-detail-request.mappers.ts | 14 | export function umbMapDocumentCreateRequestBody( | CODE |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …b.Website/Controllers/BasicAuthLoginControllerTests.cs | 518 | var globalSettings = new global::Umbraco.Cms.Core.Configuration.Models.GlobalSettings(); | CODE |
| CRITICAL | …braco.Web.Common/UmbracoContext/UmbracoContextTests.cs | 138 | return new global::Umbraco.Cms.Web.Common.UmbracoContext.UmbracoContext( | CODE |
| CRITICAL | …tHelpers/Assets/UmbracoTraceLog.UNITTEST.20181112.json | 91 | {"@t":"2018-11-12T08:38:04.9607485Z","@mt":"Could not validate XSRF token","@l":"Error","@x":"System.Web.Mvc.HttpAntiFor | CODE |
| CRITICAL | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 765 | public virtual string CompositionProp => global::Umbraco.Cms.Web.Common.PublishedModels.Composition1.GetCompositionPro | CODE |
| CRITICAL | …ingHelper/DefaultShortStringHelperTestsWithoutSetup.cs | 346 | var output = global::Umbraco.Cms.Core.Strings.Utf8ToAsciiConverter.ToAsciiString(str); | CODE |
| CRITICAL | …tions/Upgrade/V_17_0_0/SetDateDefaultsToUtcNowTests.cs | 85 | Is.Not.Null.And.Not.EqualTo(ExpectedConstraintName), | CODE |
| CRITICAL | …s/core/resources/try-execute/try-execute.controller.ts | 75 | apiError.problemDetails.detail?.includes('Umbraco.Cms.Infrastructure.Scoping.Scope.DisposeLastScope()') | CODE |
| CRITICAL | …braco.Core/Composing/DefaultUmbracoAssemblyProvider.cs | 40 | // var allAssemblies = System.Runtime.Loader.AssemblyLoadContext.All.SelectMany(x => x.Assemblies); | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 52 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 153 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 266 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 432 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 505 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 696 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 778 | // This code was generated by a tool. | COMMENT |
| HIGH | …o.Tests.Common/Factories/ContentEditingModelFactory.cs | 8 | // Disclaimer: Based on code generated by Claude code. | COMMENT |
| HIGH | …co.Examine.Lucene/UmbracoExamine/TestFiles.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| HIGH | …ructure/Services/Importing/ImportResources.Designer.cs | 3 | // This code was generated by a tool. | COMMENT |
| HIGH | …rastructure/ModelsBuilder/Building/TextHeaderWriter.cs | 16 | sb.Append("// This code was generated by a tool.\n"); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/Umbraco.Web.Common/CLAUDE.md | 33 | │ └── UmbracoApplicationBuilder.cs # Middleware orchestration (170 lines) | CODE |
| MEDIUM | …ient/src/packages/core/hint/context/hint.controller.ts | 28 | #scaffold = new UmbObjectState<Partial<HintType>>({}); | COMMENT |
| MEDIUM | …ient/src/packages/core/hint/context/hint.controller.ts | 29 | readonly scaffold = this.#scaffold.asObservable(); | CODE |
| MEDIUM⚡ | …ient/src/packages/core/hint/context/hint.controller.ts | 42 | this.#scaffold.update(updates); | CODE |
| MEDIUM⚡ | …ient/src/packages/core/hint/context/hint.controller.ts | 45 | return this.#scaffold.getValue(); | CODE |
| MEDIUM⚡ | …ient/src/packages/core/hint/context/hint.controller.ts | 53 | this.#scaffold.setValue(args?.scaffold); | CODE |
| MEDIUM | …ient/src/packages/core/hint/context/hint.controller.ts | 128 | this.observe(this.#parent?.scaffold, (scaffold) => { | CODE |
| MEDIUM | …ient/src/packages/core/hint/context/hint.controller.ts | 130 | this.#scaffold.update(scaffold as any); | CODE |
| MEDIUM | …ient/src/packages/core/hint/context/hint.controller.ts | 208 | const newHint = { ...this.#scaffold.getValue(), ...hint } as unknown as HintType; | CODE |
| MEDIUM | …ient/src/packages/core/hint/context/hint.controller.ts | 278 | this.#scaffold.destroy(); | CODE |
| MEDIUM | …type/structure/content-type-structure-manager.class.ts | 345 | this.#initRejection?.(`Content Type structure manager could not create scaffold`); | CODE |
| MEDIUM | …type/structure/content-type-structure-manager.class.ts | 353 | // Add the new content type to the list of content types, this holds our draft state of this scaffold. | COMMENT |
| MEDIUM | …ckages/content/content/manager/content-data-manager.ts | 44 | if (!this.#variantScaffold) throw new Error('Variant scaffold data is missing'); | CODE |
| MEDIUM | …rc/packages/block/block/context/block-entry.context.ts | 473 | // We have a settings ElementType in config but not in data, so lets create the scaffold for that: [NL] | COMMENT |
| MEDIUM | …-picker/components/media-picker-folder-path.element.ts | 199 | const { data } = await this.#mediaDetailRepository.create(scaffold, parentUnique); | CODE |
| MEDIUM | …ackages/media/media/dropzone/media-dropzone.manager.ts | 121 | const { data, error } = await this.#mediaDetailRepository.createSilently(scaffold, item.parentUnique); | CODE |
| MEDIUM | …ackages/media/media/dropzone/media-dropzone.manager.ts | 142 | const { data, error } = await this.#mediaDetailRepository.createSilently(scaffold, item.parentUnique); | CODE |
| MEDIUM | src/Umbraco.Infrastructure/CLAUDE.md | 64 | │ ├── MigrationPlan.cs # Migration orchestration | CODE |
| MEDIUM⚡ | …c/Umbraco.Core/Notifications/ScaffoldedNotification.cs | 13 | /// This notification provides both the original entity and the scaffold (copy) being created. | COMMENT |
| MEDIUM⚡ | …c/Umbraco.Core/Notifications/ScaffoldedNotification.cs | 22 | /// <param name="scaffold">The scaffold (copy) being created.</param> | COMMENT |
| MEDIUM⚡ | …c/Umbraco.Core/Notifications/ScaffoldedNotification.cs | 23 | /// <param name="parentId">The ID of the parent under which the scaffold will be created.</param> | COMMENT |
| MEDIUM | …c/Umbraco.Core/Notifications/ScaffoldedNotification.cs | 38 | /// Gets the scaffold (copy) being created. | COMMENT |
| MEDIUM | …c/Umbraco.Core/Notifications/ScaffoldedNotification.cs | 43 | /// Gets the ID of the parent under which the scaffold will be created. | COMMENT |
| MEDIUM | …co.Core/Notifications/ContentScaffoldedNotification.cs | 18 | /// <param name="scaffold">The scaffold (copy) being created.</param> | COMMENT |
| MEDIUM | …co.Core/Notifications/ContentScaffoldedNotification.cs | 19 | /// <param name="parentId">The ID of the parent under which the scaffold will be created.</param> | COMMENT |
| MEDIUM | …braco.Core/Services/IContentBlueprintEditingService.cs | 26 | /// <param name="key">The unique identifier of the blueprint to scaffold from.</param> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …braco.Web.Website/AspNetCoreHostingEnvironmentTests.cs | 89 | // Step 1: Normal traffic sets the URL | COMMENT |
| LOW⚡ | …braco.Web.Website/AspNetCoreHostingEnvironmentTests.cs | 93 | // Step 2: Attacker sends request with forged Host header — must be ignored | COMMENT |
| LOW⚡ | …braco.Web.Website/AspNetCoreHostingEnvironmentTests.cs | 97 | // Step 3: Legitimate traffic continues — URL remains stable | COMMENT |
| LOW | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 41 | // Step 1: Use an EFCore scope to trigger InitializeDatabase() which calls | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 55 | // Step 2: At this point the scope has disposed: | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 60 | // Step 3: Get a context from the factory. If pooling is active, this may return | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 64 | // Step 4: The context should be usable. Before the fix, this would throw | COMMENT |
| LOW | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 78 | // Step 1: Normal data access via scope (triggers SetDbConnection) | COMMENT |
| LOW | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 89 | // Step 2: Migration-like operation via factory (the scenario that fails) | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 112 | // Step 1: Capture the original connection string before any scope usage. | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 121 | // Step 2: Use and dispose an EFCore scope, which calls SetDbConnection(null) on cleanup. | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 131 | // Step 3: Get a context from the pool — may be the same instance that was just disposed. | COMMENT |
| LOW⚡ | …re/DbContext/PooledDbContextConnectionTaintingTests.cs | 135 | // Step 4: The connection string must still be set. | COMMENT |
| LOW⚡ | …astructure/Security/MemberUserStoreConcurrencyTests.cs | 95 | // Step 1: Create (as MemberSignInManager.AutoLinkAndSignInExternalAccount does). | COMMENT |
| LOW⚡ | …astructure/Security/MemberUserStoreConcurrencyTests.cs | 103 | // Step 2: Update security stamp (as SignInOrTwoFactorAsync does after sign-in). | COMMENT |
| LOW | …braco.Web.Website/Routing/UmbracoRouteValuesFactory.cs | 125 | // Here we need to check if there is no hijacked route and no template assigned but there is a content item. | COMMENT |
| LOW | …eb.UI.Client/devops/generate-check-const-test/index.js | 63 | // Step 1: Validate package.json existence and read exports field | COMMENT |
| LOW | …eb.UI.Client/devops/generate-check-const-test/index.js | 103 | // Step 2: Scan JavaScript files for exported "UMB_" constants | COMMENT |
| LOW | …i/controller/base-extensions-initializer.controller.ts | 130 | // This might be called after this is destroyed, so we need to check if the _permittedExts is still available: [NL] | COMMENT |
| LOW | …s/core/resources/try-execute/try-execute.controller.ts | 13 | // Error might be a legacy error, so we need to check if it is an UmbError | COMMENT |
| LOW | …id/property-actions/block-grid-paste-from-clipboard.ts | 26 | // we need to check if the content types are allowed at the root | COMMENT |
| LOW | …raco.Web.UI.Client/src/apps/app/app-auth.controller.ts | 83 | // If we are logging in, we need to check if we can redirect directly to the provider | COMMENT |
| LOW | …co.Infrastructure/Packaging/PackageDataInstallation.cs | 528 | // we need to check if the content already exists and if so we ignore the installation for this item | COMMENT |
| LOW | …s/Delete/KeysAndIndexes/DeleteKeysAndIndexesBuilder.cs | 81 | // In some cases not all FK's are prefixed with "FK" :/ mostly with old upgraded databases so we need to | COMMENT |
| LOW | …tructure/Install/UnattendedUpgradeBackgroundService.cs | 158 | // Step 1: Premigrations upgrade. | COMMENT |
| LOW⚡ | …tructure/Install/UnattendedUpgradeBackgroundService.cs | 185 | // Step 2: Post-premigrations (navigation and publish-status initialization). | COMMENT |
| LOW⚡ | …tructure/Install/UnattendedUpgradeBackgroundService.cs | 188 | // Step 3: Unattended upgrade (main migrations and package migrations). | COMMENT |
| LOW | …ture/Persistence/DatabaseProviderMetadataExtensions.cs | 32 | // In case more metadata providers can recognize the connection string, we need to check if any can force create | COMMENT |
| LOW | …e/Persistence/Repositories/Implement/FileRepository.cs | 301 | // now that the file has been written, we need to check if the path had been changed | COMMENT |
| LOW | src/Umbraco.Core/Services/UserService.cs | 1151 | // We need to check if there's any Deny Local login providers present, if so we need to ensure that the user's e | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ….Infrastructure/Services/DistributedJobServiceTests.cs | 24 | // A long, clock-divisible period (boundaries on the hour) keeps the aligned tests robust against running | COMMENT |
| MEDIUM | templates/UmbracoDockerCompose/docker-compose.yml | 37 | # This is to better facilitate local development in the IDE, so the views, models, etc... are available in the IDE. | COMMENT |
| MEDIUM | …ientCredentials/ClientCredentialsUserControllerBase.cs | 8 | /// Serves as the base controller for user-related operations that utilize client credentials authentication in the mana | COMMENT |
| MEDIUM | src/Umbraco.Web.Website/Routing/EagerMatcherPolicy.cs | 258 | // Ideally we should do this in a more robust way, for instance with a dedicated attribute we can then check | COMMENT |
| MEDIUM | src/Umbraco.Web.Common/Extensions/StringExtensions.cs | 6 | /// Provides a robust way to check if a path starts with another path, normalizing multiple slashes. | COMMENT |
| MEDIUM | …ishedCache.HybridCache/Services/ElementCacheService.cs | 45 | // Global is correctness-robust; only revisit if read-through churn under heavy concurrent | COMMENT |
| MEDIUM | …shedCache.HybridCache/Services/DocumentCacheService.cs | 54 | // Global is correctness-robust; only revisit if read-through churn under heavy concurrent | COMMENT |
| MEDIUM | …blishedCache.HybridCache/Services/MediaCacheService.cs | 51 | // Global is correctness-robust; only revisit if read-through churn under heavy concurrent | COMMENT |
| MEDIUM | src/Umbraco.Cms.Persistence.EFCore/UmbracoDbContext.cs | 64 | // we're throwing an exception here to make it abundantly clear that one should never utilize (or have a | COMMENT |
| MEDIUM | …braco.Infrastructure/ModelsBuilder/Building/Builder.cs | 124 | // Essentially this means that a `global::` syntax will be output for the generated models | COMMENT |
| MEDIUM | src/Umbraco.Core/Packaging/PackagesRepository.cs | 718 | ////This is pretty round-about but it works. Essentially we need to get the properties that are tagg | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tionalSetup/App_Plugins/picker-data-source/tree-api.js | 50 | // TODO: implement when needed | COMMENT |
| LOW | …/Persistence/Repositories/ContentTypeRepositoryTest.cs | 77 | // TODO: Add test to verify SetDefaultTemplates updates both AllowedTemplates and DefaultTemplate(id). | COMMENT |
| LOW | …tegration/Umbraco.Core/Services/ContentServiceTests.cs | 48 | // TODO: Add test to verify there is only ONE newest document/content in {Constants.DatabaseSchema.Tables.Document} | COMMENT |
| LOW | …tegration/Umbraco.Core/Services/ContentServiceTests.cs | 49 | // TODO: Add test to delete specific version (with and without deleting prior versions) and versions by date. | COMMENT |
| LOW | src/Umbraco.Web.UI.Client/index.ts | 22 | // TODO: implement for the static build too. We need to be able load the mock sets | COMMENT |
| LOW | …-data-source/example-custom-picker-tree-data-source.ts | 37 | // TODO: implement args when needed | COMMENT |
| LOW | …nt/src/packages/core/tree/data/tree-repository-base.ts | 107 | // TODO: implement observable for ancestor items in the store | COMMENT |
| LOW | …rkspace/namable/namable-workspace-context.interface.ts | 9 | // TODO: implement across all namable workspaces and make it mandatory | COMMENT |
| LOW | …ty-dataset-context/element-property-dataset.context.ts | 74 | // TODO: implement a rejector as well, and handle that in the places awaiting this promise. [NL] | COMMENT |
| LOW | …ges/user/user/workspace/user/user-workspace.context.ts | 150 | // TODO: implement upload progress | COMMENT |
| LOW | src/Umbraco.Core/IO/IFileSystem.cs | 205 | // TODO: implement these | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/Umbraco.Cms.Api.Delivery/CLAUDE.md | 295 | "ApiKey": "your-api-key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ntegration/TestServerTest/UmbracoTestServerTestBase.cs | 114 | * It's worth noting that our usage of WebApplicationFactory is non-standard, | COMMENT |
| LOW | …ructure/Services/Importing/CompositionsTestPackage.xml | 25 | <aboutText><![CDATA[<p>This is <a href="http://html5up.net/txt/">TXT</a>, a free site template designed by <a hr | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ManagementApi/Document/PatchDocumentControllerTests.cs | 1200 | // ── Deeply nested block editor tests ────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/Umbraco.Web.UI.Login/public/mockServiceWorker.js | 124 | async function handleRequest(event, requestId, requestInterceptedAt) { | CODE |
| LOW | src/Umbraco.Web.UI.Client/mockServiceWorker.js | 124 | async function handleRequest(event, requestId, requestInterceptedAt) { | CODE |
| LOW | src/Umbraco.Web.UI.Client/public/mockServiceWorker.js | 124 | async function handleRequest(event, requestId, requestInterceptedAt) { | CODE |