{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:01.190490Z","repo":{"ref":{"host":"github.com","owner":"NMAC427","name":"SwiftOCR"},"default_branch":"master","clone_url":"https://github.com/NMAC427/SwiftOCR.git","html_url":"https://github.com/NMAC427/SwiftOCR","description":"Fast and simple OCR library written in Swift","stars":4629,"forks":474,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":11613,"primary_language":"Swift","license_spdx":"Apache-2.0","created_at":"2016-04-22T08:39:02Z","pushed_at":"2020-12-13T08:49:55Z","security_policy_url":null,"distribution":{"owner_created_at":"2014-11-23T14:12:02Z","owner_type":"User","release_assets":[]}},"commit_sha":"99a1d90a5f3ddef51492bca8f6606f2a60e18ffe","profile":{"lines_by_language":{"Objective-C":39719,"C":5011,"Swift":4650,"Shell":31},"files_by_category":{"source":488,"other":186,"binary":54,"config":16,"docs":6,"oversized":5},"source_lines":49411,"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":0.0,"style_index":0.364},"summary":"No AI attribution or AI-consistent velocity signals detected."},"quality":{"score":40.0,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":55.2,"duplication":17.9,"lint":98.7,"testing":0.0,"docs":65.0,"type_safety":null,"process":30.0},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 20% of function code in complex or long functions; 29% duplicated lines. Weakest area: testing."},"security":{"score":68.9,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":86.5,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":25.0},"summary":"Security posture is weak: no high-impact findings. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"ok","tool_version":"scorecard v5.6.0","metrics":{"aggregate":2.9,"check:Code-Review":6.0,"check:Maintained":0.0,"check:Binary-Artifacts":10.0,"check:CII-Best-Practices":0.0,"check:Security-Policy":0.0,"check:Fuzzing":0.0,"check:License":10.0,"check:Branch-Protection":0.0,"check:SAST":0.0},"findings":[],"evidence":[{"kind":"scorecard-check","description":"Scorecard Code-Review: 6/10 (Found 11/18 approved changesets -- score normalized to 6)","ref":"Code-Review","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":0.4},{"kind":"scorecard-check","description":"Scorecard Maintained: 0/10 (0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0)","ref":"Maintained","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Binary-Artifacts: 10/10 (no binaries found in the repo)","ref":"Binary-Artifacts","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":0.0},{"kind":"scorecard-check","description":"Scorecard CII-Best-Practices: 0/10 (no effort to earn an OpenSSF best practices badge detected)","ref":"CII-Best-Practices","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Security-Policy: 0/10 (security policy file not detected)","ref":"Security-Policy","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Fuzzing: 0/10 (project is not fuzzed)","ref":"Fuzzing","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":1.0},{"kind":"scorecard-check","description":"Scorecard License: 10/10 (license file detected)","ref":"License","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Branch-Protection: 0/10 (branch protection not enabled on development/release branches)","ref":"Branch-Protection","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":1.0},{"kind":"scorecard-check","description":"Scorecard SAST: 0/10 (SAST tool is not run on all commits -- score normalized to 0)","ref":"SAST","url":"https://scorecard.dev/viewer/?uri=github.com/NMAC427/SwiftOCR","weight":1.0}],"data":{"date":"2026-11-09","commit":"99a1d90a5f3ddef51492bca8f6606f2a60e18ffe","matches_head":true},"error":null},{"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":127.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":52097.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2016-04":{"loc":49428,"attributed_loc":0},"2016-05":{"loc":1309,"attributed_loc":0},"2016-06":{"loc":317,"attributed_loc":0},"2016-07":{"loc":271,"attributed_loc":0},"2016-10":{"loc":393,"attributed_loc":0},"2016-11":{"loc":237,"attributed_loc":0},"2016-12":{"loc":3,"attributed_loc":0},"2017-04":{"loc":0,"attributed_loc":0},"2017-09":{"loc":12,"attributed_loc":0},"2017-10":{"loc":59,"attributed_loc":0},"2017-11":{"loc":0,"attributed_loc":0},"2018-06":{"loc":0,"attributed_loc":0},"2018-10":{"loc":3,"attributed_loc":0},"2019-01":{"loc":16,"attributed_loc":0},"2019-02":{"loc":0,"attributed_loc":0},"2019-03":{"loc":0,"attributed_loc":0},"2019-11":{"loc":19,"attributed_loc":0},"2020-05":{"loc":30,"attributed_loc":0},"2020-12":{"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":56.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":3262.0,"pre_ai_era_burst_loc":0.0,"measured_loc":3262.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":129.82646420824295,"median_loc_per_hour":37.25,"pr_timed_units":0.0,"excluded_import_loc":48835.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":["c4b008733aec14820b16c39a88a803d56b1f4cc5"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":3.0,"flagged_releases":0.0,"max_loc_per_day":0.4},"findings":[],"evidence":[],"data":{"releases":[{"from":"1.0","to":"1.1","loc":71,"days":337.66,"loc_per_day":0.2,"flagged":false},{"from":"1.1","to":"1.2","loc":38,"days":831.07,"loc_per_day":0.0,"flagged":false},{"from":"1.2","to":"1.2.1","loc":30,"days":81.82,"loc_per_day":0.4,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":49411.0,"index":0.364,"count:narrated_steps":18.0,"per_kloc:narrated_steps":0.364,"files:narrated_steps":5.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":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 1: convert to monochrome if necessary","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFASTCornerDetectionFilter.h:26","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFASTCornerDetectionFilter.h#L26","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 2: do a lookup at each pixel based on the Bresenham circle, encode comparison in two color components","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFASTCornerDetectionFilter.h:27","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFASTCornerDetectionFilter.h#L27","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 3: do non-maximum suppression of close corner points","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFASTCornerDetectionFilter.h:28","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFASTCornerDetectionFilter.h#L28","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, generate the normal Gaussian weights for a given sigma","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m:98","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m#L98","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from r","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m:115","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m#L115","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Finally, generate the shader from these weights","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m:121","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m#L121","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // First, generate the normal Gaussian weights for a given sigma","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m:175","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m#L175","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Next, normalize these weights to prevent the clipping of the Gaussian curve at the end of the discrete samples from r","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m:192","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageGaussianBlurFilter.m#L192","weight":0.0}],"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":16.0,"findings_high":0.0,"findings_medium":16.0,"findings_low":0.0,"weighted_findings":4.0,"scanned_lines":9692.0,"parse_errors":179.0},"findings":[{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/Extensions.swift","line":46,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/Extensions.swift:46"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/FFNN/FFNN.swift","line":567,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/FFNN/FFNN.swift:567"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/FFNN/Random.swift","line":16,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/FFNN/Random.swift:16"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":61,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:61"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":76,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:76"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":82,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:82"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":105,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:105"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":160,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:160"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":161,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:161"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":162,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:162"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":163,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:163"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":222,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:222"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":239,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:239"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":240,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:240"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":241,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:241"},{"rule_id":"opengrep/swift.lang.crypto.insecure-random","severity":"medium","message":"A random number generator was detected which is **not** *guaranteed* to be Cryptographically secure. If the source of entropy is used for security purposes (e.g. with other Cryptographic operations), make sure to use the `SecCopyRandomBytes` API explicitly. [confidence low]","path":"framework/SwiftOCR/SwiftOCRTraining.swift","line":242,"fingerprint":"swift.lang.crypto.insecure-random:framework/SwiftOCR/SwiftOCRTraining.swift:242"}],"evidence":[],"data":{"rulesets":["c","swift","bash"]},"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.0394,"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":1987.0,"function_nloc":22775.0,"mean_ccn":2.12,"p90_ccn":3.0,"complex_functions":20.0,"long_functions":19.0,"many_param_functions":1.0,"risky_nloc_share":0.1978},"findings":[],"evidence":[{"kind":"complex-function","description":"changeSelectedRow: ; in framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m: complexity 130, 972 lines","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m#L42","weight":1.0},{"kind":"complex-function","description":"tableView: cellForRowAtIndexPath: in framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterListController.m: complexity 120, 133 lines","ref":"framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterListController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterListController.m#L58","weight":1.0},{"kind":"complex-function","description":"setupFilter.switch in framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.m: complexity 118, 998 lines","ref":"framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.m#L82","weight":1.0},{"kind":"complex-function","description":"tableView: objectValueForTableColumn: row: in framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m: complexity 112, 119 lines","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m#L1279","weight":1.0},{"kind":"complex-function","description":"updateFilterFromSlider: ; in framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.m: complexity 71, 101 lines","ref":"framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.m#L1564","weight":1.0},{"kind":"complex-function","description":"setCurrentSliderValue: ; in framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m: complexity 69, 97 lines","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m#L1172","weight":1.0},{"kind":"complex-function","description":"extractBlobs in framework/SwiftOCR/SwiftOCR.swift: complexity 51, 147 lines","ref":"framework/SwiftOCR/SwiftOCR.swift","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/SwiftOCR.swift#L207","weight":0.85},{"kind":"complex-function","description":"printSupportedPixelFormats.for in framework/SwiftOCR/GPUImage-master/framework/Source/Mac/GPUImageAVCamera.m: complexity 43, 50 lines","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/Mac/GPUImageAVCamera.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/Mac/GPUImageAVCamera.m#L718","weight":0.7166666666666667},{"kind":"complex-function","description":"initWithCGImage: smoothlyScaleOutput: removePremultiplication: ; in framework/SwiftOCR/GPUImage-master/framework/Source/iOS/GPUImagePicture.m: complexity 33, 146 lines","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/iOS/GPUImagePicture.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/iOS/GPUImagePicture.m#L76","weight":0.55},{"kind":"complex-function","description":"newFrameReadyAtTime: atIndex: ; in framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFourInputFilter.m: complexity 32, 119 lines","ref":"framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFourInputFilter.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/framework/Source/GPUImageFourInputFilter.m#L269","weight":0.5333333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":30710.0,"duplicated_lines":8813.0,"duplicated_share":0.287,"files":488.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: example/OS X/SwiftOCR Debug OS X/SwiftOCR Debug OS X/AppDelegate.swift:6 and example/OS X/SwiftOCR Training/SwiftOCR Training/AppDelegate.swift:6","ref":"example/OS X/SwiftOCR Debug OS X/SwiftOCR Debug OS X/AppDelegate.swift","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/example/OS X/SwiftOCR Debug OS X/SwiftOCR Debug OS X/AppDelegate.swift#L6","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.h:4 and framework/SwiftOCR/GPUImage-master/examples/iOS/FilterShowcase/FilterShowcase/ShowcaseFilterViewController.h:4","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.h","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.h#L4","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m:16 and framework/SwiftOCR/GPUImage-master/examples/Mac/MultiViewFilterExample/MultiViewFilterExample/SLSMultiViewWindowController.m:11","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m#L16","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m:579 and framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m:823","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcase/SLSFilterShowcaseWindowController.m#L579","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcaseSwift/FilterShowcaseSwiftTests/FilterShowcaseSwiftTests.swift:14 and framework/SwiftOCRTests/SwiftOCRTests.swift:30","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcaseSwift/FilterShowcaseSwiftTests/FilterShowcaseSwiftTests.swift","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/FilterShowcaseSwift/FilterShowcaseSwiftTests/FilterShowcaseSwiftTests.swift#L14","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/ShaderDesigner/ShaderDesigner/ShaderDesignerWindowController.m:80 and framework/SwiftOCR/GPUImage-master/examples/Mac/ShaderDesigner/ShaderDesigner/ShaderDesignerWindowController.m:105","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/ShaderDesigner/ShaderDesigner/ShaderDesignerWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/ShaderDesigner/ShaderDesigner/ShaderDesignerWindowController.m#L80","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/AppDelegate.m:1 and framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFilter/SimpleVideoFilter/AppDelegate.m:1","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/AppDelegate.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/AppDelegate.m#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/SLSSimpleVideoFileFilterWindowController.m:58 and framework/SwiftOCR/GPUImage-master/examples/iOS/SimpleVideoFileFilter/SimpleVideoFileFilter/SimpleVideoFileFilterViewController.m:27","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/SLSSimpleVideoFileFilterWindowController.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/SLSSimpleVideoFileFilterWindowController.m#L58","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/main.m:2 and framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFilter/SimpleVideoFilter/main.m:2","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/main.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilter/main.m#L2","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilterTests/SimpleVideoFilterTests.m:2 and framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFilter/SimpleVideoFilterTests/SimpleVideoFilterTests.m:2","ref":"framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilterTests/SimpleVideoFilterTests.m","url":"https://github.com/NMAC427/SwiftOCR/blob/99a1d90a5f3ddef51492bca8f6606f2a60e18ffe/framework/SwiftOCR/GPUImage-master/examples/Mac/SimpleVideoFileFilter/SimpleVideoFilterTests/SimpleVideoFilterTests.m#L2","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"weighted_findings":0.5,"scanned_lines":9692.0,"category:correctness":2.0},"findings":[{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"framework/SwiftOCR/GPUImage-master/build.sh","line":10,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:framework/SwiftOCR/GPUImage-master/build.sh:10"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"framework/SwiftOCR/GPUImage-master/build.sh","line":11,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:framework/SwiftOCR/GPUImage-master/build.sh:11"}],"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":49411.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":74.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":73.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null}],"flags":[]}