Umbraco is a free and open source .NET content management system helping you deliver delightful digital experiences.
This report presents the forensic synthetic code analysis of umbraco/Umbraco-CMS, a C# project with 5,213 GitHub stars. SynthScan v2.0 examined 1,342,615 lines of code across 16599 source files, recording 5739 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 4.6 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 5739 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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 | …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/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 | …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 |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 661 | // // gen 1 | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 681 | // Assert.IsTrue(d.Test.NextGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 701 | // | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 721 | // t.CollectAuto = false; | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 741 | // Assert.AreEqual(1, t.LiveGen); | COMMENT |
| LOW | …/Umbraco.PublishedCache.NuCache/SnapDictionaryTests.cs | 761 | // Assert.AreEqual(0, d.CreateSnapshot().Gen); | COMMENT |
| 5120 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …mbraco.Tests.Benchmarks/StringReplaceManyBenchmarks.cs | 19 | //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 | 480 | 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 | 711 | content.SetValue("author", "John Doe"); | CODE |
| LOW | …co.Tests.UnitTests/Umbraco.Core/Models/ContentTests.cs | 715 | 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 | 368 | [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 | 83 | 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 | 339 | 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 | 101 | Assert.AreEqual("test@test.com", model.Email); | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 103 | Assert.AreEqual("test@test.com", model.UserName); | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 579 | Email = "test@test.com", | CODE |
| LOW | …anagementApi/Factories/UserPresentationFactoryTests.cs | 581 | 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 | …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 | 924 | var user = UserService.CreateUserWithIdentity("John Doe", "john@umbraco.io"); | CODE |
| LOW | …on/Umbraco.Infrastructure/Services/UserServiceTests.cs | 935 | var user = UserService.CreateUserWithIdentity("John Doe", "john@umbraco.io"); | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 41 | Assert.AreEqual("test@test.com", member.Email); | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 193 | Email = "test@test.com", | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 327 | Assert.AreEqual("test@test.com", member.Email); | CODE |
| LOW | …o.Infrastructure/Services/MemberEditingServiceTests.cs | 510 | Email = "test@test.com", | CODE |
| LOW | …mbraco.Infrastructure/Services/RelationServiceTests.cs | 133 | var member = MemberBuilder.CreateSimpleMember(memberType, "Test Member", "test@test.com", "xxxxxxxx", "testMembe | CODE |
| 188 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 |
|---|---|---|---|---|
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 51 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 152 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 265 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 431 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 504 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 620 | // This code was generated by a tool. | COMMENT |
| HIGH | …itTests/Umbraco.ModelsBuilder.Embedded/BuilderTests.cs | 702 | // 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 |
|---|---|---|---|---|
| CRITICAL | …b.Website/Controllers/BasicAuthLoginControllerTests.cs | 479 | 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 | 689 | 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 | …s/core/resources/try-execute/try-execute.controller.ts | 93 | 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 |
|---|---|---|---|---|
| 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 | 207 | const newHint = { ...this.#scaffold.getValue(), ...hint } as unknown as HintType; | CODE |
| MEDIUM | …type/structure/content-type-structure-manager.class.ts | 341 | this.#initRejection?.(`Content Type structure manager could not create scaffold`); | CODE |
| MEDIUM | …type/structure/content-type-structure-manager.class.ts | 349 | // 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 | 65 | if (!this.#variantScaffold) throw new Error('Variant scaffold data is missing'); | CODE |
| MEDIUM | …rc/packages/block/block/context/block-entry.context.ts | 464 | // 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 | …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 | …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 | 7 | 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 | 7 | * @class UmbEntityWorkspaceDataManager | COMMENT |
| LOW | …core/workspace/entity/entity-workspace-data-manager.ts | 12 | 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 | …ore/utils/pagination/target/is-target-request.guard.ts | 8 | export function isTargetPaginationRequest( | CODE |
| LOW | …ore/utils/pagination/offset/is-offset-request.guard.ts | 7 | export function isOffsetPaginationRequest( | CODE |
| LOW | …/utils/path/remove-initial-slash-from-path.function.ts | 5 | 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 | 39 | function undefinedFallbackToString(value: number | undefined, fallback: number): string { | CODE |
| LOW | …-data-source/is-picker-searchable.data-source.guard.ts | 7 | export function isPickerSearchableDataSource(dataSource: unknown): dataSource is UmbPickerSearchableDataSource { | CODE |
| LOW | …-data-source/is-picker-collection-data-source.guard.ts | 7 | 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 | …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 | 8 | export function umbGenerateRoutePathBuilder(path: string) { | CODE |
| LOW | …lient/src/packages/core/router/router-slot/util/url.ts | 48 | export function constructPathWithBasePath(path: string, options: Partial<ISlashOptions> = {}) { | CODE |
| LOW | …tiptap/components/input-tiptap/input-tiptap.stories.ts | 19 | function ensureManifestsRegistered() { | CODE |
| LOW | …nt/controller/merge-content-variant-data.controller.ts | 13 | function defaultCompareVariantMethod(a: UmbVariantDataModel, b: UmbVariantDataModel) { | CODE |
| LOW | …ckages/content/content/manager/element-data-manager.ts | 15 | 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 | …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/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 |
| LOW | …s/repository/detail/document-detail-request.mappers.ts | 34 | export function umbMapDocumentUpdateRequestBody(model: UmbDocumentDetailModel): UpdateDocumentRequestModel { | CODE |
| LOW | …ermissions/document-property-value/conditions/utils.ts | 9 | export function isDocumentPropertyValueUserPermission( | CODE |
| LOW | …ckages/documents/documents/audit-log/info-app/utils.ts | 24 | export function getDocumentHistoryTagStyleAndText(type: UmbDocumentAuditLogType): HistoryData { | CODE |
| LOW | …y-editors/dropdown/property-editor-ui-dropdown.test.ts | 46 | function verifyLocalSelectionAndDOM(expectedSelection: string[], expectedSelected: string[]) { | CODE |
| LOW | …y-editors/dropdown/property-editor-ui-dropdown.test.ts | 51 | function setupBasicConfigWithMultiple(multiple = false) { | CODE |
| LOW | …s/property-editors/utils/property-editor-test-utils.ts | 160 | export function verifyMultiSelectValueAndDOM( | CODE |
| LOW | …s/property-editors/utils/property-editor-test-utils.ts | 175 | export function verifyDropdownValueAndDOM( | CODE |
| LOW | …editors/number/resolve-number-preset-value.function.ts | 17 | export function umbResolveNumberPresetValue(config: UmbPropertyEditorConfig): number | undefined { | CODE |
| LOW | …checkbox-list/property-editor-ui-checkbox-list.test.ts | 38 | function verifyLocalSelectionAndDOM(expectedSelection: string[], expectedChecked: string[]) { | CODE |
| LOW | …ity-data-picker-supports-text-filter.condition.test.ts | 16 | function createCollectionDataSourceMock(enabled: boolean) { | CODE |
| LOW | …ity-data-picker-supports-text-filter.condition.test.ts | 29 | function createNonCollectionDataSourceMock() { | CODE |
| LOW | …cloner/property-value-cloner-block-grid.cloner.test.ts | 190 | function testLayoutEntryNewKeyIsReflected( | CODE |
| LOW | …UI.Client/src/packages/block/block-grid/utils/index.ts | 37 | export async function forEachBlockLayoutEntryOf( | CODE |
| LOW | …nents/block-grid-entries/block-grid-entries.element.ts | 34 | function resolvePlacementAsBlockGrid( | CODE |
| LOW | …lock/workspace/block-workspace-label-value.function.ts | 12 | export function buildBlockLabelValueObject( | CODE |
| LOW | …lock/workspace/block-workspace-label-index.function.ts | 15 | export function resolveBlockWorkspaceLabelIndex( | CODE |
| LOW | …ck/validation/data-path-element-data-query.function.ts | 10 | export function UmbDataPathBlockElementDataQuery(data: Pick<UmbBlockDataModel, 'key'>): string { | CODE |
| 4 more matches not shown… | ||||
| 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 | 34 | // 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 | 77 | // 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 | 138 | // Step 1: Premigrations upgrade. | COMMENT |
| LOW⚡ | …tructure/Install/UnattendedUpgradeBackgroundService.cs | 165 | // Step 2: Post-premigrations (navigation and publish-status initialization). | COMMENT |
| LOW⚡ | …tructure/Install/UnattendedUpgradeBackgroundService.cs | 168 | // 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 | 1107 | // 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 | 238 | // 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 | 51 | // Global is correctness-robust; only revisit if read-through churn under heavy concurrent | COMMENT |
| MEDIUM | …blishedCache.HybridCache/Services/MediaCacheService.cs | 47 | // 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 |
| MEDIUM | …bleContentWarningsWhenPublishingNotificationHandler.cs | 96 | // successfulCultures will be null here - change it to a wildcard and utilize this below | 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 | 99 | // 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 | 114 | // TODO: implement upload progress | COMMENT |
| LOW | …ctions/create/document-create-options-modal.element.ts | 103 | // TODO: implement pagination, or get 1000? | COMMENT |
| LOW | …y-actions/create/media-create-options-modal.element.ts | 64 | // TODO: implement pagination, or get 1000? | 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 | 113 | * 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 |