{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:59:05.525670Z","repo":{"ref":{"host":"github.com","owner":"SweetJonnySauce","name":"EDMC-Mining-Analytics"},"default_branch":"main","clone_url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics.git","html_url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics","description":"EDMC plug in for laser mining tracking analytics. It's all about the Tons per Hour baby!","stars":27,"forks":2,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":1769,"primary_language":"Python","license_spdx":"GPL-3.0","created_at":"2025-09-26T22:44:22Z","pushed_at":"2026-11-07T16:07:23Z","security_policy_url":null,"distribution":{"owner_created_at":"2023-01-09T22:36:50Z","owner_type":"User","release_assets":[{"name":"EDMC-Mining-Analytics-1.4.0-beta-02.zip","size":303911,"download_count":3,"release_tag":"1.4.0-beta-02","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.4.0-beta-02/EDMC-Mining-Analytics-1.4.0-beta-02.zip"},{"name":"EDMC-Mining-Analytics-1.4.0-beta-01.zip","size":302492,"download_count":53,"release_tag":"1.4.0-beta-01","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.4.0-beta-01/EDMC-Mining-Analytics-1.4.0-beta-01.zip"},{"name":"EDMC-Mining-Analytics-1.3.0-beta-1.zip","size":300413,"download_count":27,"release_tag":"1.3.0-beta-1","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.3.0-beta-1/EDMC-Mining-Analytics-1.3.0-beta-1.zip"},{"name":"EDMC-Mining-Analytics-1.2.0.zip","size":293557,"download_count":1159,"release_tag":"1.2.0","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.2.0/EDMC-Mining-Analytics-1.2.0.zip"},{"name":"EDMC-Mining-Analytics-1.1.1.zip","size":262927,"download_count":419,"release_tag":"1.1.1","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.1/EDMC-Mining-Analytics-1.1.1.zip"},{"name":"EDMC-Mining-Analytics-1.1.0.zip","size":262927,"download_count":23,"release_tag":"1.1.0","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.0/EDMC-Mining-Analytics-1.1.0.zip"},{"name":"EDMC-Mining-Analytics-1.1.0-beta-1.zip","size":262927,"download_count":7,"release_tag":"1.1.0-beta-1","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.0-beta-1/EDMC-Mining-Analytics-1.1.0-beta-1.zip"},{"name":"EDMC-Mining-Analytics-1.1.0-alpha-3.zip","size":256335,"download_count":6,"release_tag":"1.1.0-alpha-3","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.0-alpha-3/EDMC-Mining-Analytics-1.1.0-alpha-3.zip"},{"name":"EDMC-Mining-Analytics-1.1.0-alpha-2.zip","size":234828,"download_count":3,"release_tag":"1.1.0-alpha-2","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.0-alpha-2/EDMC-Mining-Analytics-1.1.0-alpha-2.zip"},{"name":"EDMC-Mining-Analytics-1.1.0-alpha-1.zip","size":597190,"download_count":4,"release_tag":"1.1.0-alpha-1","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.0-alpha-1/EDMC-Mining-Analytics-1.1.0-alpha-1.zip"}]}},"commit_sha":"e098bfc0062440df5cc9427f61ffbd7588df7218","profile":{"lines_by_language":{"Python":34059,"JavaScript":12853,"Shell":290},"files_by_category":{"source":101,"test":62,"config":21,"docs":20,"other":8,"binary":1},"source_lines":30205,"test_lines":16997},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.65,"coverage":1.0,"label":"possible","breakdown":{"attributed_share":0.0,"suspected_share":0.3877,"estimated_share":0.0,"ai_artifacts":1.0,"flagged_work_units":5.0,"flagged_releases":1.0},"summary":"Weak signals consistent with AI-assisted development."},"quality":{"score":54.6,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":41.7,"duplication":65.0,"lint":51.6,"testing":67.1,"docs":65.0,"type_safety":0.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.56, no CI test run detected; 29% of function code in complex or long functions; 7% duplicated lines. Weakest area: type safety."},"security":{"score":78.7,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":96.0,"dependencies":100.0,"ci_actions":44.0,"posture":0.0,"scorecard":null},"summary":"Security posture is adequate: 4 high-severity SAST findings; 4 high-severity workflow issues. 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":"ok","tool_version":null,"metrics":{"declared":4.0,"checked":4.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":361.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":65611.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2025-09":{"loc":2517,"attributed_loc":0},"2025-10":{"loc":26067,"attributed_loc":0},"2025-11":{"loc":166,"attributed_loc":0},"2025-12":{"loc":271,"attributed_loc":0},"2026-01":{"loc":2370,"attributed_loc":0},"2026-02":{"loc":0,"attributed_loc":0},"2026-03":{"loc":13598,"attributed_loc":0},"2026-04":{"loc":18552,"attributed_loc":0},"2026-05":{"loc":605,"attributed_loc":0},"2026-06":{"loc":1465,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1774501443.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/AGENTS.md","weight":0.5}],"data":{"artifacts":[{"tool":"generic-agent","path":"AGENTS.md","added_at":1774501443}],"workflows":[],"tools":["generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":107.0,"flagged_units":5.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":57808.0,"flagged_loc":25435.0,"flagged_loc_share":0.4399910047052311,"max_loc_per_hour":10436.549520766774,"median_loc_per_hour":126.28458498023717,"pr_timed_units":0.0,"excluded_import_loc":7803.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"9,074 lines of first-party code in ~0.9h (10,437 lines/hour, 1 commit session)","ref":"ab7ff50cf526fc5dd682f020b8f25ec5aa51c419","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/commit/ab7ff50cf526fc5dd682f020b8f25ec5aa51c419","weight":0.6},{"kind":"velocity-burst","description":"8,509 lines of first-party code in ~4.0h (2,127 lines/hour, 1 commit session)","ref":"9b0817f11f45b00bccd158d6a39545f95153408a","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/commit/9b0817f11f45b00bccd158d6a39545f95153408a","weight":0.6},{"kind":"velocity-burst","description":"1,795 lines of first-party code in ~1.6h (1,155 lines/hour, 2 commit session)","ref":"387d1b9aa505d97ede4d939a76b059558760e06d","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/commit/387d1b9aa505d97ede4d939a76b059558760e06d","weight":0.3466118362238513},{"kind":"velocity-burst","description":"1,982 lines of first-party code in ~2.0h (969 lines/hour, 1 commit session)","ref":"f945cd664bd34c58851fa3991e333df675cb0837","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/commit/f945cd664bd34c58851fa3991e333df675cb0837","weight":0.29075794621026896},{"kind":"velocity-burst","description":"4,075 lines of first-party code in ~5.1h (794 lines/hour, 4 commit session)","ref":"62a0ce7120293cbb24e0d497954b4f331330d262","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/commit/62a0ce7120293cbb24e0d497954b4f331330d262","weight":0.2381364644770304}],"data":{"flagged_loc_by_commit":{"f945cd664bd34c58851fa3991e333df675cb0837":1982,"e0b1a9cbea08cab8e71a73a1ac2260c794147f09":370,"387d1b9aa505d97ede4d939a76b059558760e06d":1425,"ab7ff50cf526fc5dd682f020b8f25ec5aa51c419":9074,"9b0817f11f45b00bccd158d6a39545f95153408a":8509,"4790e6ba11ab6af5b626619fc7e3b4ef5e29d90d":1124,"194068939a5a5efb6cc81a65ae836b09c0fbcdc2":2880,"11558751cfe922214c4dab84209d2a41b701742d":67,"62a0ce7120293cbb24e0d497954b4f331330d262":4},"excluded_import_commits":["144ad0552d5ea0e7af81be1d3afcacb39414c5da"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":39.0,"flagged_releases":1.0,"max_loc_per_day":13813.9},"findings":[],"evidence":[{"kind":"release-burst","description":"1.1.0-alpha-2 → 1.1.0-alpha-3: 8,509 lines in 0.96 days (8,858.6 lines/day)","ref":"1.1.0-alpha-2...1.1.0-alpha-3","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/compare/1.1.0-alpha-2...1.1.0-alpha-3","weight":0.4}],"data":{"releases":[{"from":"0.1.0","to":"0.1.1","loc":217,"days":0.2,"loc_per_day":1067.8,"flagged":false},{"from":"0.1.1","to":"0.1.2","loc":527,"days":1.94,"loc_per_day":272.1,"flagged":false},{"from":"0.1.2","to":"0.1.5","loc":2660,"days":0.22,"loc_per_day":12254.0,"flagged":false},{"from":"0.1.5","to":"0.1.6","loc":2872,"days":1.72,"loc_per_day":1669.8,"flagged":false},{"from":"0.1.6","to":"0.2.0","loc":729,"days":0.74,"loc_per_day":986.3,"flagged":false},{"from":"0.2.0","to":"0.2.1","loc":6,"days":0.24,"loc_per_day":24.6,"flagged":false},{"from":"0.2.1","to":"0.2.2","loc":343,"days":0.76,"loc_per_day":449.8,"flagged":false},{"from":"0.2.2","to":"0.2.3","loc":931,"days":0.07,"loc_per_day":13813.9,"flagged":false},{"from":"0.2.3","to":"0.2.4","loc":182,"days":0.3,"loc_per_day":616.8,"flagged":false},{"from":"0.2.4","to":"0.2.5","loc":4,"days":0.05,"loc_per_day":78.7,"flagged":false},{"from":"0.2.5","to":"0.2.6","loc":646,"days":0.7,"loc_per_day":919.1,"flagged":false},{"from":"0.2.6","to":"0.2.7","loc":90,"days":0.04,"loc_per_day":2160.0,"flagged":false},{"from":"0.2.7","to":"0.2.8","loc":49,"days":0.04,"loc_per_day":1176.0,"flagged":false},{"from":"0.2.8","to":"0.3.0","loc":703,"days":3.21,"loc_per_day":219.2,"flagged":false},{"from":"0.3.0","to":"0.3.1","loc":4,"days":0.04,"loc_per_day":96.0,"flagged":false},{"from":"0.3.1","to":"0.3.2","loc":153,"days":1.89,"loc_per_day":81.1,"flagged":false},{"from":"0.3.2","to":"0.3.3","loc":58,"days":0.12,"loc_per_day":494.2,"flagged":false},{"from":"0.3.3","to":"0.3.4","loc":61,"days":1.69,"loc_per_day":36.0,"flagged":false},{"from":"0.3.4","to":"0.4.0","loc":2145,"days":0.43,"loc_per_day":4949.1,"flagged":false},{"from":"0.4.0","to":"0.4.5","loc":3220,"days":1.01,"loc_per_day":3203.6,"flagged":false},{"from":"0.4.5","to":"0.4.6","loc":319,"days":0.08,"loc_per_day":4200.8,"flagged":false},{"from":"0.4.6","to":"0.4.7","loc":595,"days":0.78,"loc_per_day":763.0,"flagged":false},{"from":"0.4.7","to":"0.4.8","loc":232,"days":1.02,"loc_per_day":228.2,"flagged":false},{"from":"0.4.8","to":"0.5.0","loc":2225,"days":2.2,"loc_per_day":1012.1,"flagged":false},{"from":"0.5.0","to":"0.5.1","loc":37,"days":0.36,"loc_per_day":103.0,"flagged":false},{"from":"0.5.1","to":"0.5.2","loc":381,"days":73.27,"loc_per_day":5.2,"flagged":false},{"from":"0.5.2","to":"0.5.3","loc":65,"days":10.91,"loc_per_day":6.0,"flagged":false},{"from":"0.5.3","to":"0.5.4","loc":97,"days":8.02,"loc_per_day":12.1,"flagged":false},{"from":"0.5.4","to":"0.5.5-b1","loc":1461,"days":6.88,"loc_per_day":212.4,"flagged":false},{"from":"0.5.5-b1","to":"0.6.0","loc":803,"days":4.35,"loc_per_day":184.5,"flagged":false},{"from":"0.6.0","to":"1.0.0","loc":12816,"days":57.78,"loc_per_day":221.8,"flagged":false},{"from":"1.0.0","to":"1.1.0-alpha-1","loc":782,"days":3.13,"loc_per_day":249.6,"flagged":false},{"from":"1.1.0-alpha-1","to":"1.1.0-alpha-2","loc":702,"days":0.26,"loc_per_day":2752.2,"flagged":false},{"from":"1.1.0-alpha-2","to":"1.1.0-alpha-3","loc":8509,"days":0.96,"loc_per_day":8858.6,"flagged":true},{"from":"1.1.0-alpha-3","to":"1.1.0","loc":4075,"days":0.74,"loc_per_day":5481.2,"flagged":false},{"from":"1.1.0","to":"1.1.0-beta-1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"1.1.0-beta-1","to":"1.1.1","loc":1,"days":2.77,"loc_per_day":0.4,"flagged":false},{"from":"1.1.1","to":"1.2.0","loc":5870,"days":27.19,"loc_per_day":215.9,"flagged":false},{"from":"1.2.0","to":"1.3.0-beta-1","loc":1465,"days":36.75,"loc_per_day":39.9,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":30205.0,"index":0.083,"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":5.0,"per_kloc:emoji_in_code":0.166,"files:emoji_in_code":4.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":6.0,"findings_high":4.0,"findings_medium":2.0,"findings_low":0.0,"weighted_findings":3.5,"scanned_lines":30205.0,"parse_errors":0.0},"findings":[{"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":"web/js/index/charts/cumulative_commodities.js","line":504,"fingerprint":"javascript.browser.security.insecure-document-method:web/js/index/charts/cumulative_commodities.js:504"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `axis.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/js/index/charts/cumulative_commodities.js","line":504,"fingerprint":"javascript.browser.security.insecure-innerhtml:web/js/index/charts/cumulative_commodities.js:504"},{"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":"web/js/index/charts/timeline.js","line":180,"fingerprint":"javascript.browser.security.insecure-document-method:web/js/index/charts/timeline.js:180"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `axis.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"web/js/index/charts/timeline.js","line":180,"fingerprint":"javascript.browser.security.insecure-innerhtml:web/js/index/charts/timeline.js:180"},{"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":"web/js/index/charts/cumulative_commodities.js","line":504,"fingerprint":"javascript.lang.security.html-in-template-string:web/js/index/charts/cumulative_commodities.js:504"},{"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":"web/js/index/charts/timeline.js","line":180,"fingerprint":"javascript.lang.security.html-in-template-string:web/js/index/charts/timeline.js:180"}],"evidence":[],"data":{"rulesets":["python","javascript","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":0.0,"vulnerabilities":0.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":0.0,"vulns_low":0.0,"vulns_unknown":0.0,"penalty":0.0},"findings":[],"evidence":[],"data":{"ecosystems":["PyPI"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":1.0,"findings":7.0,"findings_high":4.0,"findings_medium":1.0,"findings_low":2.0,"penalty":49.2},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":17,"fingerprint":"unpinned-uses:.github/workflows/release.yml:17"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":20,"fingerprint":"unpinned-uses:.github/workflows/release.yml:20"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":46,"fingerprint":"unpinned-uses:.github/workflows/release.yml:46"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":54,"fingerprint":"unpinned-uses:.github/workflows/release.yml:54"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":16,"fingerprint":"artipacked:.github/workflows/release.yml:16"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/release.yml","line":41,"fingerprint":"template-injection:.github/workflows/release.yml:41"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/release.yml","line":46,"fingerprint":"superfluous-actions:.github/workflows/release.yml:46"}],"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.135,"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":10.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release 1.4.0-beta-02 ships EDMC-Mining-Analytics-1.4.0-beta-02.zip (3 downloads)","ref":"EDMC-Mining-Analytics-1.4.0-beta-02.zip","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.4.0-beta-02/EDMC-Mining-Analytics-1.4.0-beta-02.zip","weight":0.0},{"kind":"binary-release-asset","description":"release 1.4.0-beta-01 ships EDMC-Mining-Analytics-1.4.0-beta-01.zip (53 downloads)","ref":"EDMC-Mining-Analytics-1.4.0-beta-01.zip","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.4.0-beta-01/EDMC-Mining-Analytics-1.4.0-beta-01.zip","weight":0.0},{"kind":"binary-release-asset","description":"release 1.3.0-beta-1 ships EDMC-Mining-Analytics-1.3.0-beta-1.zip (27 downloads)","ref":"EDMC-Mining-Analytics-1.3.0-beta-1.zip","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.3.0-beta-1/EDMC-Mining-Analytics-1.3.0-beta-1.zip","weight":0.0},{"kind":"binary-release-asset","description":"release 1.2.0 ships EDMC-Mining-Analytics-1.2.0.zip (1159 downloads)","ref":"EDMC-Mining-Analytics-1.2.0.zip","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.2.0/EDMC-Mining-Analytics-1.2.0.zip","weight":0.0},{"kind":"binary-release-asset","description":"release 1.1.1 ships EDMC-Mining-Analytics-1.1.1.zip (419 downloads)","ref":"EDMC-Mining-Analytics-1.1.1.zip","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/releases/download/1.1.1/EDMC-Mining-Analytics-1.1.1.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":1750.0,"function_nloc":25972.0,"mean_ccn":4.37,"p90_ccn":9.0,"complex_functions":71.0,"long_functions":29.0,"many_param_functions":11.0,"risky_nloc_share":0.2912},"findings":[],"evidence":[{"kind":"complex-function","description":"build_summary_message in edmc_mining_analytics/integrations/discord_summary.py: complexity 62, 148 lines","ref":"edmc_mining_analytics/integrations/discord_summary.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/integrations/discord_summary.py#L41","weight":1.0},{"kind":"complex-function","description":"_process_cargo in edmc_mining_analytics/journal.py: complexity 58, 159 lines","ref":"edmc_mining_analytics/journal.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/journal.py#L739","weight":0.9666666666666667},{"kind":"complex-function","description":"_render_results in edmc_mining_analytics/mining_ui/hotspot_search_window.py: complexity 55, 142 lines","ref":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/mining_ui/hotspot_search_window.py#L2042","weight":0.9166666666666666},{"kind":"complex-function","description":"save in edmc_mining_analytics/preferences.py: complexity 54, 208 lines","ref":"edmc_mining_analytics/preferences.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/preferences.py#L248","weight":0.9},{"kind":"complex-function","description":"_update_mining_state in edmc_mining_analytics/journal.py: complexity 48, 138 lines","ref":"edmc_mining_analytics/journal.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/journal.py#L1051","weight":0.8},{"kind":"complex-function","description":"renderRingChart in web/js/compare/charts/ring_chart.js: complexity 45, 270 lines","ref":"web/js/compare/charts/ring_chart.js","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/web/js/compare/charts/ring_chart.js#L760","weight":0.75},{"kind":"complex-function","description":"buildSummary in web/js/index/main.js: complexity 44, 89 lines","ref":"web/js/index/main.js","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/web/js/index/main.js#L2676","weight":0.7333333333333333},{"kind":"complex-function","description":"handle_entry in edmc_mining_analytics/journal.py: complexity 43, 144 lines","ref":"edmc_mining_analytics/journal.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/journal.py#L89","weight":0.7166666666666667},{"kind":"complex-function","description":"search_hotspots in edmc_mining_analytics/integrations/spansh_hotspots.py: complexity 40, 147 lines","ref":"edmc_mining_analytics/integrations/spansh_hotspots.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/integrations/spansh_hotspots.py#L277","weight":0.6666666666666666},{"kind":"complex-function","description":"_apply_metadata_update in edmc_mining_analytics/mining_ui/hotspot_search_window.py: complexity 35, 93 lines","ref":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/mining_ui/hotspot_search_window.py#L981","weight":0.5833333333333334}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":24013.0,"duplicated_lines":1721.0,"duplicated_share":0.0717,"files":101.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/__init__.py:11 and edmc_mining_analytics/capabilities/service.py:15","ref":"edmc_mining_analytics/capabilities/__init__.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/__init__.py#L11","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/providers/base.py:25 and edmc_mining_analytics/capabilities/providers/browser_generic.py:39","ref":"edmc_mining_analytics/capabilities/providers/base.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/providers/base.py#L25","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/providers/browser_common.py:204 and edmc_mining_analytics/capabilities/providers/browser_common.py:231","ref":"edmc_mining_analytics/capabilities/providers/browser_common.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/providers/browser_common.py#L204","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/providers/browser_generic.py:47 and edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py:52","ref":"edmc_mining_analytics/capabilities/providers/browser_generic.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/providers/browser_generic.py#L47","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/providers/browser_generic.py:56 and edmc_mining_analytics/capabilities/providers/browser_linux_x11.py:91","ref":"edmc_mining_analytics/capabilities/providers/browser_generic.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/providers/browser_generic.py#L56","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py:45 and edmc_mining_analytics/capabilities/providers/browser_windows.py:50","ref":"edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py#L45","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py:71 and edmc_mining_analytics/capabilities/providers/browser_linux_x11.py:117","ref":"edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py#L71","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/integrations/discord_summary.py:237 and edmc_mining_analytics/session_recorder.py:306","ref":"edmc_mining_analytics/integrations/discord_summary.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/integrations/discord_summary.py#L237","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/integrations/edmcoverlay.py:411 and edmc_mining_analytics/journal.py:1448","ref":"edmc_mining_analytics/integrations/edmcoverlay.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/integrations/edmcoverlay.py#L411","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: edmc_mining_analytics/integrations/edmcoverlay.py:560 and edmc_mining_analytics/integrations/edmcoverlay.py:604","ref":"edmc_mining_analytics/integrations/edmcoverlay.py","url":"https://github.com/SweetJonnySauce/EDMC-Mining-Analytics/blob/e098bfc0062440df5cc9427f61ffbd7588df7218/edmc_mining_analytics/integrations/edmcoverlay.py#L560","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":74.0,"weighted_findings":80.0,"scanned_lines":30205.0,"category:best-practice":3.0,"category:maintainability":71.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"edmc_mining_analytics/capabilities/providers/browser_common.py","line":180,"fingerprint":"python.lang.best-practice.arbitrary-sleep:edmc_mining_analytics/capabilities/providers/browser_common.py:180"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"edmc_mining_analytics/capabilities/providers/browser_common.py","line":190,"fingerprint":"python.lang.best-practice.arbitrary-sleep:edmc_mining_analytics/capabilities/providers/browser_common.py:190"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"edmc_mining_analytics/integrations/spansh_hotspots.py","line":342,"fingerprint":"python.lang.best-practice.arbitrary-sleep:edmc_mining_analytics/integrations/spansh_hotspots.py:342"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_linux\" a function or an attribute? If it is a function, you may have meant env.is_linux() because env.is_linux is always true.","path":"edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py","line":29,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py:29"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_linux\" a function or an attribute? If it is a function, you may have meant env.is_linux() because env.is_linux is always true.","path":"edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py","line":34,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/capabilities/providers/browser_linux_wayland.py:34"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_linux\" a function or an attribute? If it is a function, you may have meant env.is_linux() because env.is_linux is always true.","path":"edmc_mining_analytics/capabilities/providers/browser_linux_x11.py","line":31,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/capabilities/providers/browser_linux_x11.py:31"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_linux\" a function or an attribute? If it is a function, you may have meant env.is_linux() because env.is_linux is always true.","path":"edmc_mining_analytics/capabilities/providers/browser_linux_x11.py","line":36,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/capabilities/providers/browser_linux_x11.py:36"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_windows\" a function or an attribute? If it is a function, you may have meant env.is_windows() because env.is_windows is always true.","path":"edmc_mining_analytics/capabilities/providers/browser_windows.py","line":32,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/capabilities/providers/browser_windows.py:32"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_windows\" a function or an attribute? If it is a function, you may have meant env.is_windows() because env.is_windows is always true.","path":"edmc_mining_analytics/capabilities/providers/browser_windows.py","line":37,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/capabilities/providers/browser_windows.py:37"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_newer_version\" a function or an attribute? If it is a function, you may have meant _version.is_newer_version() because _version.is_newer_version is always true.","path":"edmc_mining_analytics/edmc_mining_analytics_version.py","line":40,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/edmc_mining_analytics_version.py:40"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/edmcoverlay.py","line":170,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/edmcoverlay.py:170"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/edmcoverlay.py","line":173,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/edmcoverlay.py:173"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/edmcoverlay.py","line":192,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/edmcoverlay.py:192"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/edmcoverlay.py","line":245,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/edmcoverlay.py:245"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/edmcoverlay.py","line":248,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/edmcoverlay.py:248"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/edmcoverlay.py","line":263,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/edmcoverlay.py:263"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/integrations/market_search.py","line":41,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/market_search.py:41"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/integrations/market_search.py","line":109,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/integrations/market_search.py:109"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":129,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:129"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":132,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:132"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":162,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:162"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":172,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:172"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":217,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:217"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":256,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:256"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":265,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:265"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":1059,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:1059"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":1097,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:1097"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/journal.py","line":1189,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/journal.py:1189"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_dark_theme\" a function or an attribute? If it is a function, you may have meant theme.is_dark_theme() because theme.is_dark_theme is always true.","path":"edmc_mining_analytics/mining_ui/components/top_bar.py","line":142,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/components/top_bar.py:142"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_dark_theme\" a function or an attribute? If it is a function, you may have meant ui._theme.is_dark_theme() because ui._theme.is_dark_theme is always true.","path":"edmc_mining_analytics/mining_ui/histograms.py","line":97,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/histograms.py:97"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_dark_theme\" a function or an attribute? If it is a function, you may have meant ui._theme.is_dark_theme() because ui._theme.is_dark_theme is always true.","path":"edmc_mining_analytics/mining_ui/histograms.py","line":143,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/histograms.py:143"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":555,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:555"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":651,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:651"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":1086,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:1086"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":1550,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:1550"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":1574,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:1574"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":1889,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:1889"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":1953,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:1953"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":2006,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:2006"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":2206,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:2206"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant self.is_open() because self.is_open is always true.","path":"edmc_mining_analytics/mining_ui/hotspot_search_window.py","line":2398,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/hotspot_search_window.py:2398"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":488,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:488"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1107,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1107"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1107,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1107"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_open\" a function or an attribute? If it is a function, you may have meant window.is_open() because window.is_open is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1139,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1139"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1159,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1159"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1160,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1160"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1332,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1332"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1341,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1341"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1348,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1348"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1369,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1369"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1370,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1370"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1373,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1373"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1373,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1373"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1377,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1377"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1382,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1382"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1389,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1389"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":1454,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:1454"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2278,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2278"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2282,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2282"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2287,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2287"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self._state.is_mining() because self._state.is_mining is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2299,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2299"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2306,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2306"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2312,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2312"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self._state.is_paused() because self._state.is_paused is always true.","path":"edmc_mining_analytics/mining_ui/main_mining_ui.py","line":2317,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/main_mining_ui.py:2317"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_dark_theme\" a function or an attribute? If it is a function, you may have meant self.is_dark_theme() because self.is_dark_theme is always true.","path":"edmc_mining_analytics/mining_ui/theme_adapter.py","line":944,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/mining_ui/theme_adapter.py:944"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant state.is_mining() because state.is_mining is always true.","path":"edmc_mining_analytics/plugin.py","line":290,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/plugin.py:290"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant state.is_mining() because state.is_mining is always true.","path":"edmc_mining_analytics/plugin.py","line":292,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/plugin.py:292"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant self.state.is_mining() because self.state.is_mining is always true.","path":"edmc_mining_analytics/plugin.py","line":404,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/plugin.py:404"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant self.state.is_paused() because self.state.is_paused is always true.","path":"edmc_mining_analytics/plugin.py","line":471,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/plugin.py:471"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"edmc_mining_analytics/state.py","line":61,"fingerprint":"python.lang.maintainability.return-not-in-function:edmc_mining_analytics/state.py:61"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"edmc_mining_analytics/state.py","line":62,"fingerprint":"python.lang.maintainability.return-not-in-function:edmc_mining_analytics/state.py:62"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_mining\" a function or an attribute? If it is a function, you may have meant state.is_mining() because state.is_mining is always true.","path":"edmc_mining_analytics/state.py","line":146,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/state.py:146"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_paused\" a function or an attribute? If it is a function, you may have meant state.is_paused() because state.is_paused is always true.","path":"edmc_mining_analytics/state.py","line":182,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:edmc_mining_analytics/state.py:182"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":1.0,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.7143,"test_lines":16997.0,"source_lines":30205.0,"test_ratio":0.5627,"ci_files":1.0,"cochange_share":0.1786,"cochange_commits":196.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/release.yml","ref":".github/workflows/release.yml","url":null,"weight":0.0}],"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":75.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":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":0.0,"escapes":203.0,"escapes_per_kloc":11.188},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}