Files that are both large and changed often are where bugs tend to cluster and where refactoring pays off first. Each file in the current tree is placed by its size and by the number of commits that changed it; its hotspot score is changes × √lines. Files without counted lines, such as binary files, are left out.
Each dot is a file; a bigger dot is a higher score. The dashed lines mark the median file size and the median number of changes, so the large files that change often are in the top right. Both axes are logarithmic. Showing the 2,000 highest-scoring of 16,996 files.
The files ranked by hotspot score: the larger a file is and the more often it changes, the higher it ranks. Authors is how many people have changed the file, bots aside, as on the Code Ownership page: a hotspot only one person has changed is also a bus-factor risk.
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pom.xml | 1,569 | 1,058 | 84 | 41,908.0 | |
| RELEASE-NOTES.md | 2,444 | 713 | 55 | 35,248.5 | |
| test/it/parser/src/main/resources/case/dml/select.xml | 15,884 | 253 | 30 | 31,886.0 | |
| test/it/parser/src/main/resources/case/dml/select-special-function.xml | 8,232 | 108 | 29 | 9,798.9 | |
| README.md | 322 | 411 | 59 | 7,375.1 | |
| test/it/parser/src/main/resources/case/ddl/create-table.xml | 6,166 | 88 | 17 | 6,910.1 | |
| test/it/parser/src/main/resources/case/dml/select-expression.xml | 5,944 | 88 | 18 | 6,784.6 | |
| test/it/parser/src/main/resources/case/dml/insert.xml | 6,367 | 84 | 18 | 6,702.7 | |
| .codex/harness/agents/cases.toml | 4,945 | 93 | 2 | 6,539.8 | |
| test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java | 2,281 | 127 | 23 | 6,065.5 |
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pom.xml | 1,569 | 1,058 | 84 | 41,908.0 | |
| RELEASE-NOTES.md | 2,444 | 713 | 55 | 35,248.5 | |
| test/it/parser/src/main/resources/case/dml/select.xml | 15,884 | 253 | 30 | 31,886.0 | |
| test/it/parser/src/main/resources/case/dml/select-special-function.xml | 8,232 | 108 | 29 | 9,798.9 | |
| README.md | 322 | 411 | 59 | 7,375.1 | |
| test/it/parser/src/main/resources/case/ddl/create-table.xml | 6,166 | 88 | 17 | 6,910.1 | |
| test/it/parser/src/main/resources/case/dml/select-expression.xml | 5,944 | 88 | 18 | 6,784.6 | |
| test/it/parser/src/main/resources/case/dml/insert.xml | 6,367 | 84 | 18 | 6,702.7 | |
| .codex/harness/agents/cases.toml | 4,945 | 93 | 2 | 6,539.8 | |
| test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java | 2,281 | 127 | 23 | 6,065.5 | |
| test/it/parser/src/main/resources/sql/supported/dml/select.xml | 615 | 224 | 27 | 5,555.0 | |
| docs/document/content/user-manual/error-code/sql-error-code.en.md | 264 | 299 | 15 | 4,858.2 | |
| docs/document/content/user-manual/error-code/sql-error-code.cn.md | 263 | 297 | 15 | 4,816.5 | |
| infra/reachability-metadata/src/main/resources/META-INF/native-image/org.apache.shardingsphere/generated-reachability-metadata/reachability-metadata.json | 9,865 | 44 | 2 | 4,370.2 | |
| README_ZH.md | 308 | 243 | 30 | 4,264.6 | |
| test/it/parser/src/main/resources/case/ddl/alter-table.xml | 4,059 | 65 | 9 | 4,141.2 | |
| mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java | 423 | 157 | 10 | 3,229.0 | |
| mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java | 300 | 179 | 13 | 3,100.4 | |
| features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rule/ShardingRuleTest.java | 875 | 95 | 8 | 2,810.1 | |
| features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java | 664 | 107 | 13 | 2,757.2 | |
| proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutorTest.java | 593 | 109 | 7 | 2,654.3 | |
| distribution/proxy-native/pom.xml | 1,184 | 76 | 9 | 2,615.1 | |
| test/it/parser/src/main/resources/sql/supported/ddl/create-table.xml | 880 | 88 | 17 | 2,610.5 | |
| mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java | 361 | 123 | 3 | 2,337.0 | |
| test/it/parser/src/main/resources/case/dml/select-join.xml | 3,923 | 37 | 8 | 2,317.5 | |
| parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4 | 3,546 | 38 | 6 | 2,262.8 | |
| jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java | 466 | 104 | 5 | 2,245.1 | |
| parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | 2,069 | 48 | 6 | 2,183.3 | |
| examples/pom.xml | 241 | 140 | 32 | 2,173.4 | |
| test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml | 451 | 99 | 26 | 2,102.4 | |
| features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java | 634 | 82 | 9 | 2,064.7 | |
| jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java | 447 | 96 | 5 | 2,029.7 | |
| distribution/proxy/pom.xml | 1,220 | 56 | 10 | 1,956.0 | |
| features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/ShardingDQLResultMergerTest.java | 741 | 71 | 11 | 1,932.7 | |
| test/it/parser/src/main/resources/case/dml/update.xml | 3,175 | 32 | 11 | 1,803.1 | |
| parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | 1,906 | 41 | 4 | 1,790.0 | |
| docs/community/content/powered-by/_index.cn.md | 334 | 94 | 14 | 1,717.9 | |
| parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | 2,678 | 33 | 4 | 1,707.7 | |
| .codex/harness/agents/run.py | 2,963 | 31 | 1 | 1,687.4 | |
| docs/community/content/powered-by/_index.en.md | 334 | 91 | 13 | 1,663.1 | |
| parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4 | 1,627 | 41 | 7 | 1,653.8 | |
| parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java | 961 | 53 | 6 | 1,643.0 | |
| mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java | 296 | 95 | 3 | 1,634.4 | |
| distribution/jdbc/pom.xml | 1,018 | 51 | 9 | 1,627.2 | |
| src/resources/checkstyle.xml | 419 | 79 | 11 | 1,617.1 | |
| .github/workflows/nightly-check.yml | 231 | 105 | 5 | 1,595.9 | |
| proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java | 379 | 80 | 10 | 1,557.4 | |
| mode/type/standalone/core/src/test/java/org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistServiceTest.java | 322 | 82 | 4 | 1,471.4 | |
| proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/connector/ProxySQLExecutor.java | 349 | 78 | 5 | 1,457.2 | |
| test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml | 520 | 63 | 8 | 1,436.6 | |
| test/it/parser/src/main/resources/case/ddl/create-view.xml | 2,958 | 26 | 7 | 1,414.1 | |
| infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java | 326 | 78 | 7 | 1,408.3 | |
| parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4 | 4,450 | 21 | 4 | 1,400.9 | |
| mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java | 104 | 137 | 8 | 1,397.1 | |
| .github/workflows/e2e-sql.yml | 273 | 83 | 11 | 1,371.4 | |
| features/sharding/distsql/parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java | 500 | 61 | 10 | 1,364.0 | |
| proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/connector/ProxyDatabaseConnectionManagerTest.java | 795 | 48 | 5 | 1,353.4 | |
| kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/SingleSQLRouterTest.java | 342 | 72 | 4 | 1,331.5 | |
| AGENTS.md | 131 | 114 | 3 | 1,304.8 | |
| parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | 2,417 | 26 | 5 | 1,278.2 | |
| parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DALStatement.g4 | 1,046 | 39 | 4 | 1,261.3 | |
| test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/core/util/PipelineContextUtils.java | 261 | 78 | 6 | 1,260.1 | |
| .codex/harness/agents/test_run.py | 2,951 | 23 | 1 | 1,249.4 | |
| .github/workflows/nightly-build.yml | 236 | 81 | 8 | 1,244.3 | |
| parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | 2,283 | 26 | 6 | 1,242.3 | |
| docs/community/content/team/_index.en.md | 414 | 61 | 40 | 1,241.2 | |
| test/it/parser/src/main/resources/case/dal/explain.xml | 1,823 | 29 | 10 | 1,238.2 | |
| parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4 | 1,159 | 36 | 7 | 1,225.6 | |
| proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactory.java | 203 | 86 | 9 | 1,225.3 | |
| kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngine.java | 206 | 82 | 8 | 1,176.9 | |
| docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.en.md | 411 | 58 | 5 | 1,175.8 | |
| docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.cn.md | 406 | 58 | 6 | 1,168.7 | |
| parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | 1,849 | 27 | 5 | 1,161.0 | |
| docs/document/content/faq/_index.cn.md | 384 | 59 | 20 | 1,156.2 | |
| docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md | 418 | 56 | 4 | 1,144.9 | |
| docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md | 410 | 56 | 4 | 1,133.9 | |
| docs/document/content/faq/_index.en.md | 388 | 57 | 21 | 1,122.8 | |
| docs/community/content/team/_index.cn.md | 372 | 58 | 40 | 1,118.7 | |
| test/it/parser/src/main/resources/sql/supported/dml/insert.xml | 240 | 72 | 16 | 1,115.4 | |
| proxy/bootstrap/pom.xml | 265 | 68 | 14 | 1,107.0 | |
| test/it/parser/src/main/resources/sql/supported/dml/select-expression.xml | 246 | 70 | 15 | 1,097.9 | |
| infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java | 567 | 46 | 4 | 1,095.3 | |
| features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rule/EncryptRule.java | 215 | 74 | 8 | 1,085.1 | |
| test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/expression/ExpressionAssert.java | 810 | 38 | 10 | 1,081.5 | |
| .codex/skills/review-pr/SKILL.md | 346 | 58 | 4 | 1,078.9 | |
| test/e2e/operation/pipeline/src/test/java/org/apache/shardingsphere/test/e2e/operation/pipeline/cases/PipelineContainerComposer.java | 596 | 44 | 3 | 1,074.2 | |
| features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/checker/ReadwriteSplittingRuleStatementChecker.java | 247 | 67 | 9 | 1,053.0 | |
| features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/dql/groupby/GroupByMemoryMergedResultTest.java | 353 | 56 | 8 | 1,052.1 | |
| infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java | 236 | 68 | 8 | 1,044.6 | |
| test/it/binder/src/test/resources/cases/dml/select.xml | 1,884 | 24 | 7 | 1,041.7 | |
| parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | 2,411 | 21 | 4 | 1,031.1 | |
| features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/projection/EncryptProjectionTokenGenerator.java | 412 | 50 | 7 | 1,014.9 | |
| infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java | 258 | 61 | 9 | 979.8 | |
| features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java | 265 | 60 | 4 | 976.7 | |
| proxy/backend/core/pom.xml | 249 | 60 | 13 | 946.8 | |
| parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | 2,237 | 20 | 4 | 945.9 | |
| .github/workflows/e2e-agent.yml | 193 | 67 | 6 | 930.8 | |
| test/native/pom.xml | 174 | 70 | 5 | 923.4 | |
| kernel/single/core/src/test/java/org/apache/shardingsphere/single/rule/SingleRuleTest.java | 504 | 41 | 7 | 920.4 | |
| kernel/data-pipeline/scenario/cdc/core/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/CDCJob.java | 260 | 57 | 3 | 919.1 |
How Apache ShardingSphere compares with other open source projects from China →
How Apache ShardingSphere ranks among open source projects from China by AI-assisted commits →
Generate this report for your own repository with gitstats-action · All Gallery reports
Publishes the report to GitHub Pages on every push to main: turn on Pages for the gh-pages branch.
# .github/workflows/gitstats.yml
name: GitStats Report
on:
push:
branches: [main]
permissions:
contents: write
jobs:
gitstats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true