Repository Analysis

AppFlowy-IO/AppFlowy

Bring projects, wikis, and teams together with AI. AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data. The leading open source Notion alternative.

0.8 Likely human-written View on GitHub
0.8
Adjusted Score
0.8
Raw Score
100%
Time Factor
2026-05-27
Last Push
71,475
Stars
Dart
Language
510,668
Lines of Code
3169
Files
322
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 10MEDIUM 23LOW 289

Pattern Findings

322 matches across 10 categories. Click a row to expand file-level details.

Over-Commented Block273 hits · 266 pts
SeverityFileLineSnippet
LOWfrontend/rust-lib/flowy-ai/tests/complete_test/mod.rs301// "**[Improved]**\nBracketed tag format.\n\n",
LOWfrontend/rust-lib/flowy-ai/src/ai_manager.rs581 self.chats.insert(*chat_id, chat.clone());
LOWfrontend/rust-lib/flowy-ai/src/local_ai/controller.rs361 Ok(enabled)
LOWfrontend/rust-lib/flowy-ai/src/local_ai/controller.rs381 //
LOWfrontend/rust-lib/flowy-ai/src/local_ai/controller.rs401 // self
LOW…event-integration-test/tests/chat/chat_message_test.rs141// user_localhost_af_cloud().await;
LOW…event-integration-test/tests/chat/chat_message_test.rs161// assert_eq!(all.messages[0].author_type, 3);
LOW…event-integration-test/tests/folder/local_test/test.rs1use event_integration_test::event_builder::EventBuilder;
LOW…event-integration-test/tests/folder/local_test/test.rs21//
LOW…event-integration-test/tests/folder/local_test/test.rs281 // - view1-1-1
LOW…tests/user/af_cloud_test/import_af_data_folder_test.rs121 // General
LOW…tests/user/af_cloud_test/import_af_data_folder_test.rs341 // .get_collab_doc_state(&doc_1.id, CollabType::Document)
LOW…ration-test/tests/document/local_test/snapshot_test.rs21 assert_eq!(snapshot_metas.len(), 1);
LOW…ration-test/tests/document/local_test/snapshot_test.rs41// tokio::time::sleep(Duration::from_secs(1)).await;
LOW…/rust-lib/lib-infra/tests/task_test/task_order_test.rs101// let mut tasks = vec![];
LOW…/rust-lib/build-tool/flowy-derive/src/proto_buf/mod.rs61//
LOW…rust-lib/build-tool/flowy-derive/src/dart_event/mod.rs1use proc_macro2::TokenStream;
LOW…rust-lib/build-tool/flowy-derive/src/dart_event/mod.rs21//
LOW…-lib/build-tool/flowy-codegen/src/protobuf_file/mod.rs81// // 1. generate the proto files to proto_file_dir
LOW…-lib/build-tool/flowy-codegen/src/protobuf_file/mod.rs101// .filter_map(|e| e.ok())
LOW…-lib/build-tool/flowy-codegen/src/protobuf_file/mod.rs121// &proto_file_output_path,
LOWfrontend/rust-lib/flowy-database2/build.rs1fn main() {
LOWfrontend/rust-lib/flowy-database2/src/event_map.rs101 .event(DatabaseEvent::GetDatabaseCustomPrompts, get_database_custom_prompts_handler)
LOWfrontend/rust-lib/flowy-database2/src/event_map.rs141 #[event(input = "DatabaseViewIdPB")]
LOWfrontend/rust-lib/flowy-database2/src/event_map.rs161 /// FieldTypeOption class.
LOWfrontend/rust-lib/flowy-database2/src/event_map.rs181 /// [UpdateFieldType] event is used to update the current Field's type.
LOWfrontend/rust-lib/flowy-database2/src/event_map.rs201
LOWfrontend/rust-lib/flowy-database2/src/event_map.rs261 ///
LOW…wy-database2/src/services/database/database_observe.rs181 // Imagine the current state of rows is:
LOW…/rust-lib/flowy-database2/src/services/group/action.rs101 async fn load_group_data(&mut self) -> FlowyResult<()>;
LOW…/rust-lib/flowy-database2/src/services/group/action.rs121 /// Returns a new type option data for the grouping field if it's altered.
LOW…/rust-lib/flowy-database2/src/services/group/action.rs141 fn did_create_row(&mut self, row: &Row, index: usize) -> Vec<GroupRowsNotificationPB>;
LOW…/rust-lib/flowy-database2/src/services/group/action.rs161 /// Returns a the removed group when this occurs.
LOW…ib/flowy-database2/src/services/group/configuration.rs221 /// Reset the memory cache of the groups and update the group configuration
LOW…ib/flowy-database2/src/services/group/group_builder.rs41 pub to_group_id: &'a str,
LOW…e2/src/services/field/type_options/type_option_cell.rs61 /// This function is designed to handle the comparison of cells that might not be initialized. The cells are
LOW…tabase2/src/services/field/type_options/type_option.rs61 /// Otherwise, providing a custom protobuf type as its `CellProtobufType`.
LOW…tabase2/src/services/field/type_options/type_option.rs81 &self,
LOW…ces/field/type_options/date_type_option/date_filter.rs421 }
LOW…ces/field/type_options/date_type_option/date_filter.rs441 // Some(1728889260),
LOW…ces/field/type_options/date_type_option/date_filter.rs461 // false,
LOW…ces/field/type_options/date_type_option/date_filter.rs481 // ),
LOW…ces/field/type_options/date_type_option/date_filter.rs501 // Some(1728986400),
LOW…ces/field/type_options/date_type_option/date_filter.rs521 // true,
LOW…ces/field/type_options/date_type_option/date_filter.rs541 // ),
LOW…ces/field/type_options/date_type_option/date_filter.rs561 // Some(1729094400),
LOW…ces/field/type_options/date_type_option/date_filter.rs581 // false,
LOW…ces/field/type_options/date_type_option/date_filter.rs601 // );
LOW…ib/flowy-database2/src/services/cell/cell_operation.rs21
LOW…ib/flowy-database2/src/services/cell/cell_operation.rs61 /// Applies a changeset to a given cell, returning the new `Cell` and
LOWfrontend/rust-lib/flowy-user-pub/src/cloud.rs61
LOWfrontend/rust-lib/flowy-user-pub/src/cloud.rs101 /// Sets the encryption secret for secure communication.
LOWfrontend/rust-lib/flowy-server/src/server.rs81 /// # Arguments
LOWfrontend/rust-lib/flowy-server/src/server.rs101 fn folder_service(&self) -> Arc<dyn FolderCloudService>;
LOWfrontend/rust-lib/flowy-server/src/local_server/util.rs21 CollabType::Database => default_database_data(object_id).await.map_err(Into::into),
LOWfrontend/rust-lib/flowy-document/src/event_handler.rs341
LOWfrontend/rust-lib/flowy-document/src/event_handler.rs361/// length: 5,
LOW…d/rust-lib/flowy-document/src/parser/external/utils.rs441// input <a href="https://www.google.com">Google</a>
LOWfrontend/rust-lib/flowy-storage-pub/src/cloud.rs21 ///
LOWfrontend/rust-lib/flowy-folder/src/manager.rs881 items: favorite_descendant_views,
213 more matches not shown…
Cross-File Repetition9 hits · 45 pts
SeverityFileLineSnippet
HIGH…test/document/text_robot/markdown_text_robot_test.dart0the introduction of the world wide web in the early 1990s marked a turning point.
HIGH…test/document/text_robot/markdown_text_robot_test.dart0the introduction of the world wide web in the early 1990s marked a turning point.
HIGH…test/document/text_robot/markdown_text_robot_test.dart0the introduction of the world wide web in the early 1990s marked a turning point.
HIGH…test/document/text_robot/markdown_text_robot_test.dart0tim berners-lee's invention made the internet accessible to non-technical users, opening the floodgates for mass adoptio
HIGH…test/document/text_robot/markdown_text_robot_test.dart0tim berners-lee's invention made the internet accessible to non-technical users, opening the floodgates for mass adoptio
HIGH…test/document/text_robot/markdown_text_robot_test.dart0tim berners-lee's invention made the internet accessible to non-technical users, opening the floodgates for mass adoptio
HIGH…test/document/text_robot/markdown_text_robot_test.dart0email became widespread, and instant messaging services like icq and aol instant messenger gained popularity, allowing f
HIGH…test/document/text_robot/markdown_text_robot_test.dart0email became widespread, and instant messaging services like icq and aol instant messenger gained popularity, allowing f
HIGH…test/document/text_robot/markdown_text_robot_test.dart0email became widespread, and instant messaging services like icq and aol instant messenger gained popularity, allowing f
Decorative Section Separators8 hits · 36 pts
SeverityFileLineSnippet
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart80/// ┌─────┐┌─┐┌─┐
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart83/// └─────┘└────┘
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart86/// ┌─────┐┌────┐
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart89/// └─────┘└────┘
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart92/// ┌─────┐┌─────┐
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart94/// └─────┘└─────┘
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart97/// ┌──────────┐
MEDIUM…i_image_block_component/layouts/image_grid_layout.dart99/// └──────────┘
Self-Referential Comments7 hits · 21 pts
SeverityFileLineSnippet
MEDIUMfrontend/scripts/white_label/font_white_label.sh124 # Create a backup of the original file
MEDIUMfrontend/scripts/white_label/font_white_label.sh173 # Create a backup of the original file
MEDIUMfrontend/scripts/white_label/i18n_white_label.sh66 # Create a temporary file for the transformation
MEDIUMfrontend/scripts/tool/update_local_ai_rev.sh17 # Define the crates to update
MEDIUM…ppflowy_flutter/packages/appflowy_backend/pubspec.yaml31# The following section is specific to Flutter.
MEDIUM…flutter/packages/appflowy_backend/example/pubspec.yaml37# The following section is specific to Flutter.
MEDIUM…flutter/packages/appflowy_popover/example/pubspec.yaml53# The following section is specific to Flutter packages.
Redundant / Tautological Comments9 hits · 14 pts
SeverityFileLineSnippet
LOWfrontend/scripts/white_label/font_white_label.sh55# Check if source directory exists
LOWfrontend/scripts/white_label/i18n_white_label.sh55 # Check if directory exists and has JSON files
LOWfrontend/scripts/white_label/i18n_white_label.sh68 # Check if transformation was successful
LOWfrontend/scripts/install_dev_env/install_linux.sh41# Check if the current version is 3.27.4
LOWfrontend/scripts/install_dev_env/install_macos.sh44# Check if the current version is 3.27.4
LOWfrontend/scripts/install_dev_env/install_windows.sh51# Check if the current version is 3.27.4
LOWfrontend/scripts/install_dev_env/install_ios.sh47# Check if the current version is 3.27.4
LOW…nd/scripts/code_generation/freezed/generate_freezed.sh58 # Check if the pubspec.yaml file exists and contains the freezed dependency
LOWfrontend/scripts/tool/update_collab_source.sh30# Check if AppFlowy-Collab directory exists
AI Slop Vocabulary5 hits · 13 pts
SeverityFileLineSnippet
MEDIUMfrontend/rust-lib/flowy-ai/src/local_ai/prompt/mod.rs4pub const OPEN_AI_QA_FLEX_FORMAT: &str = r#"Use Markdown for formatting. Start responses naturally—avoid formal phrases
MEDIUMfrontend/rust-lib/flowy-ai/src/local_ai/prompt/mod.rs6const OPEN_AI_QA_PARAGRAPH_FORMAT: &str = r#"Respond naturally in one paragraph. Avoid formal phrases like “Certainly,”
MEDIUM…tion_test/desktop/document/document_deletion_test.dart22 // we utilize the same helper functions there.
MEDIUM…ntend/appflowy_flutter/lib/shared/clipboard_state.dart5/// Essentially for document in-app json paste, we need to be able
MEDIUM…flutter/lib/shared/popup_menu/appflowy_popup_menu.dart1324 /// and the button will utilize an [InkWell] for taps.
Slop Phrases5 hits · 12 pts
SeverityFileLineSnippet
LOWfrontend/Makefile.toml34# If you update the macOS's CRATE_TYPE, don't forget to update the
LOWfrontend/Makefile.toml34# If you update the macOS's CRATE_TYPE, don't forget to update the
MEDIUMfrontend/scripts/makefile/tests.toml1# If you want to test a single file with single case, you can try this command:
MEDIUM…flutter/packages/appflowy_backend/example/pubspec.yaml41 # included with your application, so that you can use the icons in
MEDIUM…flutter/packages/appflowy_popover/example/pubspec.yaml56 # included with your application, so that you can use the icons in
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippet
HIGHCHANGELOG.md425- Fixed numbered lists generated by AI to maintain the same index as the input
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippet
LOW…tend/rust-lib/event-integration-test/src/user_event.rs460 std::env::set_var("GOTRUE_ADMIN_EMAIL", "admin@example.com");
LOW…y-server/src/af_cloud/impls/user/cloud_service_impl.rs589 std::env::var("GOTRUE_ADMIN_EMAIL").unwrap_or_else(|_| "admin@example.com".to_string());
LOW…ion_test/desktop/document/document_selection_test.dart29 '''Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the ind
LOW…end/appflowy_flutter/integration_test/shared/base.dart79 rustEnvs["GOTRUE_ADMIN_EMAIL"] = "admin@example.com";
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippet
LOW…space/presentation/settings/pages/fix_data_widget.dart36class WorkspaceDataManager {