{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:01.047856Z","repo":{"ref":{"host":"github.com","owner":"MaykEu","name":"DeepVault"},"default_branch":"main","clone_url":"https://github.com/MaykEu/DeepVault.git","html_url":"https://github.com/MaykEu/DeepVault","description":"An interactive learning platform for mastering computers, programming, and software engineering. Pure HTML/CSS/JS — zero dependencies, zero server. Built with AI.","stars":1,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":17637,"primary_language":"JavaScript","license_spdx":"MIT","created_at":"2026-07-01T17:46:46Z","pushed_at":"2026-07-27T22:17:10Z","security_policy_url":null,"distribution":{"owner_created_at":"2024-10-08T18:51:46Z","owner_type":"User","release_assets":[]}},"commit_sha":"6c492d0b644b1f6524f12c3ccf7fba57f070dcc6","profile":{"lines_by_language":{"JavaScript":24611,"Python":977},"files_by_category":{"source":27,"config":8,"docs":8,"other":7,"test":7,"oversized":3},"source_lines":25282,"test_lines":306},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.65,"coverage":1.0,"label":"possible","breakdown":{"attributed_share":0.0,"suspected_share":0.7224,"estimated_share":0.0,"ai_artifacts":0.0,"flagged_work_units":2.0,"flagged_releases":null,"style_index":3.487},"summary":"Weak signals consistent with AI-assisted development. Comments and strings use phrasing typical of LLM-written code (see the coding style evidence)."},"quality":{"score":40.1,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":29.8,"duplication":4.1,"lint":95.2,"testing":20.9,"docs":80.0,"type_safety":40.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.01, no CI test run detected; 40% of function code in complex or long functions; 53% duplicated lines. Weakest area: duplication."},"security":{"score":59.3,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":90.5,"sast":50.0,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 61 high-severity SAST 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":330.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":46259.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2026-07":{"loc":46259,"attributed_loc":0}}},"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":23.0,"flagged_units":2.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":44103.0,"flagged_loc":33417.0,"flagged_loc_share":0.757703557581117,"max_loc_per_hour":3745.4769800262206,"median_loc_per_hour":152.75,"pr_timed_units":0.0,"excluded_import_loc":2156.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"26,982 lines of first-party code in ~7.2h (3,745 lines/hour, 22 commit session)","ref":"a0c059610c57bed44d4e10deb4b9dc95ed109cf4","url":"https://github.com/MaykEu/DeepVault/commit/a0c059610c57bed44d4e10deb4b9dc95ed109cf4","weight":0.6},{"kind":"velocity-burst","description":"6,435 lines of first-party code in ~5.8h (1,112 lines/hour, 42 commit session)","ref":"31add3037b16d013e0c41866be551932a8ec29fd","url":"https://github.com/MaykEu/DeepVault/commit/31add3037b16d013e0c41866be551932a8ec29fd","weight":0.33349968808484093}],"data":{"flagged_loc_by_commit":{"27fb7c7665f74d459432b0196ac1d59b94ee24ad":702,"3dc7c522e36ee5c58182b9e83e4548e239dee96c":1,"5681e43f8a6489499ad7d18ff65fba917b7306d8":137,"08163b1968fc4718aae694f53fc036a12ba9f2a1":4,"d7e8feffd06630c2670e257a7da3e8f24ed2abb5":10,"9bd61448286131443a11c1f076002acb67a9f29e":5,"7ed37852c5eb22736c0dc477b433b48e4c6dbc49":2,"6e7b099d3cd2b820f6bed23cb7a8ca4bff7eb4f7":35,"dc47fc37dd17212dac1d01cb55ce0460459e8379":3,"29e02b87e62104672090ee5e664d93ed788c5daf":1045,"a0e04c5c8d0be2d7c7148fe980c9693a7259a385":53,"43173b323f2a13484d1e30090eda7dcadc582db7":1270,"df56bc56e5e3b113734d3b86c2e6a5e285a20e88":15,"9e0d7e462f239c0109d3dfc82b58939c565005b8":97,"bc28d37b8a8807580e706ef1a5ee69c656512c04":15,"c687c619b9163acfb50ab203c98c2c04da563b5e":5,"d915ce467bfdc188406da63ac2faebdc7291c034":14,"a8d66d602ee9a6129e2d11bcea884d5255d86603":981,"42c640b67d32eab19635e5a8323637ac3ef10bea":42,"eeae06bdc2de99dba886fd1f547846549b20aa7b":63,"f4624f1abeaeabf39da02539ff2156fdcc967c94":2,"ce99e85a4c4aaec6d12d2673637551ab055d420e":2,"45b57d3a1264700050d7e75b4b8a15bd4739ddde":1,"cdf974798aa7c7ccfc51273787ec67b5c04e9cac":1,"8903d02554787bf68fde61e3c757ece99de10aec":325,"8ef4a191e30c7e99a879063fdf84d8cbe6765857":4,"7ee1afd1e516b4d27ebb0696cb21543b49a34b9f":195,"f9463f9d87cf7b167b160aefa17a9d3f7c474f66":7,"47d0790769fe7b7df70eefff0fb33036d77b5556":111,"15067a05745105c4996f0da52b89c4587b6a7cae":2,"75a6ac92cc55f55cf448281c0704348d53f6dcf7":6,"4ac83a8c26b9d8b68e3c56d843e18769f78e326c":19,"9cf46fb81b27dcde8fa0cf42a1a3029a7ab4bca1":611,"feda29017e8e34a8b5a43215effee9d181e62e10":28,"85d80ebe94fd62078db500473e2a2f54771a1d99":2,"664ce45779ccc4d81f8b7e1b7fa28a228e1ba8af":1,"5eb4f229f970e7c706316945a761588246e6fd62":16,"32cb11163d892152846f4a5394bcb6c5a28e9f7b":553,"268a799816787d215ae91a56d4eae8d3dd9083cc":41,"005980e441f44c0bc926f21cbf8e956cc1293bed":7,"7dbf9af908cf55a2fa0a3bc0b91436be0527b153":1,"31add3037b16d013e0c41866be551932a8ec29fd":1,"0fc973c08b38094848f48b4bebdd46fe48e03c64":78,"5a7239b0bfe84ffd6755ea956c6bd8ff6c0a5ec7":7951,"9bd38c42d605f7cc645b86afbca604af3beca0dc":19,"07d9706b6fc7732de87373f24caa4bf185f49a97":4,"498d47cae4ce0f3c0e714698d84fe1cfd134f9b6":13,"767b48453275e9e78a67442e684990aa1a80c9bd":3407,"4f3b7878eae2b1ac3964120549bd00111fc99bf2":58,"221b731fdf1e2f5c6de3ea03db521815413848c3":50,"9f4c80bfa004a5a5431d273a0f96e7a5dd3edb36":78,"9c77c569f979ec7cf554810ab66333d2c0cdfb6c":190,"691807ecc6b869531a46bc9d7e3e2b1a3b3e904b":42,"184b21232b7d1889ed028d076579efdb452ab9dd":734,"8a9082ca475e48288fc99a83a833cf5988d53d99":25,"29ddd54737e6332aaa64351eb3f0289ad8761427":7054,"fa86f1baf78c3b3c8c133951a522dfb7c0a92bb9":5312,"0a0d1cc918842ae0991604cc1ffc46bd582ed604":27,"d58277dc7668550a40c3b9132c0581d579cf8d8e":1150,"50e7b770676d4a95a17efc322709b4673efe7e87":259,"9952e07b99d65447a206238e2f1ec93209dbc06e":85,"a9c08f904598cd5ea7037aab8341f3e5c242a6c8":14,"8d4d8b6a775464ea42d5664b096d1b52be8a648b":8,"a0c059610c57bed44d4e10deb4b9dc95ed109cf4":424},"excluded_import_commits":["274dae21529640cf263482f97703dbf05c278e1f"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":4875.0,"index":3.487,"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":34.0,"per_kloc:emoji_in_code":6.974,"files:emoji_in_code":6.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":3.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"js/learn.js","line":1,"fingerprint":"js/learn.js:generic-api-key:1"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree","path":"js/learn-legacy.js","line":1,"fingerprint":"js/learn-legacy.js:generic-api-key:1"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit d7276f1deb); removed from the current tree but still retrievable","path":"js/learn.js.bak","line":1,"fingerprint":"d7276f1debdc47eaa8b5643eecf96e8be5d97e0f:js/learn.js.bak:generic-api-key:1"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":78.0,"findings_high":61.0,"findings_medium":17.0,"findings_low":0.0,"weighted_findings":50.0,"scanned_lines":25282.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"convert.py","line":288,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:convert.py:288"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/dashboard.js","line":93,"fingerprint":"javascript.browser.security.insecure-document-method:js/dashboard.js:93"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/dashboard.js","line":93,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/dashboard.js:93"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-3d.js","line":334,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-3d.js:334"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `listDiv.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-3d.js","line":334,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-3d.js:334"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":134,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-dashboard.js:134"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":134,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-dashboard.js:134"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":204,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-dashboard.js:204"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":204,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-dashboard.js:204"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":250,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-dashboard.js:250"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `graphDiv.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":250,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-dashboard.js:250"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":309,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-dashboard.js:309"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `hintsDiv.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":309,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-dashboard.js:309"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":332,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-dashboard.js:332"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `feedbackDiv.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":332,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-dashboard.js:332"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":413,"fingerprint":"javascript.browser.security.insecure-document-method:js/exercises-dashboard.js:413"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/exercises-dashboard.js","line":413,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/exercises-dashboard.js:413"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/history.js","line":57,"fingerprint":"javascript.browser.security.insecure-document-method:js/history.js:57"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/history.js","line":57,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/history.js:57"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":1,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn-legacy.js:1"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":1,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn-legacy.js:1"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn-legacy.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn-legacy.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":1,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn.js:1"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":1,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn.js:1"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `c.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/learn.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/learn.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":19,"fingerprint":"javascript.browser.security.insecure-document-method:js/quiz-engine.js:19"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":19,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/quiz-engine.js:19"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":26,"fingerprint":"javascript.browser.security.insecure-document-method:js/quiz-engine.js:26"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":26,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/quiz-engine.js:26"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":192,"fingerprint":"javascript.browser.security.insecure-document-method:js/quiz-engine.js:192"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":192,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/quiz-engine.js:192"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":318,"fingerprint":"javascript.browser.security.insecure-document-method:js/quiz-engine.js:318"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/quiz-engine.js","line":318,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/quiz-engine.js:318"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/search.js","line":69,"fingerprint":"javascript.browser.security.insecure-document-method:js/search.js:69"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/search.js","line":69,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/search.js:69"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/summary.js","line":28,"fingerprint":"javascript.browser.security.insecure-document-method:js/summary.js:28"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/summary.js","line":28,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/summary.js:28"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/theme.js","line":15,"fingerprint":"javascript.browser.security.insecure-document-method:js/theme.js:15"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `btn.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/theme.js","line":15,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/theme.js:15"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/theme.js","line":34,"fingerprint":"javascript.browser.security.insecure-document-method:js/theme.js:34"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `dd.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/theme.js","line":34,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/theme.js:34"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/topic-hub.js","line":258,"fingerprint":"javascript.browser.security.insecure-document-method:js/topic-hub.js:258"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `container.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"js/topic-hub.js","line":258,"fingerprint":"javascript.browser.security.insecure-innerhtml:js/topic-hub.js:258"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `params` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"js/exercises-dashboard.js","line":456,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:js/exercises-dashboard.js:456"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `params` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"js/exercises-dashboard.js","line":513,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:js/exercises-dashboard.js:513"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `params` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"js/exercises-dashboard.js","line":549,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:js/exercises-dashboard.js:549"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `params` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"js/exercises-dashboard.js","line":583,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:js/exercises-dashboard.js:583"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `params` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"js/exercises-dashboard.js","line":618,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:js/exercises-dashboard.js:618"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `params` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controll [confidence low]","path":"js/exercises-dashboard.js","line":669,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:js/exercises-dashboard.js:669"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":19,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:19"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":30,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:30"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":115,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:115"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":152,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:152"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":178,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:178"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":179,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:179"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":185,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:185"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"js/quiz-engine.js","line":318,"fingerprint":"javascript.lang.security.html-in-template-string:js/quiz-engine.js:318"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"test.js","line":17,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:test.js:17"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"test.js","line":17,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:test.js:17"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `f` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"test.js","line":26,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:test.js:26"}],"evidence":[],"data":{"rulesets":["javascript","python"]},"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":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":318.0,"function_nloc":3554.0,"mean_ccn":4.89,"p90_ccn":10.0,"complex_functions":25.0,"long_functions":4.0,"many_param_functions":1.0,"risky_nloc_share":0.4035},"findings":[],"evidence":[{"kind":"complex-function","description":"render in js/topic-hub.js: complexity 77, 216 lines","ref":"js/topic-hub.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/topic-hub.js#L5","weight":1.0},{"kind":"complex-function","description":"main in convert.py: complexity 71, 187 lines","ref":"convert.py","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/convert.py#L41","weight":1.0},{"kind":"complex-function","description":"hicpp in js/learn-legacy.js: complexity 52, 1 lines","ref":"js/learn-legacy.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/learn-legacy.js#L18","weight":0.8666666666666667},{"kind":"complex-function","description":"tokenize in js/code-highlight.js: complexity 43, 87 lines","ref":"js/code-highlight.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/code-highlight.js#L60","weight":0.7166666666666667},{"kind":"complex-function","description":"showQuestion in js/quiz-engine.js: complexity 39, 86 lines","ref":"js/quiz-engine.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/quiz-engine.js#L102","weight":0.65},{"kind":"complex-function","description":"_renderQuestion in js/exercises-dashboard.js: complexity 36, 105 lines","ref":"js/exercises-dashboard.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/exercises-dashboard.js#L147","weight":0.6},{"kind":"complex-function","description":"noteCard in js/topic-hub.js: complexity 30, 54 lines","ref":"js/topic-hub.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/topic-hub.js#L261","weight":0.5},{"kind":"complex-function","description":"route in js/router.js: complexity 28, 32 lines","ref":"js/router.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/router.js#L8","weight":0.4666666666666667},{"kind":"complex-function","description":"render in js/dashboard.js: complexity 23, 82 lines","ref":"js/dashboard.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/dashboard.js#L2","weight":0.38333333333333336},{"kind":"complex-function","description":"window.render3DGraph in js/exercises-3d.js: complexity 23, 115 lines","ref":"js/exercises-3d.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/exercises-3d.js#L86","weight":0.38333333333333336}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":19165.0,"duplicated_lines":10237.0,"duplicated_share":0.5342,"files":27.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: data/exercises-data.js:15 and data/exercises-data.js:60","ref":"data/exercises-data.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/data/exercises-data.js#L15","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: js/exercises-dashboard.js:224 and js/exercises-dashboard.js:671","ref":"js/exercises-dashboard.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/exercises-dashboard.js#L224","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: js/learn-legacy.js:1 and js/learn.js:1","ref":"js/learn-legacy.js","url":"https://github.com/MaykEu/DeepVault/blob/6c492d0b644b1f6524f12c3ccf7fba57f070dcc6/js/learn-legacy.js#L1","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":5.0,"weighted_findings":5.0,"scanned_lines":25282.0,"category:best-practice":4.0,"category:correctness":1.0},"findings":[{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"js/exercises-dashboard.js","line":141,"fingerprint":"javascript.lang.best-practice.javascript-alert:js/exercises-dashboard.js:141"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"js/storage.js","line":134,"fingerprint":"javascript.lang.best-practice.javascript-alert:js/storage.js:134"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"js/storage.js","line":151,"fingerprint":"javascript.lang.best-practice.javascript-alert:js/storage.js:151"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"js/storage.js","line":154,"fingerprint":"javascript.lang.best-practice.javascript-alert:js/storage.js:154"},{"rule_id":"opengrep/javascript.lang.correctness.no-stringify-keys","severity":"medium","message":"JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead.","path":"js/storage.js","line":200,"fingerprint":"javascript.lang.correctness.no-stringify-keys:js/storage.js:200"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.0242,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0319,"test_lines":306.0,"source_lines":25282.0,"test_ratio":0.0121,"ci_files":0.0,"cochange_share":0.008,"cochange_commits":251.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":1.0,"check:changelog":0.0,"readme_lines":105.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE.md","ref":"LICENSE.md","url":null,"weight":0.0},{"kind":"docs","description":"CONTRIBUTING.md","ref":"CONTRIBUTING.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}