Flutter 超完整的开源项目,功能丰富,适合学习和日常使用。GSYGithubApp 系列的优势:我们目前已经拥有 Flutter、Weex、ReactNative、Kotlin View、Kotlin Jetpack Compose ,Compose MultiPlatform,Harmony ArkUI 七个版本,功能齐全,项目框架内技术涉及面广,完成度高,持续维护,配套文章,适合全面学习,对比参考。
This report summarizes scanner evidence for CarGuo/gsy_github_app_flutter, a Dart project with 15,498 GitHub stars. SynthScan examined 70,244 lines of code across 418 source files, recording 318 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 4.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 302 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 16 finding(s).
Which changes need focused human review? 318 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 318 distinct pattern matches across 4 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .deslop.toml | 1 | # Deslop 配置:只对手写 Dart 代码做重复度体检,屏蔽 GSY 已知的 3 类噪声: | COMMENT |
| LOW | pubspec.yaml | 21 | #analyzer: 1.1.0 | COMMENT |
| LOW | pubspec.yaml | 141 | COMMENT | |
| LOW | pubspec.yaml | 161 | # - images/a_dot_burr.jpeg | COMMENT |
| LOW | test/page/repos/repos_item_test.dart | 1 | import 'dart:async'; | COMMENT |
| LOW | …/page/repos/repos_detail_tab_wrap_list_child_test.dart | 1 | import 'dart:io'; | COMMENT |
| LOW | test/page/dynamic/dynamic_bloc_test.dart | 1 | import 'package:flutter_test/flutter_test.dart'; | COMMENT |
| LOW | test/page/search/search_page_appbar_overflow_test.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | test/page/search/search_page_appbar_overflow_test.dart | 21 | /// **2026-09-04 实测结论(本 case suite 首次跑出的真实观察)**: | COMMENT |
| LOW | test/page/issue/issue_timeline_merge_test.dart | 1 | import 'package:flutter_test/flutter_test.dart'; | COMMENT |
| LOW | …t/page/discussion/discussion_comments_paging_test.dart | 1 | import 'package:flutter_test/flutter_test.dart'; | COMMENT |
| LOW | …t/page/discussion/discussion_list_view_model_test.dart | 1 | import 'package:flutter_test/flutter_test.dart'; | COMMENT |
| LOW | test/app/smoke_post_frame_test.dart | 1 | import 'package:flutter/foundation.dart'; | COMMENT |
| LOW | test/app/smoke_post_frame_test.dart | 21 | /// + Future.error 上抛(同步 throw 走 try/catch 分支) | COMMENT |
| LOW | test/widget/gsy_user_icon_widget_test.dart | 1 | import 'dart:async'; | COMMENT |
| LOW | test/widget/gsy_user_icon_widget_test.dart | 21 | /// | COMMENT |
| LOW | test/widget/pull/gsy_pull_load_widget_test.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | test/common/utils/navigator_utils_search_test.dart | 101 | reason: '前置:master 栈只有入口页面'); | COMMENT |
| LOW | test/common/style/gsy_adaptive_shell_test.dart | 861 | COMMENT | |
| LOW | test/common/style/gsy_adaptive_shell_test.dart | 1221 | // 起头,验证"卡片 tap 命中 → 回调触发 → openDetail 分派"这整条链路 | COMMENT |
| LOW | lib/app.dart | 21 | import 'package:gsy_github_app_flutter/provider/app_state_provider.dart'; | COMMENT |
| LOW | lib/app.dart | 141 | // 记账栈;断点跨越时用 stack 里的 builder 迁到目标 Navigator。 | COMMENT |
| LOW | lib/app.dart | 261 | /// | COMMENT |
| LOW | lib/app.dart | 281 | /// `mcp_dart vm_service evaluate` 官方语义(见 Dart VM Service Protocol | COMMENT |
| LOW | lib/app.dart | 301 | /// 不会 flush,得等下一次 `scheduleFrame` 触发的帧末才跑。好在 | COMMENT |
| LOW | lib/page/repos/repository_detail_page.dart | 301 | COMMENT | |
| LOW | lib/page/repos/repository_detail_page.dart | 341 | widget.reposName, | COMMENT |
| LOW | lib/page/trend/trend_page.dart | 341 | trendUserButton() { | COMMENT |
| LOW | lib/page/user/user_status_provider.g.dart | 1 | // GENERATED CODE - DO NOT MODIFY BY HAND | COMMENT |
| LOW | lib/page/user/base_person_state.dart | 261 | /// provider 实例,与 [PersonState._refreshPinned] / [_refreshStatus] / | COMMENT |
| LOW | lib/page/user/user_contribution_provider.g.dart | 1 | // GENERATED CODE - DO NOT MODIFY BY HAND | COMMENT |
| LOW | lib/page/user/user_pinned_provider.g.dart | 1 | // GENERATED CODE - DO NOT MODIFY BY HAND | COMMENT |
| LOW | lib/page/user/user_pinned_provider.dart | 1 | import 'package:gsy_github_app_flutter/common/repositories/user_repository.dart'; | COMMENT |
| LOW | lib/page/user/user_sponsors_provider.g.dart | 1 | // GENERATED CODE - DO NOT MODIFY BY HAND | COMMENT |
| LOW | lib/page/user/widget/user_pinned.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | lib/page/user/widget/user_contribution_calendar.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | lib/page/user/widget/user_status.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | lib/page/user/widget/user_sponsors.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | lib/page/search/search_page.dart | 41 | SingleTickerProviderStateMixin { | COMMENT |
| LOW | lib/page/search/widget/gsy_search_drawer.dart | 161 | /// | COMMENT |
| LOW | lib/page/search/widget/code_search_item_widget.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | lib/page/issue/issue_detail_page.dart | 21 | import 'package:gsy_github_app_flutter/page/issue/widget/issue_header_item.dart'; | COMMENT |
| LOW | lib/page/issue/issue_detail_page.dart | 301 | if (!mounted) return; | COMMENT |
| LOW | lib/page/issue/pull_request_files_page.dart | 21 | /// | COMMENT |
| LOW | lib/page/issue/pull_request_files_page.dart | 61 | Map<String, List<PullReviewComment>> _commentsByPath = const {}; | COMMENT |
| LOW | lib/page/issue/pull_request_files_page.dart | 181 | /// A/3 + A/4:把当前文件的 review comment 折叠成 {addLine: html片段}。 | COMMENT |
| LOW | lib/page/issue/issue_edit_dIalog.dart | 101 | // 撑爆 —— 真机截图 dialog_step3_edit_dialog.png 直接命中 | COMMENT |
| LOW | lib/page/issue/widget/reactions_bar.dart | 1 | import 'package:flutter/material.dart'; | COMMENT |
| LOW | lib/page/issue/widget/issue_timeline_item.dart | 21 | class IssueTimelineItem extends StatelessWidget { | COMMENT |
| LOW | lib/page/discussion/discussion_comments_paging.dart | 1 | /// GitHub Discussion 详情页 comments 分页数据处理(纯 Dart 逻辑,无 Flutter 依赖)。 | COMMENT |
| LOW | lib/page/discussion/reaction_groups.dart | 1 | // Reactions 数据规范化 & 本地状态推进(纯 Dart,无 flutter 依赖)。 | COMMENT |
| LOW | lib/page/discussion/reaction_groups.dart | 141 | /// - `add=true` 且未 react:count+1,viewerHasReacted=true | COMMENT |
| LOW | lib/page/discussion/discussion_detail_page.dart | 21 | /// | COMMENT |
| LOW | lib/page/discussion/discussion_detail_page.dart | 61 | COMMENT | |
| LOW | lib/page/discussion/discussion_list_page.dart | 241 | Future<void> startCreateDiscussion() => _startCreateDiscussion(context); | COMMENT |
| LOW | lib/page/discussion/release_footer.dart | 1 | /// Discussion "linked to a release" footer 识别与抽离。 | COMMENT |
| LOW | lib/widget/gsy_tabbar_widget.dart | 41 | /// 长度必须与 [tabItems] 一致;索引与 tab / PageView 一一对应。 | COMMENT |
| LOW | lib/widget/gsy_tabbar_widget.dart | 61 | /// 如果 dispose 里无条件 popDetailToRoot,就会把宿主 detail 页自己从右列栈 | COMMENT |
| LOW | lib/widget/gsy_tabbar_widget.dart | 101 | with SingleTickerProviderStateMixin, WidgetsBindingObserver { | COMMENT |
| LOW | lib/widget/gsy_tabbar_widget.dart | 141 | WidgetsBinding.instance.removeObserver(this); | COMMENT |
| 240 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lib/test/demo_db.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/user/user_followed_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/user/user_stared_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/user/user_orgs_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/user/userinfo_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/user/user_follower_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/user/user_repos_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/event/user_event_db_provider.dart | 0 | $columnusername text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/repos/repository_event_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | …b/db/provider/repos/repository_detail_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/repos/repository_star_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | …/db/provider/repos/repository_watcher_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/repos/repository_fork_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | …/db/provider/repos/repository_commits_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | …ovider/repos/repository_detail_readme_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| HIGH | lib/db/provider/issue/issue_detail_db_provider.dart | 0 | $columnfullname text not null, $columnnumber text not null, $columndata text not null) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pubspec.yaml | 142 | # The following section is specific to Flutter. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pubspec.yaml | 155 | # included with your application, so that you can use the icons in | COMMENT |