{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D18","name":"Solution Shape","shortDescription":{"text":"Solution Shape"},"helpUri":"https://codehealth.canine.dev/dimensions/D18"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"}]}},"results":[{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/QuotationController.cs:62-79 | StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/StockController.cs:134-151 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/QuotationController.cs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d5a52a8c40ac40a7cca8dc72c859da72a80ff9288b10fa3f4867908832d6550"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs:42-56 | StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Models/CalculationResultViewModel.cs:52-66 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it wherever the callers may both depend on (the module they already share, or a small common one if they share none) and call it from each site \u2014 until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"2089a1c7ba55ac77bfb64a0f6f85062fbda82c477a94ec2d4ae76ccdb1206892"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs:69-83 | StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Models/CalculationResultViewModel.cs:81-95 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it wherever the callers may both depend on (the module they already share, or a small common one if they share none) and call it from each site \u2014 until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a30eafc934ca7cd011fa41f3687f0edcd714ef29ca58a4b67f788ec958047e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs:96-110 | StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Models/CalculationResultViewModel.cs:110-124 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it wherever the callers may both depend on (the module they already share, or a small common one if they share none) and call it from each site \u2014 until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Domain/CalculationResult.cs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"496952d09dcd5b3b77bb4357e5a8245761e3bbf0aafb1a476a58f6fd1b9a7f98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionPerformanceService.cs:104-113 | StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionPerformanceService.cs:128-137 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionPerformanceService.cs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a46ab85860e9fb59c7f57a6dcef14af11da5c5982cd07453d2c9dbabba17f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): StockTradingAnalysisWebsite/StockTradingAnalysis.Services.External/Providers/QuotationDownloadBoerseDuesseldorf.cs:74-81 | StockTradingAnalysisWebsite/StockTradingAnalysis.Services.External/Providers/QuotationDownloadBoerseDuesseldorf.cs:82-89 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services.External/Providers/QuotationDownloadBoerseDuesseldorf.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf6ce5005dfc9b7abca6a296bb8f6b6a596a6ef5f9a026b32322ad557a74365"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: StockTradingAnalysis.Core: StockTradingAnalysis.Core: abstractness 0.00, instability 0.10, distance 0.90 \u2014 zone of pain \u2014 concrete and heavily depended-on, so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"99c08152750923d094798ae85d9ff1df95d9ef2741ddb44f4e44b3c3819a55a5"}},{"ruleId":"D10","level":"warning","message":{"text":"Skipped test: RepositoryShouldLoadAndSave20000AggregatesWithSnapShotsEnabledIn60Seconds: Skipped \u2014 skipped"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web.Tests/SnapshotTests.cs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa023f69ddd1ea1e597680c1b47fa0732ba64015d89724c672fb681e890a2fc"}},{"ruleId":"D10","level":"warning","message":{"text":"Skipped test: TimeMeasureShouldWorkInConjunctionWithPerformanceService: Skipped \u2014 skipped"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web.Tests/TimeMeasureTests.cs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e91d8dd0ebf92dc45ba3a944414574925f8e24d1b6b1d9d499d377e7f433f592"}},{"ruleId":"D10","level":"warning","message":{"text":"Skipped test: CalculateGeometricMeanShouldReturnCorrectResult3: Skipped \u2014 skipped"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core.Tests/Services/MathCalculatorServiceTests.cs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e1b32913e7bc52dc21832dbb67dff08a33263a5a53d122b25fbdeba6d33a9c"}},{"ruleId":"D10","level":"warning","message":{"text":"Skipped test: CalculateGeometricMeanShouldReturnCorrectResult4: Skipped \u2014 skipped"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core.Tests/Services/MathCalculatorServiceTests.cs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b23daa7faf7a2395b152d030f69eb42c5251e024b4488d2f9b03d37720934cb"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: DefaultCtorOfTransactionAllQueryShouldCorrectlyInitializeValues: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web.Tests/TypesTests.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"b815e36c8617c52960608ec31a5f8892105c9335c52ba0b1f819e7f9c40f288f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: DeserializeShouldWorkWithDifferentCLassesIfStructureIsTheSame: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core.Tests/Services/JsonServiceTests.cs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17021d2b462dc311107e8a2923a309a35ca004323cf8ea3047db4ed6b223ae4"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: TransactionAllQueryShouldBeProperlyInitialized: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Query.Tests/Queries/TransactionAllQueryTests.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"21e4fe46dad42c3156a172eb9453b641bb1bd40b63b35a15ad6a910323786fee"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: TransactionYearsQueryShouldBeProperlyInitialized: Test method exercises code but verifies nothing \u2014 add an assertion."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Query.Tests/Queries/TransactionYearsQueryTests.cs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"caeca0c7d6a359317887ff3e53bce073735750941de99c1cb525b763fba5e510"}},{"ruleId":"D16","level":"warning","message":{"text":"single-maintainer \u2014 knowledge-concentration (bus factor) risk: single-maintainer \u2014 knowledge-concentration (bus factor) risk (1 author(s) across 74 commit(s) sampled)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b4b49d961df742f0e507f4cc5c8094fb077ba0391a27fd015d18320865187719"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Test non working async url \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core.Tests/Common/HtmlDownloadTests.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d947ad2f9cff94b5fab86a1b75ca0d816e4539c638120025fce0665fe2f8f24e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Test non working async url \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core.Tests/Common/HtmlDownloadTests.cs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b850cc87b0e4014ece060790ece4fdf6f79203f6bb3fcad9c848b036b13cbca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Maybe use const string \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core/Services/PerformanceMeasurementService.cs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f7c4a7f448e2d885259745fd665251b476df79b23b5892ced441965b1c047e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Possible counters (absolute time for dehydration) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core/Services/PerformanceMeasurementService.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b8aac9e972796e0c784f9eeb760351ef452b2ac8a4bc4b86a30720bc060888"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: ToString to write all to console \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core/Services/PerformanceMeasurementService.cs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"946470078b67270d3245951305135c1ded2880d907205777a65eecfb26092e77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Persistence \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Core/Services/PerformanceMeasurementService.cs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcf37fd802d66840baaa85d441da03895ba8900e0768139bcd9d5fa3790fd7de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Use multiple inserts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Data.MSSQL/EventDatastore.cs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"f710eb6c7497eb47f5c1fe3eb68f03aa0585dda9ed12ca5d0a210bda594dfa61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Use multiple inserts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Data.MSSQL/SnapShotDatastore.cs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"adeeadc475901cb4274779e61b1791fe93388afc2917b7b0042df5ec57b57e12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name is unique -\u003EException: Resources.Validation_CalculationNameExists(felt noch) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/CalculationAddCommandHandler.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d79811f55d8d270ce6546bd608bffabea0eb7ce1b38f6afd568ffe500ab6d6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name, description is not empty \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/CalculationAddCommandHandler.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a59824b04fcdfe9b0bee23fafd1ec0a7c9d97bc5845207b82cfcb66a2f091367"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name, description is not empty \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/FeedbackAddCommandHandler.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"03f405bea463990c196d9ebaec2499152b13aac30f43b81eded5c2cd41e86f9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name, description is not empty \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/StrategyAddCommandHandler.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3c26d2b7707154261dc72e28e1450f904e95754f2ac15b79e2b9a85b9d3bc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name is unique -\u003EException: Resources.Validation_FeedbackNameExists(fehlt noch) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/FeedbackAddCommandHandler.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f839190993328f79ea7b32bfe8c64f73b45da104b5d50097623ab656942eb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name of stock and wkn is unique bei gleichem type -\u003EException: Resources.Validation_StockNameExists \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/StockAddCommandHandler.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5bc3b4c0a4df9cc9e574d7b86297934771883d60a9dd748beb12d08e65010f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name, wkn and type is not empty \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/StockAddCommandHandler.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"afea70d7380ab3bd1f607871a18ebdecdaed37ddd0ecadb418993ab3432ea1cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if name is unique -\u003EException: Resources.Validation_StrategyNameExists(fehlt noch) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/StrategyAddCommandHandler.cs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1fcee482afa00033296ca8bf9c2ab0a52bc012da139b6dac1558e368580a746"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validate if image is valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/StrategyAddCommandHandler.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d32a87c32b320d5949cd9b536712dec711ca1c2f92f67d123f2a3cf267a5fee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/TransactionBuyCommandHandler.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b8731ee21916433a3951734281774da6b2c8d81611c9972e200b67f44687ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/TransactionRemoveCommandHandler.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b26712237560caad668e53e1ebf49648a3324e6278a78d4f130f89324dacf5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Further Validation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/TransactionDividendCommandHandler.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bb36814f99914628e0e0e762644732de5f53e8b7d0a2e66734341920bc01076"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Further Validation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/TransactionSellCommandHandler.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddc8b47ad3f8f5ac087bc616cf35576903fa0d3925bb27872483eb0ae59b46b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Further Validation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/TransactionSplitCommandHandler.cs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dcb8a075fe5c6a82aaeba9a42d8a2cae8b9e956be7e4877059999c37d8542fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Validation MAE must be smaller than share price if long, else higher, same for MFE \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd/CommandHandler/TransactionSellCommandHandler.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b95f09a0e23b85841c655c60fdb508b8215f77388c324f49579a56f65df0ddc5"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Query.Tests/Queries/TransactionAllQueryTests.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b7f14ffab87f6109ad268b116bd7413a180bcfcac294fd42c4de47143abc0aa"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 8 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Query.Tests/Queries/TransactionYearsQueryTests.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"106fd4530c63b5ae5f3208f0577d441e710855c81674c0779819b3ac68aca681"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Further processing, what must be done when a transaction was reverted? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.Events/EventHandler/TransactionUndoEventHandler.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66b433632c2846fa4be7d649fae40793a5ee3082bb579357cf44c3b334ac04c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Revert balance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.Events/EventHandler/TransactionUndoEventHandler.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"887751add452cdf76c1baece3190e78d801ef49b5483a3f34aa5ad0270307b49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: What if multiple process managers handling the same message type? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.Process/Locator/ProcessManagerCoordinator.cs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b14fb4a70657ceb75aebc46007cb3b15d9524187fbed3ef8300ad2654d32acc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Move to a domain service \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.Process/ProcessManagers/TransactionProcessManager.cs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2d29002a530ffc259af4b8441b111bc755cad4eacfb876b7a226ecfb556c8b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Move to a domain service \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.Process/ProcessManagers/TransactionProcessManager.cs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b026d661c07206c1ce44dcb3aeb900a0d1903ecb542c3e70e274dd3300c3bff4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Performance-Optimization: Why loading all events and then only using the last \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.EventSourcing/Storage/EventStore.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2def7ccd8587563e5ff83b7cec4d828aba98bd75999faa2e7d7df29e91ce5f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:StatisticsCalcDaily DailyInformation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"35827a904f022f3bc047940030bbe61de20c411da244839624128a893a9da9ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:IEnumerable\u003CStatisticsKPI\u003E KPI { get; } Create new service, inject this service \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b904e0a27c675245210e90560e7f7dddf1d955ea2bcd5598e8b9c115f9425d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:List\u003CStatisticsClusterNode\u003E ClusterLosses { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"d746973ab65561c7257a2d82b46c945f5f043c0976b6490ae1fb5f43fe406217"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:List\u003CStatisticsClusterNode\u003E ClusterProfits { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"185d262598e72e91729abd1f20c7a808d7fbae6a4749e02896704e0577b352cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:List\u003CStatisticsClusterNode\u003E ClusterCombined { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"53331d13e7fe470a10ad0f9db4236f6bc5fa21b9399dccc9c7574405ccf3bbb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:List\u003CStatisticsClusterNode\u003E ClusterR { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f4426d3031cb3763e39b4ea4af673dd68b0245b9328153923da140ae34e6e8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:StatisticsAccumulationPlan AccumulationPlanAnalysis { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"da4ea2498ea9323e4363d333e58f2e3a231aa9ce18f68cf1ebe235fcfa1a0e5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:List\u003CStatisticsMAE\u003E MAEDistribution { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"457334bbd5a4c6beecf55f10a8867d9711ec12c1f7a2e63ad70d65cc109b9a82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:List\u003CStatisticsMFE\u003E MFEDistribution { get; } \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Interfaces/Domain/IStatistic.cs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"7692ab11d57332153a6055747dd505d82037d661a657cc9ad5b6988fc6fa0d91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Implement something useful or remove \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services.External/Services/StockQuoteExternalService.cs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"48dd40a689fe818794b270ad10d700b06f3735f8fca115fd4d9fc7822632868a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Calculate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services.Tests/Services/AccumulationPlanStatisticServiceTests.cs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7684c4cf42e4b46fdf6498d1593730191a2c60f436cf13d209e606ef4afbcf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: CalculateSumInpayment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services.Tests/Services/AccumulationPlanStatisticServiceTests.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"dce0a4c4693cadbc547568321698844a7c4888b1b348f60bca0226f31fa089f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: CalculateSumCapital \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services.Tests/Services/AccumulationPlanStatisticServiceTests.cs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"6802c6df316cf2d5568324abeffdc1e94c86fb792ce1eb8f58aa2a998941f95c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: CalculatePerformancePercentageIIR \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services.Tests/Services/AccumulationPlanStatisticServiceTests.cs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"2279f08e8c77d8611b3e9f86e362474abcf412e17ce737d9b34175b42f6cf6ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: MAEDistribution,MFEDistribution \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Modules/StatisticDailyBasisModule.cs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d75b229af096ff9a4df9584c11da0a259f84e80f0ccf2868ee84711272facd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Use rule engine builder to make it more readable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Modules/StatisticEfficiencyAmountModule.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d116c2e55fa6ac318014f760aec6c184f852bfc32c41dde656100d03409094df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Use rule engine builder to make it more readable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Modules/StatisticEfficiencyAmountModule.cs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09ad23c391aada98c64d88a3447bc3be9bf96c95803105500e735b6747a386e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Implement StockQuotationService \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/StockQuoteService.cs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b6d97337c467e76494c7fb8963ee47f617ae7badbd4d7463ed91ee5d25f3ee4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Add option to skip quarters and months for performance when used for example on performance dashboard \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TimeSliceCreationService.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c341a2d0d3c9868b93fa58ae963b8eb849fc9d05a9dd93ae7c6674cf073a8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Not good \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionCalculationService.cs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ab40249348ae331c9096086d8698aed1d1f1d885041adbc46e8ec6b6278c5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Check if earnings from sellings should also be incorporated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionCalculationService.cs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2b6e7eb7ff05b1baa886573c67a4b9f3447aab992e0c315e3a28bd669330e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Add MaximumRisk to global configuration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TransactionPerformanceService.cs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bbc4e4e69ea72953f1f89f459cf91e72921ccfb21aec36f0e5d17fd76f2d027"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:Test Dividend \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web.Tests/TransactionPerformanceServiceTests.cs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"263f95e20c6bb83c73d3f7da93560476bde7b6451690557b64cbc99daf4a75b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO:GetAverageBuyingPricePerUnit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web.Tests/TransactionPerformanceServiceTests.cs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa17faa837f8a5d5a228814338ce5ba61d538fee3f54bf5da7cfd9e0c9d65188"}},{"ruleId":"D17","level":"warning","message":{"text":"CommentedOutCode: 7 consecutive commented-code lines"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web.Tests/TypesTests.cs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf5ecfb86df8e78ae536abb484fe77f8f1fbcb6a6075a052e45251034e94e72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Make configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/App_Start/BindingModules/EventSourcingBindingModule.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e834602db5e7f0d419573ccb0a50cc5e038cabc751518b6ba15dfc13af0eda49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Make configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/App_Start/BindingModules/EventSourcingBindingModule.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"30414eb1c61b10880dde14c7a0942a8cc16c89d41752c858452d6bea6cf17662"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Make configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/App_Start/BindingModules/EventSourcingBindingModule.cs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"a688ca95ddddc544a7d8a75c8a48c782f1d43b9b1d0c254fb9ddd48ef612275b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Make configurable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/App_Start/BindingModules/EventSourcingBindingModule.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da9d276f28c70e7d84240ed2386faa65966b921442c28e820715378c50a2d5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Create converter service and put this there \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Common/ModelBinders/ImageViewModelBinder.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"862bd5432ddbe3233d4eb4075b817979836ea338f635d15ddd825f3c147173e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Create converter service and put this there \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Common/ModelBinders/ImageViewModelBinder.cs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3daa4ce194536d2d31ad25a37b0d8ddea79eb4a9977a97cf1d5b8b495217ca01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Duplicate code, see QuotationController.UpdateQuotation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Common/Scheduler/UpdateQuotationsScheduledJob.cs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99cfbfe4d6831ca5938933c9993731b8519d334f675929887cc06bc4c1af6d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Duplicate code, see QuotationController.UpdateQuotation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/StockController.cs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ff31b8d37db2375ec152dd51a27895dab1f84621eec5385b818a15b9785917"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Application is not able to handle multithreading properly, we need to make sure nothing else is importing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/MigrationController.cs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"2570fcffac53e63944f25f15636bc4cc360a8299c2fe34986c71aeea58052db9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Check all jobs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/MigrationController.cs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3a9fe99d651b35b5d4c4fc27d38eacc43a4ee763ac935849d6bd15951e2bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Edit a transaction \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Controllers/TransactionController.cs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e521904d6dfffab9febefb7d102cb36892fd9d38c074df3cd58f4f9c4b222c7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Test if every translation was found and no null was returned \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Migration/Importer/TestQueries.cs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"35324374b91c8ce90e35bc5c7aaa0267916ff52e9ef17904ad69fcc03c6ebcca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Support RavenDB as well \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Web/Startup.cs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b6999846679d2ac0341d0fb2204534bafd6916ad9bbb456573a5abaa54aed98"}},{"ruleId":"D17","level":"warning","message":{"text":"Dead code: CreateMonths: Method CreateMonths \u2014 no references found in solution."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Services/Services/TimeSliceCreationService.cs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2213b22f06cee831189ea7de95af14739b0c22bf49a9a878f0086579f6df48"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: StockTradingAnalysis.CQRS.Tests: \u0060StockTradingAnalysis.CQRS.Tests\u0060 contributes only 0 significant line(s) \u2014 an empty/placeholder project is structural noise. Remove it or fold its contents into a real project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.CQRS.Tests/StockTradingAnalysis.CQRS.Tests.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1141c76771e815d1648441b12dd14b289589a0ced41275e04019ef50cf60d519"}},{"ruleId":"D18","level":"note","message":{"text":"Shell project: StockTradingAnalysis.Domain.CQRS.Cmd.Tests: \u0060StockTradingAnalysis.Domain.CQRS.Cmd.Tests\u0060 contributes only 0 significant line(s) \u2014 an empty/placeholder project is structural noise. Remove it or fold its contents into a real project."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"StockTradingAnalysisWebsite/StockTradingAnalysis.Domain.CQRS.Cmd.Tests/StockTradingAnalysis.Domain.CQRS.Cmd.Tests.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04929e38c339117e96aac1ff486288d667dab36fefe56810621d125a760e74d3"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found at common paths; consider documenting architectural decisions in Docs/ADL/ or similar."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D23","level":"note","message":{"text":"Bounded contexts not declared: At 28k LoC across 21 projects the codebase is large and multi-module, so explicit bounded contexts are needed. Name this codebase\u0027s bounded contexts (\u22652 module groups, e.g. per subsystem) so cross-boundary type coupling can be assessed. Declare them in \u0060.codehealth/config.yaml\u0060 at the repository root (create it if absent), mapping each context name to the namespace prefixes that belong to it \u2014 e.g. \u0060architecture:\u0060 \u2192 \u0060contexts:\u0060 \u2192 \u0060Billing: [\u0022Acme.Billing\u0022]\u0060, \u0060Catalog: [\u0022Acme.Catalog\u0022]\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"1c7e276c9c682731f01819ed5378b90ca320cde1b583c90920172911598362b3"}},{"ruleId":"D26","level":"note","message":{"text":"Split StockTradingAnalysis.Web: A web application whose name implies trading analysis but is a sprawling catch-all at 7840 LoC and 154 types across 23 namespaces. Suggested: by namespace: WebRoutes, OrderProcessing, RiskAnalytics, Reporting"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a02955be86bd4aebbd2de2ab04ad16f1b25aa7a9804559940cf574b73b062010"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5327c1442f22a3e3f926186468cc5e425d4f539cfd81e72e95042f95fd2d1c77"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a230f77f63788cf620ad6e92e1eb3dd3e6c60d210fdfb512026511dde45ea54d"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fd2daee9323027f5a8b5b2e6639a3910d4ee6d5c384c4b454dea2532270d18c9"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5bd97fa92fd80f8cb5345ade18de0380c02a421251121bf20c568257510b9a31"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"00b8d1e19e08601a527f619105b81df55de6e2bd5ee2a928945e30a3b3622681"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f576d1ff3e4b53547a04110ba8d663a9e453ec33acd4cc38450fa972a577163f"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1863e339c12592d9b25b73f2721573b7851eb7fd4258d82ca8a0eab02943515f"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"115824c98d85a2decc9c6337bb4a767b3ed314cab378099e1b3653c734fecdf0"},"taxa":[{"id":"CWE-502","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4305f4b855cc0a5dea3b29c8d1808ef3d29fe9455151ddb62a31e2d08ccef30b"},"taxa":[{"id":"CWE-502","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0f1dd0c954ff2d8abf80db889e07e605d5d7ead8fef43536e334f1e1cb978908"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"854e82f795a9ecdd59431dbf4ef7afa97e825e3dfeab395328f3cc4340ce3236"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a408a4f7ca49557e360f28dd03199780aa1308980d2168b684531ac4018f8c6b"},"taxa":[{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"54eef306d75cdef445c7267c726de8afdcba21a197728ef4053875976609580e"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd72194e91e72e143bfc856c710d63ac197009ad2d0a991bfa3fd19c7480da3a"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bbb0e5683c987a78d28a80cebca40e997acdc95f62a1deda9e790fd5046b7f54"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fbfbfec14c99f297149d36ec873c52c03b77583ef084be221b86e691c628f94e"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"333c540d7c068f8337ba9b9ecb1aad7500f34e41e06ab5c72ecf8d5e81126b60"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3351ffc91175e614cb797d0fbd40dce97149bc94eb9ec7b748fc1f87d7e06215"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5df1749899ac6cf0f9c2ad678e076600a4b7ed9fb1e721d2a3d1b49b2d0f51cf"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"12ff2daee1762d503f4c881593e92f283c885dfda80cc9bfd3343e00317eda31"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b72985fd713041865084c3d524768b3f4630806ee337e0510b25e21f55464390"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a4f57e8f594582e331a49a43f052fd8a8b8eb4d1246741919d3f56128b9eb90c"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d8084f6d47e4efbdc9066d18fad4968401790d4a988a5958f0fcd9501976e5e2"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ef86c55fdc7d5b923fd0f1de2aa35b8645214b3e4a7f2b23a04952f0be92a9e"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bc377467b95c1587dbc7ba1b90eb364cba6dbc7f10861c75429c8ad0e6651c06"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c70fb587ee41fa9e16f37ae873219945bd37ce66e9ec834cf584659703cdc33b"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"821fad7a969e7cc9281a370db6aab5c3303e8557acdcae79a5471e7a71f6b004"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8b734605b12b155801ebbd94bddad3e2cc2f9a2dfe4f7aa20301d760c5c4f33f"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b65c215f6d5bea043238e5d0595a7b4e1b1363188c6c27f57a4d2e4b5922fb73"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"212d793cb403699f298f29f6aba5ca8a313d94d9f084f552674d260a38af315a"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"85fde78228fb94ca16d21c1a484fa2b0ded00f9204ec4242c6d75d91104cd5b9"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a1e88a3f22565e75c735ecbc9252099aaf418c523649b2e903525686d6d0845e"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"76a3213556ed5939846595fef0d1a33d39e4a0286a840681449f48ad1e86fe49"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0878d2320fe674ed975d000d37022ed229cfe0854954af227b446f57b5dee8ab"},"taxa":[{"id":"CWE-862","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4491ced008620075477fdbbe564423000997330a660319ec2f2c46e80af09861"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"43e8ab35e56169394ffd4bc7ba5b821e20ce4897d3e704c9c213ad9dc24fc05d"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0cd75e8da84af17476b055319999782a478aa4c7553f9b90bf2a11e2536bce9b"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cf5cf2c191f65b339ce02cb7c414c9ff6e5cc1205ebc02f3c10c1729ed868b11"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1397a22504ac55c472f79e8348570dff019d05cdacc824dc9a06a9baa7c4cdfc"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"026db096f021d8e8f6b86c4dafe6fda7432cfe3801546e8ea9edbfd930258881"},"taxa":[{"id":"CWE-915","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"15bb3ebd73a8d6b95fbbf0c43a373d72e5686e1dcfc32a5923d4c397669e0037"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a20b595fa78dd4c6468878cf40fbb43affa2d7abd242cfd4c18a3a011bc6304b"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"be70ac9a0ff6b7715f30663c617282d52aeff089c15728de326d2528fdbb4987"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4e4448b31e8b4dd1a6489e264df38146de5afb770ee8e6556d999f07ae5800a8"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2fe60fcb09eccc26e5cb0c177fdabda6530875735b9f9591b677a79c942329d0"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"47bd30705a219bd399a7f2733b561791c45cb2a4331894ae86903f7d1aa44d17"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c0be955c84d60720bf8eb89970811491cf35466aac23959dee5487a8eaf2752c"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"322c04cc567fb823f253ebbb1c3ecb268a3cdc1f4d3819b255de20dc60397240"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8916373eb94a9a2e787230300981e864277871b0e237bb70356ff6b314fa8360"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ae15deacd8d65304febbc4286307d74123e6c6fe9b7a2d543fbda4f0528528a"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7a6deedcb6c36796a5b05c938981286d69e7f00ecdcce470f079f0282aa3b932"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"98cbc7e57a41d5e7668b90a8a155bc15d76f5303729946817f2a98437be515bf"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"610075293ab8f43345e7459f2b2b0c0596e54fc96a02a1ff9558990add7bc338"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"169765799eb5ba3bc51de31d6386c093bd8a87abd1372d8b25ec87704d715ac0"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b96b7173c4377d5bea4d6fd7b52323631c631c44172b743bec6f266c10a4e538"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a80c51272d9b6d0ddf0bfe8367adccf31da8f01e749ce0478379de8a3263de09"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c15da98dccd3b6fd378cfdff14d19a86311446e2743e97e860c5e1e32d364573"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"144ba3d64b2f88552ffc19d754e40bd2451972fd866ceb13b6e402c8039c1886"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cf4c113eb288d39ee0c714e02d25d38147b0593df44e326d84a382302eed0a5d"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9d805d44706f4fb5e01d1092c618ec845971c926ab6804be743839620ec95d1e"}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6df3bf96c71d594dea329a64033fb3bc8969b3a50731a3a52bfaf748402b714e"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0f59799bebe7ec015a274fd57703fda1a1ed6548c9307cbc5d281ab6e8e2ad91"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"81b3168862ad8caf90904a31f173615a7b5464da7d4af7072c8b6fa8b579a35d"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d8c278def19a8f6336b906458fc4f81a91e298b69fa7e731683dc5e4e434d0f"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff25dac3a185b89c82d4f2baefec547c1df0a60e144759585ffcda81462b74ed"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"221b41b2222ca064bdc17c24798240a7db688459ab3b7b2c9028aae096ce0085"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"77697df5285a68b770e67a0507172de281b4e5b4e7d7b111e9351692474f9d62"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b3c6c9e44f8b1b18670924e0d491aa4ac3c3285cc878ec61e4c1c236907d9b54"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e43e7cabcefdd43f2ae865d029b7d7c4aadb428e3a61c970b0c665baf9cb07d7"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"34a896eafb37e6adeb5946a6f685b0a9872817066e72ab5e8137341beac28830"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"480166d4c2f8276af16c3234e7730fb32452e33b00e62210d0f5aad1ab292e2a"}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"980f2166c13e3dcf8a85cee8e9f96b57957e94fb1607ef95391355b34cc8becf"}},{"ruleId":"D34","level":"note","message":{"text":"Dormant codebase: 129 of 129 significant files have no living knowledge \u2014 the codebase as a whole is dormant, not 129 separate risks. Re-engage owners or document before change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c69f1e54b7dd6fe9029dd02df6ba8f8145b789f2f18dbdaa086c40ded49dba6"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-345","guid":"d80d4b65-bbbe-b65d-958e-7ac466af18f9","name":"CWE-345","shortDescription":{"text":"CWE-345"},"helpUri":"https://cwe.mitre.org/data/definitions/345.html"},{"id":"CWE-502","guid":"f7d3b296-aac0-5c5a-b706-e07faba26c36","name":"CWE-502","shortDescription":{"text":"CWE-502"},"helpUri":"https://cwe.mitre.org/data/definitions/502.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-862","guid":"2d96ecd7-f7f1-7f55-9f3a-43bb5bafdf33","name":"CWE-862","shortDescription":{"text":"CWE-862"},"helpUri":"https://cwe.mitre.org/data/definitions/862.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-915","guid":"ec38bdce-3b41-7c53-a89e-debc2dd7da65","name":"CWE-915","shortDescription":{"text":"CWE-915"},"helpUri":"https://cwe.mitre.org/data/definitions/915.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":72,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}