A powerful framework for faster, easier, and more efficient project development.
This report summarizes scanner evidence for gogf/gf, a Go project with 13,291 GitHub stars. SynthScan examined 609,905 lines of code across 2529 source files, recording 475 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 0.9 (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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 414 finding(s).
Are imports declared and package/API names verified? 25 finding(s).
Are wrappers, guards, and repeated structures necessary? 36 finding(s).
Which changes need focused human review? 475 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 475 distinct pattern matches across 9 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 | cmd/gf/internal/cmd/cmd_run.go | 401 | // These directories typically contain third-party code or non-source files. | COMMENT |
| LOW | …ndao/generated_user_sqlite3/dao/internal/table_user.go | 81 | // Transaction wraps the transaction logic using function f. | COMMENT |
| LOW | …al/cmd/testdata/genctrl/default/api/article/v2/edit.go | 21 | } | COMMENT |
| LOW | cmd/gf/internal/cmd/genpbentity/genpbentity.go | 221 | "[]byte": { | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/run.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/run.go | 121 | // registries (skills / prompts / md). It is built once at command entry | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/run.go | 141 | if label := strings.TrimSpace(s.DisplayName); label != "" { | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/run.go | 201 | } | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/agents.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/run_test.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | …/internal/cmd/agents/common/common_interactive_list.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_status.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_status.go | 21 | // StatusOK indicates the link already exists and points at the canonical | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_status.go | 41 | StatusSkippedForeignTarget Status = "skipped-foreign" | COMMENT |
| LOW | …f/internal/cmd/agents/common/common_interactive_huh.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | …f/internal/cmd/agents/common/common_interactive_huh.go | 21 | // | COMMENT |
| LOW | …f/internal/cmd/agents/common/common_interactive_huh.go | 81 | // abortKeyMap returns a huh KeyMap whose Quit binding accepts both | COMMENT |
| LOW | …/internal/cmd/agents/common/common_interactive_test.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_interactive.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_spec.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_spec.go | 21 | // canonical source path. No symlink is required for these agents. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_spec.go | 41 | // .claude/skills -> .agents/skills). | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_spec.go | 61 | SpecCategory() Category | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_engine.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_engine.go | 181 | } | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_test.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common.go | 21 | // error guidance. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_filesystem.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_render.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/common/common_render.go | 21 | // Header is the column header text; Value resolves the cell text for a | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/registry/agents.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/cmd/agents/registry/registry.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/packed/packed.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/consts/consts_gen_ctrl_template.go | 1 | // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | cmd/gf/internal/utility/utils/utils_gofmt.go | 81 | // Path is the import path, like `github.com/gogf/gf/contrib/rpc/grpcx/v2`. | COMMENT |
| LOW | database/gdb/gdb_func.go | 201 | // | COMMENT |
| LOW | database/gdb/gdb_model_with.go | 21 | // With creates and returns an ORM model based on metadata of given object. | COMMENT |
| LOW | database/gdb/gdb_driver_wrapper_db.go | 41 | func (d *DriverWrapperDB) Tables(ctx context.Context, schema ...string) (tables []string, err error) { | COMMENT |
| LOW | database/gdb/gdb_driver_wrapper_db.go | 101 | // This function is usually used for custom interface definition, you do not need call it manually. | COMMENT |
| LOW | database/gdb/gdb_model_where.go | 1 | // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | database/gdb/gdb_model.go | 81 | // Model creates and returns a new ORM model from given schema. | COMMENT |
| LOW | database/gdb/gdb_model_join.go | 1 | // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | database/gdb/gdb_model_join.go | 21 | // Model("user", "u").LeftJoin("user_detail", "ud", "ud.uid=u.uid") | COMMENT |
| LOW | database/gdb/gdb_model_join.go | 41 | // and also with its alias name。 | COMMENT |
| LOW | database/gdb/gdb_core_txcore.go | 21 | // TXCore is the struct for transaction management. | COMMENT |
| LOW | database/gdb/gdb_core_txcore.go | 341 | return tx.Model(table).Ctx(tx.ctx).Data(data).InsertAndGetId() | COMMENT |
| LOW | database/gdb/gdb_core_txcore.go | 361 | } | COMMENT |
| LOW | database/gdb/gdb_core_txcore.go | 381 | // Update does "UPDATE ... " statement for the table. | COMMENT |
| LOW | database/gdb/gdb_core_txcore.go | 401 | // The parameter `condition` can be type of string/map/gmap/slice/struct/*struct, etc. | COMMENT |
| LOW | database/gdb/gdb_core_utility.go | 101 | COMMENT | |
| LOW | database/gdb/gdb_core_utility.go | 121 | COMMENT | |
| LOW | database/gdb/gdb_type_result_scanlist.go | 21 | // ScanList converts `r` to struct slice which contains other complex struct attributes. | COMMENT |
| LOW | database/gdb/gdb_type_result_scanlist.go | 41 | // } | COMMENT |
| LOW | database/gdb/gdb_type_result_scanlist.go | 61 | // } | COMMENT |
| LOW | database/gdb/gdb_type_result_scanlist.go | 81 | // ScanList(&users) | COMMENT |
| LOW | database/gdb/gdb_model_transaction.go | 1 | // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. | COMMENT |
| LOW | database/gdb/gdb.go | 41 | // Model("user u") | COMMENT |
| LOW | database/gdb/gdb.go | 61 | Open(config *ConfigNode) (*sql.DB, error) | COMMENT |
| LOW | database/gdb/gdb.go | 81 | // The args are for any placeholder parameters in the query. | COMMENT |
| 331 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 25 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 31 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 58 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 84 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 107 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 131 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 156 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 182 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 203 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 227 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 252 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 276 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 297 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 325 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 353 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 369 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 391 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 412 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloconfigdb.sql | 422 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 25 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 31 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 58 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 84 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 110 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 129 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 152 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 173 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 195 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 217 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 238 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 261 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 284 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 305 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 322 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 335 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | .github/workflows/apollo/sql/apolloportaldb.sql | 354 | # ------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …house/clickhouse_z_unit_feature_model_sharding_test.go | 116 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …house/clickhouse_z_unit_feature_model_sharding_test.go | 124 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …/mariadb/mariadb_z_unit_feature_model_sharding_test.go | 125 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …/mariadb/mariadb_z_unit_feature_model_sharding_test.go | 133 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …rs/oracle/oracle_z_unit_feature_model_sharding_test.go | 88 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …rs/oracle/oracle_z_unit_feature_model_sharding_test.go | 95 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …rs/sqlite/sqlite_z_unit_feature_model_sharding_test.go | 129 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …rs/sqlite/sqlite_z_unit_feature_model_sharding_test.go | 136 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …anbase/oceanbase_z_unit_feature_model_sharding_test.go | 125 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …anbase/oceanbase_z_unit_feature_model_sharding_test.go | 133 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …itecgo/sqlitecgo_z_unit_feature_model_sharding_test.go | 129 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …itecgo/sqlitecgo_z_unit_feature_model_sharding_test.go | 136 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …rivers/tidb/tidb_z_unit_feature_model_sharding_test.go | 125 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …rivers/tidb/tidb_z_unit_feature_model_sharding_test.go | 133 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …vers/mysql/mysql_z_unit_feature_model_sharding_test.go | 125 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …vers/mysql/mysql_z_unit_feature_model_sharding_test.go | 133 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | …ib/drivers/dm/dm_z_unit_feature_model_sharding_test.go | 88 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …ib/drivers/dm/dm_z_unit_feature_model_sharding_test.go | 95 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | contrib/drivers/pgsql/pgsql_z_unit_issue_test.go | 424 | INSERT INTO %s (id, user_id, phone, address) VALUES (1, 1, '1234567890', '123 Main St'); | CODE |
| LOW | contrib/drivers/pgsql/pgsql_z_unit_issue_test.go | 444 | t.Assert(r[0]["address"], "123 Main St") | CODE |
| LOW | contrib/drivers/pgsql/pgsql_z_unit_issue_test.go | 459 | t.Assert(r[0]["address"], "123 Main St") | CODE |
| LOW | contrib/drivers/pgsql/pgsql_z_unit_issue_test.go | 475 | t.Assert(r[0]["address"], "123 Main St") | CODE |
| LOW | …vers/mssql/mssql_z_unit_feature_model_sharding_test.go | 126 | _, err = model.Data(g.Map{"name": "John Doe"}). | CODE |
| LOW | …vers/mssql/mssql_z_unit_feature_model_sharding_test.go | 133 | t.Assert(result.Name, "John Doe") | CODE |
| LOW | text/gstr/gstr_z_unit_test.go | 341 | t.Assert(gstr.HideStr("user@example.com", 100, "*"), "****@example.com") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/scripts/ci-main.sh | 52 | # Check if it's a contrib directory | COMMENT |
| LOW | .github/workflows/scripts/ci-main.sh | 54 | # Check if go version meets the requirement | COMMENT |
| LOW | .github/workflows/scripts/ci-sub.sh | 72 | # Check if go.mod version requirement is satisfied by current Go version | COMMENT |
| LOW | .github/workflows/scripts/before_script.sh | 8 | # Check if the GCI is installed successfully | COMMENT |
| LOW⚡ | .github/workflows/scripts/update_version.sh | 3 | # Check if the number of parameters is 2 | COMMENT |
| LOW⚡ | .github/workflows/scripts/update_version.sh | 10 | # Check if the first parameter is a directory and exists | COMMENT |
| LOW⚡ | .github/workflows/scripts/update_version.sh | 16 | # Check if the second parameter starts with 'v' | COMMENT |
| LOW | .github/workflows/scripts/update_version.sh | 27 | # Check if file exists | COMMENT |
| LOW | .github/workflows/scripts/docker-services.sh | 102 | # Check if Docker is available | COMMENT |
| LOW | .github/workflows/scripts/docker-services.sh | 133 | # Check if container already exists | COMMENT |
| LOW | .github/workflows/scripts/docker-services.sh | 433 | # Check if it's a compose service | COMMENT |
| LOW | .github/workflows/scripts/replace_examples_gomod.sh | 9 | # Check if examples directory exists | COMMENT |
| LOW | .github/workflows/scripts/replace_examples_gomod.sh | 15 | # Check if find command is available | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | contrib/drivers/gaussdb/gaussdb_do_insert.go | 439 | // For InsertIgnore (withUpdate=false), we need to check if record exists first | COMMENT |
| LOW | contrib/drivers/oracle/oracle_z_unit_init_test.go | 134 | // Step 1: Create table | COMMENT |
| LOW | contrib/drivers/oracle/oracle_z_unit_init_test.go | 150 | // Step 2: Create sequence | COMMENT |
| LOW | contrib/drivers/oracle/oracle_z_unit_init_test.go | 164 | // Step 3: Create trigger - only set ID from sequence when it's NULL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | contrib/drivers/oracle/oracle_z_unit_init_test.go | 134 | // Step 1: Create table | COMMENT |
| LOW | contrib/drivers/oracle/oracle_z_unit_init_test.go | 150 | // Step 2: Create sequence | COMMENT |
| LOW | contrib/drivers/oracle/oracle_z_unit_init_test.go | 164 | // Step 3: Create trigger - only set ID from sequence when it's NULL | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cmd/gf/internal/cmd/agents/run.go | 633 | // agent, but the loop keeps the function robust if a future caller passes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/codeql.yml | 56 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | database/gdb/gdb_statement.go | 107 | // Example usage: | COMMENT |