{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:32:41.454024Z","repo":{"ref":{"host":"github.com","owner":"nemoTyrant","name":"manong"},"default_branch":"master","clone_url":"https://github.com/nemoTyrant/manong.git","html_url":"https://github.com/nemoTyrant/manong","description":"码农周刊整理","stars":3859,"forks":931,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":4945,"primary_language":"PHP","license_spdx":null,"created_at":"2014-05-14T01:46:57Z","pushed_at":"2017-09-25T10:56:48Z","security_policy_url":null,"distribution":{"owner_created_at":"2014-03-12T06:29:05Z","owner_type":"User","release_assets":[]}},"commit_sha":"7c9e5228e133b9267ad3a415833bc9bb53193bb4","profile":{"lines_by_language":{"PHP":521,"SQL":52,"JavaScript":4},"files_by_category":{"docs":96,"source":5,"oversized":2,"config":1},"source_lines":577,"test_lines":0},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.65,"coverage":1.0,"label":"none-detected","breakdown":{"attributed_share":0.0,"suspected_share":0.0,"estimated_share":0.0,"ai_artifacts":0.0,"flagged_work_units":0.0,"flagged_releases":null},"summary":"No AI attribution or AI-consistent velocity signals detected."},"quality":{"score":55.8,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":90.5,"duplication":100.0,"lint":68.7,"testing":0.0,"docs":40.0,"type_safety":null,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.00, no CI test run detected; 3% of function code in complex or long functions; 0% duplicated lines. Weakest area: testing."},"security":{"score":45.8,"confidence":0.85,"coverage":1.0,"label":"poor","breakdown":{"secrets":100.0,"sast":1.0,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is poor: 9 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":133.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":8402.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2014-05":{"loc":0,"attributed_loc":0},"2014-11":{"loc":1544,"attributed_loc":0},"2014-12":{"loc":0,"attributed_loc":0},"2015-01":{"loc":3,"attributed_loc":0},"2015-02":{"loc":0,"attributed_loc":0},"2015-03":{"loc":4,"attributed_loc":0},"2015-04":{"loc":0,"attributed_loc":0},"2015-05":{"loc":0,"attributed_loc":0},"2015-06":{"loc":1,"attributed_loc":0},"2015-07":{"loc":0,"attributed_loc":0},"2015-08":{"loc":0,"attributed_loc":0},"2015-09":{"loc":0,"attributed_loc":0},"2015-10":{"loc":21,"attributed_loc":0},"2015-11":{"loc":6643,"attributed_loc":0},"2015-12":{"loc":0,"attributed_loc":0},"2016-01":{"loc":0,"attributed_loc":0},"2016-02":{"loc":0,"attributed_loc":0},"2016-03":{"loc":0,"attributed_loc":0},"2016-05":{"loc":186,"attributed_loc":0},"2016-06":{"loc":0,"attributed_loc":0},"2016-07":{"loc":0,"attributed_loc":0},"2016-08":{"loc":0,"attributed_loc":0},"2016-09":{"loc":0,"attributed_loc":0},"2016-10":{"loc":0,"attributed_loc":0},"2016-11":{"loc":0,"attributed_loc":0},"2016-12":{"loc":0,"attributed_loc":0},"2017-01":{"loc":0,"attributed_loc":0},"2017-04":{"loc":0,"attributed_loc":0},"2017-09":{"loc":0,"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":16.0,"flagged_units":0.0,"pre_ai_era_bursts":2.0,"pre_ai_era_measured_loc":8402.0,"pre_ai_era_burst_loc":6637.0,"measured_loc":8402.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":992.094196804037,"median_loc_per_hour":813.25,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":577.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":31.0,"findings_high":9.0,"findings_medium":22.0,"findings_low":0.0,"weighted_findings":13.3,"scanned_lines":525.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/php.lang.security.injection.echoed-request","severity":"high","message":"`Echo`ing user input risks cross-site scripting vulnerability. You should use `htmlentities()` when showing data to users. [confidence medium]","path":"func.php","line":102,"fingerprint":"php.lang.security.injection.echoed-request:func.php:102"},{"rule_id":"opengrep/php.lang.security.weak-crypto","severity":"high","message":"Detected usage of weak crypto function. Consider using stronger alternatives. [confidence low]","path":"func.php","line":130,"fingerprint":"php.lang.security.weak-crypto:func.php:130"},{"rule_id":"opengrep/php.lang.security.weak-crypto","severity":"high","message":"Detected usage of weak crypto function. Consider using stronger alternatives. [confidence low]","path":"func.php","line":299,"fingerprint":"php.lang.security.weak-crypto:func.php:299"},{"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":"jquery2.1.1.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `f.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:jquery2.1.1.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":"jquery2.1.1.js","line":3,"fingerprint":"javascript.browser.security.insecure-document-method:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `b.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.browser.security.insecure-innerhtml:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.express.security.audit.remote-property-injection","severity":"high","message":"Bracket object notation with user input is present, this might allow an attacker to access all properties of the object and even it's prototype. Use literal values for object properties. [confidence low]","path":"jquery2.1.1.js","line":4,"fingerprint":"javascript.express.security.audit.remote-property-injection:jquery2.1.1.js:4"},{"rule_id":"opengrep/javascript.express.security.audit.remote-property-injection","severity":"high","message":"Bracket object notation with user input is present, this might allow an attacker to access all properties of the object and even it's prototype. Use literal values for object properties. [confidence low]","path":"jquery2.1.1.js","line":4,"fingerprint":"javascript.express.security.audit.remote-property-injection:jquery2.1.1.js:4"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `a` 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-controlled in [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop","severity":"medium","message":"Possibility of prototype polluting function detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-exis [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop","severity":"medium","message":"Possibility of prototype polluting function detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-exis [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment","severity":"medium","message":"Possibility of prototype polluting assignment detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-ex [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment","severity":"medium","message":"Possibility of prototype polluting assignment detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-ex [confidence low]","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.security.audit.prototype-pollution.prototype-pollution-assignment:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `b` 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-controlled in [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `b` 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-controlled in [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":4,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:4"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"jquery2.1.1.js","line":4,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:jquery2.1.1.js:4"},{"rule_id":"opengrep/javascript.jquery.security.audit.prohibit-jquery-html","severity":"medium","message":"JQuery's `html` function is susceptible to Cross Site Scripting (XSS) attacks. If you're just passing text, consider `text` instead. Otherwise, use a function that escapes HTML such as edX's `HtmlUtils.setHtml()`. [confidence low]","path":"jquery2.1.1.js","line":4,"fingerprint":"javascript.jquery.security.audit.prohibit-jquery-html:jquery2.1.1.js:4"}],"evidence":[],"data":{"rulesets":["php","javascript"]},"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":580.0,"function_nloc":845.0,"mean_ccn":4.23,"p90_ccn":10.0,"complex_functions":27.0,"long_functions":0.0,"many_param_functions":0.0,"risky_nloc_share":0.0331},"findings":[],"evidence":[{"kind":"complex-function","description":"trigger in jquery2.1.1.js: complexity 52, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L3","weight":0.8666666666666667},{"kind":"complex-function","description":"(anonymous) in jquery2.1.1.js: complexity 45, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.75},{"kind":"complex-function","description":"fb in jquery2.1.1.js: complexity 39, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.65},{"kind":"complex-function","description":"Vb in jquery2.1.1.js: complexity 35, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L3","weight":0.5833333333333334},{"kind":"complex-function","description":"remove in jquery2.1.1.js: complexity 34, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L3","weight":0.5666666666666667},{"kind":"complex-function","description":"f in jquery2.1.1.js: complexity 32, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.5333333333333333},{"kind":"complex-function","description":"(anonymous) in jquery2.1.1.js: complexity 28, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.4666666666666667},{"kind":"complex-function","description":"n.fn.init in jquery2.1.1.js: complexity 27, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.45},{"kind":"complex-function","description":"fb.select in jquery2.1.1.js: complexity 27, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.45},{"kind":"complex-function","description":"fb.setDocument in jquery2.1.1.js: complexity 25, 1 lines","ref":"jquery2.1.1.js","url":"https://github.com/nemoTyrant/manong/blob/7c9e5228e133b9267ad3a415833bc9bb53193bb4/jquery2.1.1.js#L2","weight":0.4166666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":402.0,"duplicated_lines":0.0,"duplicated_share":0.0,"files":5.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":6.0,"weighted_findings":1.5,"scanned_lines":525.0,"category:correctness":6.0},"findings":[{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`d` is assigned twice; the first assignment is useless","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.correctness.useless-assignment:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`f` is assigned twice; the first assignment is useless","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.correctness.useless-assignment:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`b` is assigned twice; the first assignment is useless","path":"jquery2.1.1.js","line":2,"fingerprint":"javascript.lang.correctness.useless-assignment:jquery2.1.1.js:2"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`g` is assigned twice; the first assignment is useless","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.correctness.useless-assignment:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`c` is assigned twice; the first assignment is useless","path":"jquery2.1.1.js","line":3,"fingerprint":"javascript.lang.correctness.useless-assignment:jquery2.1.1.js:3"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`d` is assigned twice; the first assignment is useless","path":"jquery2.1.1.js","line":4,"fingerprint":"javascript.lang.correctness.useless-assignment:jquery2.1.1.js:4"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":577.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":26.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":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":105.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}