{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:01.096217Z","repo":{"ref":{"host":"github.com","owner":"Morveus","name":"everquest-spell-keys"},"default_branch":"main","clone_url":"https://github.com/Morveus/everquest-spell-keys.git","html_url":"https://github.com/Morveus/everquest-spell-keys","description":"Your EverQuest spell gems live on your keys — plugins for Logitech MX Creative Console and Elgato Stream Deck","stars":0,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":250,"primary_language":"C#","license_spdx":"MIT","created_at":"2026-08-03T07:56:47Z","pushed_at":"2026-08-13T12:44:53Z","security_policy_url":null,"distribution":{"owner_created_at":"2012-12-05T15:35:30Z","owner_type":"User","release_assets":[{"name":"everquest-streamdeck-v1.1.0.zip","size":646837,"download_count":0,"release_tag":"v1.1.0","url":"https://github.com/Morveus/everquest-spell-keys/releases/download/v1.1.0/everquest-streamdeck-v1.1.0.zip"},{"name":"EverQuestSpells-v1.0.0.zip","size":35928,"download_count":0,"release_tag":"v1.0.0","url":"https://github.com/Morveus/everquest-spell-keys/releases/download/v1.0.0/EverQuestSpells-v1.0.0.zip"}]}},"commit_sha":"0c89d6e00c202a7caa7c23a1c08400b22a757085","profile":{"lines_by_language":{"C#":3242},"files_by_category":{"source":18,"binary":13,"docs":4,"other":4,"config":3},"source_lines":3242,"test_lines":0},"pillars":{"ai_provenance":{"score":100.0,"confidence":0.79,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":1.0,"suspected_share":0.0,"estimated_share":1.0,"ai_artifacts":0.0,"flagged_work_units":0.0,"flagged_releases":0.0,"style_index":0.0},"summary":"Explicit AI attribution on 100% of first-party code added; an estimated 100% including velocity signals."},"quality":{"score":46.6,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":41.0,"duplication":96.6,"lint":69.3,"testing":0.0,"docs":65.0,"type_safety":null,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 30% of function code in complex or long functions; 1% duplicated lines. Weakest area: testing."},"security":{"score":81.8,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":100.0,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is adequate: no high-impact findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":36.0,"attributed_commits":35.0,"attributed_commit_share":0.9722222222222222,"effective_loc":4541.0,"attributed_loc":4541.0,"attributed_loc_share":1.0,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 35 attributed commits, 4,541 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0c89d6e00c202a7caa7c23a1c08400b22a757085","url":"https://github.com/Morveus/everquest-spell-keys/commit/0c89d6e00c202a7caa7c23a1c08400b22a757085","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8c99894da42d348af4f4c0be4e8a741eb23b858d","url":"https://github.com/Morveus/everquest-spell-keys/commit/8c99894da42d348af4f4c0be4e8a741eb23b858d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"278d059be691bb9434b584937175630e106eabbb","url":"https://github.com/Morveus/everquest-spell-keys/commit/278d059be691bb9434b584937175630e106eabbb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"25b0dea8c195850e618ae3fc239ec5221b0e2ad4","url":"https://github.com/Morveus/everquest-spell-keys/commit/25b0dea8c195850e618ae3fc239ec5221b0e2ad4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3af4fbb332145b7dd9e90642d8248d80b3e76a7f","url":"https://github.com/Morveus/everquest-spell-keys/commit/3af4fbb332145b7dd9e90642d8248d80b3e76a7f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b8edeed779ba6d91665dc9ed357d6f22ab27c251","url":"https://github.com/Morveus/everquest-spell-keys/commit/b8edeed779ba6d91665dc9ed357d6f22ab27c251","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"08d9b42b2ded8dc3acf70453e905f637b177731a","url":"https://github.com/Morveus/everquest-spell-keys/commit/08d9b42b2ded8dc3acf70453e905f637b177731a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"738f8160e4774f2540ddcc0537d4a18adf24ad2a","url":"https://github.com/Morveus/everquest-spell-keys/commit/738f8160e4774f2540ddcc0537d4a18adf24ad2a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5329e9af8eb90fb5f5d990a9c266b6fa17ff441d","url":"https://github.com/Morveus/everquest-spell-keys/commit/5329e9af8eb90fb5f5d990a9c266b6fa17ff441d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"35827c8caaf421b1702d3cec34d317e4abf51370","url":"https://github.com/Morveus/everquest-spell-keys/commit/35827c8caaf421b1702d3cec34d317e4abf51370","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2c5bb8a98cd5ec278d36ca1d01182ee0599d9466","url":"https://github.com/Morveus/everquest-spell-keys/commit/2c5bb8a98cd5ec278d36ca1d01182ee0599d9466","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"58433da983e4d94d8266b45e5374d9733b4fb667","url":"https://github.com/Morveus/everquest-spell-keys/commit/58433da983e4d94d8266b45e5374d9733b4fb667","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"097c0092be0efc08398bd651c0764f47dbc5a49c","url":"https://github.com/Morveus/everquest-spell-keys/commit/097c0092be0efc08398bd651c0764f47dbc5a49c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a1f490d2bfbce574ff9c63701811e5dae06daa75","url":"https://github.com/Morveus/everquest-spell-keys/commit/a1f490d2bfbce574ff9c63701811e5dae06daa75","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3bb5437f3f6bc12c011c2f1e249a6457c4d122f5","url":"https://github.com/Morveus/everquest-spell-keys/commit/3bb5437f3f6bc12c011c2f1e249a6457c4d122f5","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"001fedc9676383913476462075fb345c8acd49c8","url":"https://github.com/Morveus/everquest-spell-keys/commit/001fedc9676383913476462075fb345c8acd49c8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"45c631ef9701f116e91a90b4c469e3dff26bab9c","url":"https://github.com/Morveus/everquest-spell-keys/commit/45c631ef9701f116e91a90b4c469e3dff26bab9c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"58ec148abc80f8d82ed956ffcfe13c41c86e0b7c","url":"https://github.com/Morveus/everquest-spell-keys/commit/58ec148abc80f8d82ed956ffcfe13c41c86e0b7c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3e51d7650a957d36e010e0d2f9ca04712403296d","url":"https://github.com/Morveus/everquest-spell-keys/commit/3e51d7650a957d36e010e0d2f9ca04712403296d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"75bd8668c4648cb49987b1fae9eaa247a1dd6c4a","url":"https://github.com/Morveus/everquest-spell-keys/commit/75bd8668c4648cb49987b1fae9eaa247a1dd6c4a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d4231c4c7f907922f2f2644b7a826e1bb34602df","url":"https://github.com/Morveus/everquest-spell-keys/commit/d4231c4c7f907922f2f2644b7a826e1bb34602df","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a50bf5daf6ab198ef9f1d0f93a0a00a354862934","url":"https://github.com/Morveus/everquest-spell-keys/commit/a50bf5daf6ab198ef9f1d0f93a0a00a354862934","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"05371c6c8324ecc177b82e3ef038e2b0e8609a4e","url":"https://github.com/Morveus/everquest-spell-keys/commit/05371c6c8324ecc177b82e3ef038e2b0e8609a4e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"1199082bce2a9317013f0b0791c640f160e6251b","url":"https://github.com/Morveus/everquest-spell-keys/commit/1199082bce2a9317013f0b0791c640f160e6251b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2e313f7525a1c4425c7c8c33eb5bc4aabf3d4fa2","url":"https://github.com/Morveus/everquest-spell-keys/commit/2e313f7525a1c4425c7c8c33eb5bc4aabf3d4fa2","weight":0.9}],"data":{"attributed_loc_by_commit":{"88e6283b9ac925cb2743f02c2bae3d4bc62eccb5":1387,"1d0514b8174354c3d966658a188490b0fa4bdfc8":0,"f9e5f01776413c6d188f6295d165e7410cf8df48":0,"c2ebc39c456e3603b99e9766a6e196642495fdc2":142,"032ab33b8681b430c87bcb56d25f0a62f5fc7657":991,"1189a4aaeb2040b2ba7798022c4c269611639a2f":98,"d540873e709259c9004bc0b5acee95c38aad3ee7":61,"ad8a96141d4fc3cd5dd594073538c33ec23b7d8c":167,"d6d1cef15a71ba0455c6e5938abcc6f64c96343d":0,"4dbd2c21ac1b979aecc34aed868e9028d6337ad8":27,"2e313f7525a1c4425c7c8c33eb5bc4aabf3d4fa2":0,"1199082bce2a9317013f0b0791c640f160e6251b":33,"05371c6c8324ecc177b82e3ef038e2b0e8609a4e":11,"a50bf5daf6ab198ef9f1d0f93a0a00a354862934":114,"d4231c4c7f907922f2f2644b7a826e1bb34602df":67,"75bd8668c4648cb49987b1fae9eaa247a1dd6c4a":56,"3e51d7650a957d36e010e0d2f9ca04712403296d":27,"58ec148abc80f8d82ed956ffcfe13c41c86e0b7c":24,"45c631ef9701f116e91a90b4c469e3dff26bab9c":15,"001fedc9676383913476462075fb345c8acd49c8":18,"3bb5437f3f6bc12c011c2f1e249a6457c4d122f5":0,"a1f490d2bfbce574ff9c63701811e5dae06daa75":75,"097c0092be0efc08398bd651c0764f47dbc5a49c":150,"58433da983e4d94d8266b45e5374d9733b4fb667":672,"2c5bb8a98cd5ec278d36ca1d01182ee0599d9466":138,"35827c8caaf421b1702d3cec34d317e4abf51370":33,"5329e9af8eb90fb5f5d990a9c266b6fa17ff441d":10,"738f8160e4774f2540ddcc0537d4a18adf24ad2a":45,"08d9b42b2ded8dc3acf70453e905f637b177731a":10,"b8edeed779ba6d91665dc9ed357d6f22ab27c251":0,"3af4fbb332145b7dd9e90642d8248d80b3e76a7f":0,"25b0dea8c195850e618ae3fc239ec5221b0e2ad4":41,"278d059be691bb9434b584937175630e106eabbb":62,"8c99894da42d348af4f4c0be4e8a741eb23b858d":38,"0c89d6e00c202a7caa7c23a1c08400b22a757085":29},"tools":{"claude-code":{"name":"Claude Code","commits":35,"loc":4541,"first_seen":1785686338,"last_seen":1786625091}},"monthly":{"2026-08":{"loc":4541,"attributed_loc":4541}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":10.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":4541.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":390.2761973725044,"median_loc_per_hour":294.09843632253205,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":1.0,"flagged_releases":0.0,"max_loc_per_day":429.3},"findings":[],"evidence":[],"data":{"releases":[{"from":"v1.0.0","to":"v1.1.0","loc":1273,"days":2.97,"loc_per_day":429.3,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":3242.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":0.0,"findings_high":0.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":0.0,"scanned_lines":3242.0,"parse_errors":0.0},"findings":[],"evidence":[],"data":{"rulesets":["csharp"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.0,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":2.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v1.1.0 ships everquest-streamdeck-v1.1.0.zip (0 downloads)","ref":"everquest-streamdeck-v1.1.0.zip","url":"https://github.com/Morveus/everquest-spell-keys/releases/download/v1.1.0/everquest-streamdeck-v1.1.0.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v1.0.0 ships EverQuestSpells-v1.0.0.zip (0 downloads)","ref":"EverQuestSpells-v1.0.0.zip","url":"https://github.com/Morveus/everquest-spell-keys/releases/download/v1.0.0/EverQuestSpells-v1.0.0.zip","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":123.0,"function_nloc":2136.0,"mean_ccn":5.07,"p90_ccn":13.0,"complex_functions":9.0,"long_functions":1.0,"many_param_functions":2.0,"risky_nloc_share":0.2973},"findings":[],"evidence":[{"kind":"complex-function","description":"SpellBarReader::Update in core/SpellBarReader.cs: complexity 51, 168 lines","ref":"core/SpellBarReader.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/SpellBarReader.cs#L187","weight":0.85},{"kind":"complex-function","description":"Tga::Load in core/EqIconLib.cs: complexity 25, 77 lines","ref":"core/EqIconLib.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/EqIconLib.cs#L12","weight":0.4166666666666667},{"kind":"complex-function","description":"SpellBarReader::LoadState in core/SpellBarReader.cs: complexity 23, 46 lines","ref":"core/SpellBarReader.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/SpellBarReader.cs#L1085","weight":0.38333333333333336},{"kind":"complex-function","description":"SpellBarReader::LocateBar in core/SpellBarReader.cs: complexity 20, 63 lines","ref":"core/SpellBarReader.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/SpellBarReader.cs#L674","weight":0.3333333333333333},{"kind":"complex-function","description":"EqGame::FindGameDir in core/EqGame.cs: complexity 19, 88 lines","ref":"core/EqGame.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/EqGame.cs#L99","weight":0.31666666666666665},{"kind":"complex-function","description":"Matcher::FindBar in core/EqIconLib.cs: complexity 19, 58 lines","ref":"core/EqIconLib.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/EqIconLib.cs#L403","weight":0.31666666666666665},{"kind":"complex-function","description":"Matcher::FindGridPeriodic in core/EqIconLib.cs: complexity 17, 53 lines","ref":"core/EqIconLib.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/EqIconLib.cs#L320","weight":0.2833333333333333},{"kind":"complex-function","description":"SpellBarReader::ClimbToTop in core/SpellBarReader.cs: complexity 17, 42 lines","ref":"core/SpellBarReader.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/SpellBarReader.cs#L800","weight":0.2833333333333333},{"kind":"complex-function","description":"SpellBarReader::ReidentifyGems in core/SpellBarReader.cs: complexity 17, 40 lines","ref":"core/SpellBarReader.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/SpellBarReader.cs#L512","weight":0.2833333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":2069.0,"duplicated_lines":12.0,"duplicated_share":0.0058,"files":18.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: core/SpellBarReader.cs:217 and core/SpellBarReader.cs:1163","ref":"core/SpellBarReader.cs","url":"https://github.com/Morveus/everquest-spell-keys/blob/0c89d6e00c202a7caa7c23a1c08400b22a757085/core/SpellBarReader.cs#L217","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":19.0,"weighted_findings":4.75,"scanned_lines":3242.0,"category:best-practice":19.0},"findings":[{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/IconUpdater.cs","line":68,"fingerprint":"csharp.lang.best-practice.structured-logging:core/IconUpdater.cs:68"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/IconUpdater.cs","line":74,"fingerprint":"csharp.lang.best-practice.structured-logging:core/IconUpdater.cs:74"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/IconUpdater.cs","line":148,"fingerprint":"csharp.lang.best-practice.structured-logging:core/IconUpdater.cs:148"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":265,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:265"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":286,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:286"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":362,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:362"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":610,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:610"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":838,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:838"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":846,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:846"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":889,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:889"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":1005,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:1005"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":1017,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:1017"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":1039,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:1039"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"core/SpellBarReader.cs","line":1206,"fingerprint":"csharp.lang.best-practice.structured-logging:core/SpellBarReader.cs:1206"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"plugin/EverQuestPlugin/EverQuestPlugin.cs","line":40,"fingerprint":"csharp.lang.best-practice.structured-logging:plugin/EverQuestPlugin/EverQuestPlugin.cs:40"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"streamdeck/EverQuestStreamDeck/Program.cs","line":94,"fingerprint":"csharp.lang.best-practice.structured-logging:streamdeck/EverQuestStreamDeck/Program.cs:94"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"streamdeck/EverQuestStreamDeck/Program.cs","line":115,"fingerprint":"csharp.lang.best-practice.structured-logging:streamdeck/EverQuestStreamDeck/Program.cs:115"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"streamdeck/EverQuestStreamDeck/SpellKeys.cs","line":64,"fingerprint":"csharp.lang.best-practice.structured-logging:streamdeck/EverQuestStreamDeck/SpellKeys.cs:64"},{"rule_id":"opengrep/csharp.lang.best-practice.structured-logging","severity":"low","message":"String interpolation in log message obscures the distinction between variables and the log message. Use structured logging instead, where the variables are passed as additional arguments and the interpolation is performed by the logging library. This reduces the possibility of log injection and make","path":"streamdeck/EverQuestStreamDeck/SpellKeys.cs","line":70,"fingerprint":"csharp.lang.best-practice.structured-logging:streamdeck/EverQuestStreamDeck/SpellKeys.cs:70"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":3242.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":28.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":152.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":3242.0,"other_lines":0.0,"files_blamed":18.0,"blame_failures":0.0,"quality:ai_findings":19.0,"quality:ai_per_kloc":5.861,"quality:other_findings":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":["unreviewed-ai-risk"]}