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 27,204 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 | |
|---|---|---|---|---|---|
| frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.cpp | 16,596 | 1,711 | 114 | 220,420.4 | |
| frameworks/core/components_ng/pattern/text_field/text_field_pattern.cpp | 15,029 | 1,776 | 161 | 217,724.9 | |
| frameworks/core/pipeline_ng/pipeline_context.cpp | 8,914 | 1,484 | 311 | 140,110.3 | |
| frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp | 14,206 | 1,115 | 249 | 132,895.7 | |
| frameworks/core/interfaces/arkoala/arkoala_api.h | 10,906 | 1,266 | 235 | 132,210.7 | |
| frameworks/core/components_ng/base/frame_node.cpp | 9,371 | 1,227 | 240 | 118,778.4 | |
| frameworks/core/components_ng/pattern/web/web_pattern.cpp | 11,879 | 1,014 | 186 | 110,516.7 | |
| frameworks/core/interfaces/native/generated/interface/arkoala_api_generated.h | 33,953 | 520 | 148 | 95,817.0 | |
| adapter/ohos/entrance/ui_content_impl.cpp | 7,331 | 1,072 | 280 | 91,786.0 | |
| frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp | 7,520 | 1,052 | 171 | 91,227.3 |
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.cpp | 16,596 | 1,711 | 114 | 220,420.4 | |
| frameworks/core/components_ng/pattern/text_field/text_field_pattern.cpp | 15,029 | 1,776 | 161 | 217,724.9 | |
| frameworks/core/pipeline_ng/pipeline_context.cpp | 8,914 | 1,484 | 311 | 140,110.3 | |
| frameworks/bridge/declarative_frontend/jsview/js_view_abstract.cpp | 14,206 | 1,115 | 249 | 132,895.7 | |
| frameworks/core/interfaces/arkoala/arkoala_api.h | 10,906 | 1,266 | 235 | 132,210.7 | |
| frameworks/core/components_ng/base/frame_node.cpp | 9,371 | 1,227 | 240 | 118,778.4 | |
| frameworks/core/components_ng/pattern/web/web_pattern.cpp | 11,879 | 1,014 | 186 | 110,516.7 | |
| frameworks/core/interfaces/native/generated/interface/arkoala_api_generated.h | 33,953 | 520 | 148 | 95,817.0 | |
| adapter/ohos/entrance/ui_content_impl.cpp | 7,331 | 1,072 | 280 | 91,786.0 | |
| frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp | 7,520 | 1,052 | 171 | 91,227.3 | |
| interfaces/native/node/style_modifier.cpp | 24,848 | 578 | 125 | 91,111.6 | |
| frameworks/core/components_ng/render/adapter/rosen_render_context.cpp | 9,578 | 913 | 235 | 89,352.8 | |
| frameworks/core/components_ng/pattern/text/text_pattern.cpp | 9,992 | 883 | 124 | 88,264.7 | |
| frameworks/core/components_ng/pattern/swiper/swiper_pattern.cpp | 8,606 | 947 | 117 | 87,851.8 | |
| frameworks/core/components_ng/base/view_abstract.cpp | 12,599 | 723 | 189 | 81,153.3 | |
| frameworks/core/components/web/resource/web_delegate.cpp | 11,292 | 710 | 178 | 75,447.3 | |
| adapter/ohos/osal/js_accessibility_manager.cpp | 11,663 | 602 | 99 | 65,013.2 | |
| adapter/ohos/entrance/ace_container.cpp | 5,354 | 769 | 222 | 56,268.5 | |
| interfaces/native/native_node.h | 15,156 | 428 | 105 | 52,691.0 | |
| frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp | 8,913 | 552 | 90 | 52,113.6 | |
| frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_api_impl_bridge.cpp | 4,100 | 788 | 182 | 50,456.6 | |
| frameworks/bridge/declarative_frontend/engine/jsEnumStyle.js | 5,557 | 653 | 241 | 48,678.1 | |
| frameworks/core/components_ng/pattern/list/list_pattern.cpp | 5,557 | 643 | 86 | 47,932.6 | |
| frameworks/core/interfaces/native/node/node_common_modifier.cpp | 13,896 | 393 | 103 | 46,327.3 | |
| frameworks/core/components_ng/pattern/scrollable/scrollable_pattern.cpp | 5,480 | 618 | 106 | 45,748.7 | |
| frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_common_bridge.cpp | 12,349 | 397 | 101 | 44,117.0 | |
| frameworks/core/components_ng/pattern/text_field/text_field_pattern.h | 2,760 | 813 | 126 | 42,711.5 | |
| frameworks/bridge/declarative_frontend/jsview/js_web.cpp | 8,335 | 464 | 136 | 42,361.4 | |
| frameworks/bridge/declarative_frontend/engine/jsi/jsi_declarative_engine.cpp | 3,961 | 505 | 163 | 31,782.9 | |
| frameworks/core/components_ng/base/frame_node.h | 2,196 | 661 | 198 | 30,975.5 | |
| frameworks/core/components_ng/pattern/rich_editor/rich_editor_pattern.h | 1,689 | 748 | 87 | 30,740.9 | |
| frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/component/common.ets | 29,746 | 171 | 67 | 29,492.4 | |
| frameworks/core/pipeline_ng/pipeline_context.h | 1,771 | 695 | 226 | 29,247.9 | |
| test/unittest/BUILD.gn | 1,905 | 668 | 223 | 29,155.7 | |
| build/libace.map | 6,120 | 372 | 127 | 29,101.7 | |
| frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/framework/arkts/ArkUIGeneratedNativeModule.ets | 7,588 | 322 | 109 | 28,049.1 | |
| frameworks/core/components_ng/manager/drag_drop/drag_drop_manager.cpp | 3,730 | 450 | 86 | 27,483.2 | |
| frameworks/core/components_ng/pattern/list/list_layout_algorithm.cpp | 3,356 | 469 | 56 | 27,169.6 | |
| frameworks/core/interfaces/native/implementation/common_method_modifier.cpp | 7,676 | 308 | 84 | 26,984.7 | |
| frameworks/core/components_ng/pattern/image/image_pattern.cpp | 3,384 | 448 | 84 | 26,061.1 | |
| frameworks/core/components_ng/base/ui_node.cpp | 3,354 | 409 | 130 | 23,686.7 | |
| interfaces/native/libace.ndk.json | 7,419 | 273 | 87 | 23,514.5 | |
| frameworks/core/components_ng/pattern/menu/menu_layout_algorithm.cpp | 4,356 | 346 | 73 | 22,836.0 | |
| frameworks/core/common/event_manager.cpp | 3,639 | 378 | 83 | 22,802.5 | |
| frameworks/core/components_ng/pattern/web/web_pattern.h | 1,849 | 502 | 132 | 21,586.0 | |
| frameworks/core/components_ng/pattern/grid/grid_pattern.cpp | 2,412 | 437 | 69 | 21,462.0 | |
| frameworks/core/components_ng/pattern/tabs/tab_bar_pattern.cpp | 4,076 | 334 | 72 | 21,323.7 | |
| frameworks/core/components/web/resource/web_delegate.h | 2,165 | 454 | 142 | 21,124.4 | |
| frameworks/core/components_ng/pattern/menu/menu_pattern.cpp | 3,979 | 333 | 82 | 21,005.4 | |
| frameworks/bridge/declarative_frontend/ark_component/src/ArkComponent.ts | 6,785 | 250 | 68 | 20,592.8 | |
| frameworks/core/pipeline/pipeline_context.cpp | 3,766 | 334 | 118 | 20,496.8 | |
| frameworks/core/components_ng/event/drag_event.cpp | 2,623 | 382 | 85 | 19,564.2 | |
| frameworks/core/components_ng/event/focus_hub.cpp | 3,447 | 328 | 67 | 19,257.3 | |
| frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp | 3,540 | 323 | 67 | 19,217.8 | |
| frameworks/core/components_ng/pattern/form/form_pattern.cpp | 3,138 | 343 | 95 | 19,214.1 | |
| interfaces/native/native_type.h | 7,167 | 226 | 72 | 19,132.7 | |
| frameworks/core/components_ng/pattern/select_overlay/select_overlay_node.cpp | 5,797 | 251 | 70 | 19,110.6 | |
| adapter/ohos/entrance/subwindow/subwindow_ohos.cpp | 2,771 | 362 | 102 | 19,055.8 | |
| frameworks/core/components_ng/pattern/grid/grid_scroll/grid_scroll_layout_algorithm.cpp | 2,779 | 361 | 47 | 19,030.6 | |
| frameworks/core/components_ng/pattern/dialog/dialog_pattern.cpp | 3,832 | 304 | 78 | 18,818.6 | |
| frameworks/core/components_ng/pattern/menu/menu_item/menu_item_pattern.cpp | 3,963 | 297 | 72 | 18,696.9 | |
| frameworks/core/components_ng/pattern/text_field/text_field_model_ng.cpp | 3,389 | 321 | 85 | 18,687.1 | |
| frameworks/core/components_ng/pattern/swiper/swiper_pattern.h | 1,643 | 459 | 81 | 18,605.1 | |
| frameworks/core/components_ng/pattern/slider/slider_pattern.cpp | 4,582 | 271 | 61 | 18,344.1 | |
| frameworks/bridge/declarative_frontend/BUILD.gn | 1,266 | 513 | 177 | 18,253.0 | |
| test/unittest/interfaces/native_node_test.cpp | 15,913 | 143 | 62 | 18,039.0 | |
| frameworks/core/components_ng/event/gesture_event_hub.cpp | 1,945 | 407 | 91 | 17,949.6 | |
| frameworks/bridge/declarative_frontend/frontend_delegate_declarative.cpp | 4,090 | 280 | 106 | 17,906.9 | |
| frameworks/core/components_ng/pattern/search/search_pattern.cpp | 3,862 | 280 | 76 | 17,400.6 | |
| frameworks/core/components_ng/pattern/menu/menu_view.cpp | 3,563 | 286 | 85 | 17,071.6 | |
| frameworks/core/components_ng/pattern/BUILD.gn | 448 | 771 | 183 | 16,319.0 | |
| frameworks/core/pipeline/pipeline_base.h | 1,871 | 373 | 161 | 16,134.1 | |
| frameworks/core/components_ng/base/view_abstract.h | 1,350 | 435 | 156 | 15,982.9 | |
| frameworks/core/interfaces/native/utility/generated/converter_generated.h | 5,645 | 208 | 89 | 15,627.7 | |
| frameworks/core/components_ng/render/adapter/rosen_render_context.h | 1,081 | 471 | 164 | 15,485.8 | |
| frameworks/bridge/declarative_frontend/jsview/js_richeditor.cpp | 2,548 | 298 | 58 | 15,042.4 | |
| frameworks/core/components_ng/base/view_abstract_model_ng.h | 2,103 | 328 | 135 | 15,041.6 | |
| frameworks/bridge/arkts_frontend/koala_projects/arkoala-arkts/arkui-ohos/generated/component/idlize.ets | 12,400 | 135 | 57 | 15,033.0 | |
| frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_utils.cpp | 6,480 | 184 | 60 | 14,811.7 | |
| frameworks/core/components_ng/pattern/xcomponent/xcomponent_pattern.cpp | 2,772 | 281 | 67 | 14,794.6 | |
| frameworks/core/components_ng/pattern/text/text_pattern.h | 931 | 483 | 97 | 14,737.4 | |
| frameworks/core/components_ng/pattern/scroll/scroll_pattern.cpp | 2,102 | 308 | 64 | 14,121.1 | |
| frameworks/core/components_ng/base/ui_node.h | 1,504 | 356 | 130 | 13,806.2 | |
| frameworks/core/components_ng/pattern/video/video_pattern.cpp | 2,993 | 250 | 64 | 13,677.1 | |
| frameworks/core/interfaces/cjui/cjui_api.h | 4,163 | 209 | 85 | 13,485.0 | |
| frameworks/core/components_ng/layout/layout_property.cpp | 2,883 | 251 | 83 | 13,477.1 | |
| frameworks/core/BUILD.gn | 1,308 | 372 | 168 | 13,453.9 | |
| frameworks/core/interfaces/native/node/node_api.cpp | 2,952 | 246 | 88 | 13,365.7 | |
| frameworks/core/components_ng/render/render_context.h | 1,152 | 391 | 157 | 13,271.0 | |
| frameworks/core/components_ng/pattern/scrollable/scrollable_pattern.h | 1,440 | 349 | 74 | 13,243.6 | |
| frameworks/core/components_ng/pattern/select/select_pattern.cpp | 3,266 | 230 | 65 | 13,144.3 | |
| adapter/ohos/osal/system_properties.cpp | 1,687 | 317 | 141 | 13,020.2 | |
| frameworks/core/components_ng/pattern/overlay/overlay_manager.h | 862 | 443 | 115 | 13,006.4 | |
| frameworks/bridge/declarative_frontend/jsview/js_view_abstract.h | 1,024 | 406 | 164 | 12,992.0 | |
| frameworks/core/components_ng/pattern/navigation/navigation_model_ng.cpp | 3,507 | 218 | 55 | 12,909.9 | |
| frameworks/core/components_ng/pattern/text_field/text_field_layout_algorithm.cpp | 1,804 | 302 | 68 | 12,827.0 | |
| frameworks/bridge/declarative_frontend/jsview/js_text.cpp | 2,166 | 268 | 94 | 12,472.8 | |
| frameworks/core/components_ng/pattern/bubble/bubble_layout_algorithm.cpp | 4,163 | 188 | 41 | 12,130.0 | |
| frameworks/core/components_ng/pattern/search/search_model_ng.cpp | 3,187 | 210 | 68 | 11,855.2 | |
| frameworks/bridge/declarative_frontend/engine/jsi/nativeModule/arkts_native_frame_node_bridge.cpp | 3,601 | 196 | 62 | 11,761.6 |
How OpenHarmony ArkUI compares with other open source projects from China →
How OpenHarmony ArkUI 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