{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:00.381531Z","repo":{"ref":{"host":"github.com","owner":"DroidKaigi","name":"conference-app-2019"},"default_branch":"master","clone_url":"https://github.com/DroidKaigi/conference-app-2019.git","html_url":"https://github.com/DroidKaigi/conference-app-2019","description":"The Official Conference App for DroidKaigi 2019 Tokyo","stars":809,"forks":260,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":10596,"primary_language":"Kotlin","license_spdx":"Apache-2.0","created_at":"2018-08-05T09:04:41Z","pushed_at":"2019-05-16T08:22:26Z","security_policy_url":null,"distribution":{"owner_created_at":"2015-01-27T15:52:57Z","owner_type":"Organization","release_assets":[{"name":"android.aab","size":8914859,"download_count":20,"release_tag":"v1.0.3","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.3/android.aab"},{"name":"mapping.txt","size":11952583,"download_count":16,"release_tag":"v1.0.3","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.3/mapping.txt"},{"name":"universal.apk","size":7502616,"download_count":34,"release_tag":"v1.0.3","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.3/universal.apk"},{"name":"android.aab","size":8804935,"download_count":11,"release_tag":"v1.0.1","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.1/android.aab"},{"name":"mapping.txt","size":11684998,"download_count":10,"release_tag":"v1.0.1","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.1/mapping.txt"},{"name":"universal.apk","size":7427105,"download_count":36,"release_tag":"v1.0.1","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.1/universal.apk"}]}},"commit_sha":"839b6dca4780aac1746c819f7ca8af6100afcda8","profile":{"lines_by_language":{"Kotlin":17026,"Swift":3655,"Java":617,"Shell":293},"files_by_category":{"source":366,"config":240,"binary":143,"other":105,"test":54,"docs":11,"generated":2,"oversized":1},"source_lines":19271,"test_lines":2320},"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.0},"summary":"No AI attribution or AI-consistent velocity signals detected."},"quality":{"score":75.9,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":94.1,"duplication":66.6,"lint":95.3,"testing":72.2,"docs":80.0,"type_safety":null,"process":30.0},"summary":"Code quality is adequate: test-to-source ratio 0.12, CI runs tests; 2% of function code in complex or long functions; 7% duplicated lines. Weakest area: process."},"security":{"score":46.7,"confidence":0.85,"coverage":1.0,"label":"poor","breakdown":{"secrets":47.2,"sast":99.1,"dependencies":31.1,"ci_actions":null,"posture":0.0,"scorecard":18.0},"summary":"Security posture is poor: 1 possible secret(s) in the tree, 2 only in history; 25 known vulnerabilities in 7 dependencies. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"ok","tool_version":"scorecard v5.6.0","metrics":{"aggregate":2.5,"check:Code-Review":6.0,"check:Maintained":0.0,"check:Binary-Artifacts":9.0,"check:Pinned-Dependencies":0.0,"check:CII-Best-Practices":0.0,"check:Security-Policy":0.0,"check:Fuzzing":0.0,"check:License":10.0,"check:Signed-Releases":0.0,"check:SAST":0.0},"findings":[],"evidence":[{"kind":"scorecard-check","description":"Scorecard Code-Review: 6/10 (Found 2/3 approved changesets -- score normalized to 6)","ref":"Code-Review","url":"https://scorecard.dev/viewer/?uri=github.com/DroidKaigi/conference-app-2019","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/DroidKaigi/conference-app-2019","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Binary-Artifacts: 9/10 (binaries present in source code)","ref":"Binary-Artifacts","url":"https://scorecard.dev/viewer/?uri=github.com/DroidKaigi/conference-app-2019","weight":0.1},{"kind":"scorecard-check","description":"Scorecard Pinned-Dependencies: 0/10 (dependency not pinned by hash detected -- score normalized to 0)","ref":"Pinned-Dependencies","url":"https://scorecard.dev/viewer/?uri=github.com/DroidKaigi/conference-app-2019","weight":1.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/DroidKaigi/conference-app-2019","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/DroidKaigi/conference-app-2019","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/DroidKaigi/conference-app-2019","weight":1.0},{"kind":"scorecard-check","description":"Scorecard License: 10/10 (license file detected)","ref":"License","url":"https://scorecard.dev/viewer/?uri=github.com/DroidKaigi/conference-app-2019","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Signed-Releases: 0/10 (Project has not signed or included provenance with any releases.)","ref":"Signed-Releases","url":"https://scorecard.dev/viewer/?uri=github.com/DroidKaigi/conference-app-2019","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/DroidKaigi/conference-app-2019","weight":1.0}],"data":{"date":"2026-11-09","commit":"839b6dca4780aac1746c819f7ca8af6100afcda8","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":1562.0,"attributed_commits":0.0,"attributed_commit_share":0.0,"effective_loc":35597.0,"attributed_loc":0.0,"attributed_loc_share":0.0,"tools_detected":0.0},"findings":[],"evidence":[],"data":{"attributed_loc_by_commit":{},"tools":{},"monthly":{"2018-06":{"loc":387,"attributed_loc":0},"2018-07":{"loc":1005,"attributed_loc":0},"2018-08":{"loc":219,"attributed_loc":0},"2018-09":{"loc":2982,"attributed_loc":0},"2018-10":{"loc":2726,"attributed_loc":0},"2018-11":{"loc":2444,"attributed_loc":0},"2018-12":{"loc":2857,"attributed_loc":0},"2019-01":{"loc":16631,"attributed_loc":0},"2019-02":{"loc":6174,"attributed_loc":0},"2019-04":{"loc":2,"attributed_loc":0},"2019-05":{"loc":170,"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":640.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":35597.0,"pre_ai_era_burst_loc":0.0,"measured_loc":35597.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":288.0,"median_loc_per_hour":48.14264487369985,"pr_timed_units":2.0,"excluded_import_loc":0.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":3.0,"flagged_releases":0.0,"max_loc_per_day":1426.3},"findings":[],"evidence":[],"data":{"releases":[{"from":"v1.0.1","to":"v1.0.3","loc":5262,"days":3.69,"loc_per_day":1426.3,"flagged":false},{"from":"v1.0.3","to":"v1.0.4","loc":7,"days":0.35,"loc_per_day":20.3,"flagged":false},{"from":"v1.0.4","to":"v1.0.5","loc":2,"days":0.41,"loc_per_day":4.9,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":19271.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":1.0,"secrets_history":2.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[{"rule_id":"gitleaks/gcp-api-key","severity":"high","message":"Possible gcp-api-key secret in the current tree","path":"frontend/android/google-services.json","line":32,"fingerprint":"frontend/android/google-services.json:gcp-api-key:32"},{"rule_id":"gitleaks/curl-auth-user","severity":"medium","message":"Possible curl-auth-user secret in history (commit 346e9f6b63); removed from the current tree but still retrievable","path":".circleci/scripts/download_latest_apk","line":15,"fingerprint":"346e9f6b634f19b973514ebecfe68f55b6d810d8:.circleci/scripts/download_latest_apk:curl-auth-user:15"},{"rule_id":"gitleaks/gcp-api-key","severity":"medium","message":"Possible gcp-api-key secret in history (commit ed192e8169); removed from the current tree but still retrievable","path":"frontend/google-services.json","line":32,"fingerprint":"ed192e81694825bb0fc6a02c312116c6d48be8d5:frontend/google-services.json:gcp-api-key:32"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"findings_high":0.0,"findings_medium":2.0,"findings_low":0.0,"weighted_findings":0.5,"scanned_lines":19271.0,"parse_errors":1.0},"findings":[{"rule_id":"opengrep/bash.curl.security.curl-pipe-bash","severity":"medium","message":"Data is being piped into `bash` from a `curl` command. An attacker with control of the server in the `curl` command could inject malicious code into the pipe, resulting in a system compromise. Avoid piping untrusted data into `bash` or any other shell if you can. If you must do this, consider checki [confidence low]","path":".travis/android/before_install.bash","line":9,"fingerprint":"bash.curl.security.curl-pipe-bash:.travis/android/before_install.bash:9"},{"rule_id":"opengrep/bash.curl.security.curl-pipe-bash","severity":"medium","message":"Data is being piped into `bash` from a `curl` command. An attacker with control of the server in the `curl` command could inject malicious code into the pipe, resulting in a system compromise. Avoid piping untrusted data into `bash` or any other shell if you can. If you must do this, consider checki [confidence low]","path":".travis/android/before_install.bash","line":10,"fingerprint":"bash.curl.security.curl-pipe-bash:.travis/android/before_install.bash:10"}],"evidence":[],"data":{"rulesets":["kotlin","swift","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":7.0,"vulnerabilities":25.0,"vulns_critical":3.0,"vulns_high":9.0,"vulns_medium":10.0,"vulns_low":2.0,"vulns_unknown":1.0,"penalty":70.0},"findings":[{"rule_id":"osv/GHSA-69p6-wvmq-27gg","severity":"critical","message":"git@1.5.0 (RubyGems) is affected by GHSA-69p6-wvmq-27gg","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"git@1.5.0 (RubyGems):GHSA-69p6-wvmq-27gg"},{"rule_id":"osv/GHSA-52p9-v744-mwjj","severity":"critical","message":"kramdown@1.17.0 (RubyGems) is affected by GHSA-52p9-v744-mwjj","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"kramdown@1.17.0 (RubyGems):GHSA-52p9-v744-mwjj"},{"rule_id":"osv/GHSA-mqm2-cgpr-p4m6","severity":"critical","message":"kramdown@1.17.0 (RubyGems) is affected by GHSA-mqm2-cgpr-p4m6","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"kramdown@1.17.0 (RubyGems):GHSA-mqm2-cgpr-p4m6"},{"rule_id":"osv/GHSA-8474-xrp6-wh69","severity":"high","message":"activesupport@4.2.11 (RubyGems) is affected by GHSA-8474-xrp6-wh69","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"activesupport@4.2.11 (RubyGems):GHSA-8474-xrp6-wh69"},{"rule_id":"osv/GHSA-7627-mp87-jf6q","severity":"high","message":"cocoapods-downloader@1.2.2 (RubyGems) is affected by GHSA-7627-mp87-jf6q","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"cocoapods-downloader@1.2.2 (RubyGems):GHSA-7627-mp87-jf6q"},{"rule_id":"osv/GHSA-g397-v4w5-4m79","severity":"high","message":"cocoapods-downloader@1.2.2 (RubyGems) is affected by GHSA-g397-v4w5-4m79","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"cocoapods-downloader@1.2.2 (RubyGems):GHSA-g397-v4w5-4m79"},{"rule_id":"osv/GHSA-h8w8-99g7-qmvj","severity":"high","message":"concurrent-ruby@1.1.4 (RubyGems) is affected by GHSA-h8w8-99g7-qmvj","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"concurrent-ruby@1.1.4 (RubyGems):GHSA-h8w8-99g7-qmvj"},{"rule_id":"osv/GHSA-5cm2-9h8c-rvfx","severity":"high","message":"tzinfo@1.2.5 (RubyGems) is affected by GHSA-5cm2-9h8c-rvfx","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"tzinfo@1.2.5 (RubyGems):GHSA-5cm2-9h8c-rvfx"},{"rule_id":"osv/GHSA-h27x-rffw-24p4","severity":"high","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-h27x-rffw-24p4","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-h27x-rffw-24p4"},{"rule_id":"osv/GHSA-jxhc-q857-3j6g","severity":"high","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-jxhc-q857-3j6g","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-jxhc-q857-3j6g"},{"rule_id":"osv/GHSA-pfpr-3463-c6jh","severity":"high","message":"git@1.5.0 (RubyGems) is affected by GHSA-pfpr-3463-c6jh","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"git@1.5.0 (RubyGems):GHSA-pfpr-3463-c6jh"},{"rule_id":"osv/GHSA-pphf-gfrm-v32r","severity":"high","message":"git@1.5.0 (RubyGems) is affected by GHSA-pphf-gfrm-v32r","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"git@1.5.0 (RubyGems):GHSA-pphf-gfrm-v32r"},{"rule_id":"osv/GHSA-2j26-frm8-cmj9","severity":"medium","message":"activesupport@4.2.11 (RubyGems) is affected by GHSA-2j26-frm8-cmj9","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"activesupport@4.2.11 (RubyGems):GHSA-2j26-frm8-cmj9"},{"rule_id":"osv/GHSA-89vf-4333-qx8v","severity":"medium","message":"activesupport@4.2.11 (RubyGems) is affected by GHSA-89vf-4333-qx8v","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"activesupport@4.2.11 (RubyGems):GHSA-89vf-4333-qx8v"},{"rule_id":"osv/GHSA-cg4j-q9v8-6v38","severity":"medium","message":"activesupport@4.2.11 (RubyGems) is affected by GHSA-cg4j-q9v8-6v38","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"activesupport@4.2.11 (RubyGems):GHSA-cg4j-q9v8-6v38"},{"rule_id":"osv/GHSA-j6gc-792m-qgm2","severity":"medium","message":"activesupport@4.2.11 (RubyGems) is affected by GHSA-j6gc-792m-qgm2","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"activesupport@4.2.11 (RubyGems):GHSA-j6gc-792m-qgm2"},{"rule_id":"osv/GHSA-pj73-v5mw-pm9j","severity":"medium","message":"activesupport@4.2.11 (RubyGems) is affected by GHSA-pj73-v5mw-pm9j","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"activesupport@4.2.11 (RubyGems):GHSA-pj73-v5mw-pm9j"},{"rule_id":"osv/GHSA-wv3x-4vxv-whpp","severity":"medium","message":"concurrent-ruby@1.1.4 (RubyGems) is affected by GHSA-wv3x-4vxv-whpp","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"concurrent-ruby@1.1.4 (RubyGems):GHSA-wv3x-4vxv-whpp"},{"rule_id":"osv/GHSA-8gmh-2hhj-2hv9","severity":"medium","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-8gmh-2hhj-2hv9","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-8gmh-2hhj-2hv9"},{"rule_id":"osv/GHSA-9crm-g4mf-wc5j","severity":"medium","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-9crm-g4mf-wc5j","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-9crm-g4mf-wc5j"},{"rule_id":"osv/GHSA-9f42-57jx-vpp3","severity":"medium","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-9f42-57jx-vpp3","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-9f42-57jx-vpp3"},{"rule_id":"osv/GHSA-j82w-28jv-3pmj","severity":"medium","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-j82w-28jv-3pmj","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-j82w-28jv-3pmj"},{"rule_id":"osv/GHSA-qq38-m9mg-xjj5","severity":"medium","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-qq38-m9mg-xjj5","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-qq38-m9mg-xjj5"},{"rule_id":"osv/GHSA-6wx8-w4f5-wwcr","severity":"low","message":"concurrent-ruby@1.1.4 (RubyGems) is affected by GHSA-6wx8-w4f5-wwcr","path":"frontend/ios/Gemfile.lock","line":null,"fingerprint":"concurrent-ruby@1.1.4 (RubyGems):GHSA-6wx8-w4f5-wwcr"},{"rule_id":"osv/GHSA-539f-xcgw-2gjg","severity":"low","message":"addressable@2.5.2 (RubyGems) is affected by GHSA-539f-xcgw-2gjg","path":"scripts/danger/Gemfile.lock","line":null,"fingerprint":"addressable@2.5.2 (RubyGems):GHSA-539f-xcgw-2gjg"}],"evidence":[],"data":{"ecosystems":["RubyGems"]},"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.035,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":2.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v1.0.3 ships universal.apk (34 downloads)","ref":"universal.apk","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.3/universal.apk","weight":0.0},{"kind":"binary-release-asset","description":"release v1.0.1 ships universal.apk (36 downloads)","ref":"universal.apk","url":"https://github.com/DroidKaigi/conference-app-2019/releases/download/v1.0.1/universal.apk","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":1068.0,"function_nloc":9146.0,"mean_ccn":1.75,"p90_ccn":3.0,"complex_functions":1.0,"long_functions":1.0,"many_param_functions":5.0,"risky_nloc_share":0.0203},"findings":[],"evidence":[{"kind":"complex-function","description":"settleBottomSheet in corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt: complexity 16, 69 lines","ref":"corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt#L601","weight":0.26666666666666666},{"kind":"complex-function","description":"params in model/src/jvmTest/kotlin/io/github/droidkaigi/confsched2019/model/FiltersTest.kt: complexity 1, 117 lines","ref":"model/src/jvmTest/kotlin/io/github/droidkaigi/confsched2019/model/FiltersTest.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/model/src/jvmTest/kotlin/io/github/droidkaigi/confsched2019/model/FiltersTest.kt#L90","weight":0.016666666666666666}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":11360.0,"duplicated_lines":770.0,"duplicated_share":0.0678,"files":366.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: .travis/android/promote_to_production.bash:1 and .travis/android/run.bash:1","ref":".travis/android/promote_to_production.bash","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/.travis/android/promote_to_production.bash#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/ext/ReceiveChannelExt.kt:14 and corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/ext/ReceiveChannelExt.kt:33","ref":"corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/ext/ReceiveChannelExt.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/ext/ReceiveChannelExt.kt#L14","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt:2 and corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/FilterChip.kt:2","ref":"corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt#L2","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt:397 and corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt:451","ref":"corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/BottomSheetBehavior.kt#L397","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/FilterChip.kt:230 and corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/FilterChip.kt:257","ref":"corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/FilterChip.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/corecomponent/androidcomponent/src/main/java/io/github/droidkaigi/confsched2019/widget/FilterChip.kt#L230","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: data/api-impl/src/commonMain/kotlin/io/github/droidkaigi/confsched2019/data/api/KtorGoogleFormApi.kt:26 and data/api/src/commonMain/kotlin/io/github/droidkaigi/confsched2019/data/api/GoogleFormApi.kt:5","ref":"data/api-impl/src/commonMain/kotlin/io/github/droidkaigi/confsched2019/data/api/KtorGoogleFormApi.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/data/api-impl/src/commonMain/kotlin/io/github/droidkaigi/confsched2019/data/api/KtorGoogleFormApi.kt#L26","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: data/db-room/src/main/java/io/github/droidkaigi/confsched2019/data/db/entity/mapper/SessionDataMapperExt.kt:148 and data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/mapper/SessionMappers.kt:103","ref":"data/db-room/src/main/java/io/github/droidkaigi/confsched2019/data/db/entity/mapper/SessionDataMapperExt.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/data/db-room/src/main/java/io/github/droidkaigi/confsched2019/data/db/entity/mapper/SessionDataMapperExt.kt#L148","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/DataSessionRepository.kt:34 and data/repository/src/commonMain/kotlin/io/github/droidkaigi/confsched2019/data/repository/ResponseToModelMapper.kt:41","ref":"data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/DataSessionRepository.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/DataSessionRepository.kt#L34","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/DataSessionRepository.kt:73 and model/src/commonMain/kotlin/SessionFeedback.kt:16","ref":"data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/DataSessionRepository.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/DataSessionRepository.kt#L73","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/mapper/SessionMappers.kt:28 and data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/mapper/SessionMappers.kt:54","ref":"data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/mapper/SessionMappers.kt","url":"https://github.com/DroidKaigi/conference-app-2019/blob/839b6dca4780aac1746c819f7ca8af6100afcda8/data/repository-impl/src/main/java/io/github/droidkaigi/confsched2019/data/repository/mapper/SessionMappers.kt#L28","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":9.0,"weighted_findings":3.75,"scanned_lines":19271.0,"category:best-practice":2.0,"category:correctness":7.0},"findings":[{"rule_id":"opengrep/bash.lang.best-practice.useless-cat","severity":"medium","message":"Useless call to 'cat' in a pipeline. Use '<' and '>' for any command to read from a file or write to a file.","path":".travis/android/run.bash","line":27,"fingerprint":"bash.lang.best-practice.useless-cat:.travis/android/run.bash:27"},{"rule_id":"opengrep/bash.lang.best-practice.useless-cat","severity":"medium","message":"Useless call to 'cat' in a pipeline. Use '<' and '>' for any command to read from a file or write to a file.","path":".travis/android/run.bash","line":28,"fingerprint":"bash.lang.best-practice.useless-cat:.travis/android/run.bash:28"},{"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":".travis/android/before_install.bash","line":5,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:.travis/android/before_install.bash:5"},{"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":".travis/android/promote_to_production.bash","line":10,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:.travis/android/promote_to_production.bash: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":".travis/android/release_to_alpha.bash","line":14,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:.travis/android/release_to_alpha.bash:14"},{"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":".travis/android/run.bash","line":10,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:.travis/android/run.bash:10"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-command-substitution-in-command","severity":"low","message":"The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result.","path":".travis/android/run.bash","line":18,"fingerprint":"bash.lang.correctness.unquoted-command-substitution-in-command:.travis/android/run.bash:18"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-command-substitution-in-command","severity":"low","message":"The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result.","path":"scripts/git/install.bash","line":9,"fingerprint":"bash.lang.correctness.unquoted-command-substitution-in-command:scripts/git/install.bash:9"},{"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":"scripts/git/install.bash","line":9,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/git/install.bash:9"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.2408,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":0.1182,"test_lines":2320.0,"source_lines":19271.0,"test_ratio":0.1204,"ci_files":2.0,"cochange_share":0.0296,"cochange_commits":203.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .circleci/config.yml","ref":".circleci/config.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .travis.yml","ref":".travis.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (unittest)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (ktlint)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["unittest"],"lint_commands":["ktlint"]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":1.0,"check:changelog":0.0,"readme_lines":217.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},{"kind":"docs","description":"CONTRIBUTING.md","ref":"CONTRIBUTING.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":[]}