Repository Analysis

halo-dev/halo

Halo 是一款强大易用的开源建站工具,从个人博客、知识库,到企业官网、在线商城,Halo 都能助您轻松实现,一站式满足您的多样化建站需求。

1.0 Likely human-written View on GitHub
1.0
Adjusted Score
1.0
Raw Score
100%
Time Factor
2026-05-29
Last Push
38,825
Stars
Java
Language
346,548
Lines of Code
2637
Files
93
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 23HIGH 1MEDIUM 0LOW 69

Pattern Findings

93 matches across 7 categories. Click a row to expand file-level details.

Hallucination Indicators23 hits · 255 pts
SeverityFileLineSnippet
CRITICAL…ackages/editor/src/extensions/figure/figure-caption.ts97 const paragraph = tr.doc.type.schema.nodes.paragraph.create();
CRITICALui/packages/editor/src/extensions/figure/index.ts118 const paragraph = tr.doc.type.schema.nodes.paragraph.create();
CRITICALui/packages/editor/src/extensions/format-brush/index.ts71 this.editor.view.dom.classList.add("format-brush-mode");
CRITICALui/packages/editor/src/extensions/format-brush/index.ts77 this.editor.view.dom.classList.remove("format-brush-mode");
CRITICAL…/src/main/java/run/halo/app/extension/Comparators.java33 ? org.springframework.util.comparator.Comparators.nullsHigh()
CRITICAL…/src/main/java/run/halo/app/extension/Comparators.java34 : org.springframework.util.comparator.Comparators.nullsLow();
CRITICAL…lo/app/core/reconciler/SystemConfigReconcilerTest.java117 var existingChecksum = com.google.common.hash.Hashing.sha256()
CRITICAL…tension/router/ExtensionRouterFunctionFactoryTest.java65 com.fasterxml.jackson.databind.json.JsonMapper.builder().build()))
CRITICAL…tension/router/ExtensionRouterFunctionFactoryTest.java131 com.fasterxml.jackson.databind.json.JsonMapper.builder().build();
CRITICAL…un/halo/app/security/DefaultUserDetailServiceTest.java43 var user = new run.halo.app.core.extension.User();
CRITICAL…un/halo/app/security/DefaultUserDetailServiceTest.java238 var userSpec = new run.halo.app.core.extension.User.UserSpec();
CRITICAL…un/halo/app/security/DefaultUserDetailServiceTest.java241 var user = new run.halo.app.core.extension.User();
CRITICAL…n/halo/app/theme/dialect/HaloProcessorDialectTest.java281 when(systemVersionSupplier.get()).thenReturn(com.github.zafarkhaja.semver.Version.parse("2.24.2"));
CRITICAL…n/halo/app/theme/dialect/HaloProcessorDialectTest.java290 when(systemVersionSupplier.get()).thenReturn(com.github.zafarkhaja.semver.Version.parse("2.23.0"));
CRITICAL…n/halo/app/theme/dialect/HaloProcessorDialectTest.java299 when(systemVersionSupplier.get()).thenReturn(com.github.zafarkhaja.semver.Version.parse("2.24.2"));
CRITICAL…n/halo/app/theme/dialect/HaloProcessorDialectTest.java308 when(systemVersionSupplier.get()).thenReturn(com.github.zafarkhaja.semver.Version.parse("0.0.0"));
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java42 new io.swagger.v3.oas.models.media.ObjectSchema()
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java50 new io.swagger.v3.oas.models.media.ObjectSchema()
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java58 new io.swagger.v3.oas.models.media.ObjectSchema()
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java66 new io.swagger.v3.oas.models.media.ObjectSchema()
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java71 new io.swagger.v3.oas.models.media.ObjectSchema()
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java81 new io.swagger.v3.oas.models.media.ObjectSchema()
CRITICAL…main/java/run/halo/app/extension/router/JsonPatch.java91 new io.swagger.v3.oas.models.media.ArraySchema()
Hyper-Verbose Identifiers46 hits · 46 pts
SeverityFileLineSnippet
LOWui/uc-src/modules/contents/posts/PostEditor.vue257async function handleSetEditorProviderFromRemote() {
LOWui/uc-src/modules/contents/posts/PostEditor.vue455async function handleOpenPostSettingEditModal() {
LOWui/uc-src/modules/notifications/Notifications.vue209function handleDeleteNotifications() {
LOW…ges/components/src/components/dialog/dialog-manager.ts25function getOrCreateContainer() {
LOWui/packages/ui-plugin-bundler-kit/src/rsbuild.ts28function createRsbuildPresetsConfig(manifestPath: string) {
LOWui/packages/editor/src/composables/use-attachment.ts7export function useExternalAssetsTransfer(
LOWui/packages/editor/src/utils/upload.ts163export function containsFileClipboardIdentifier(types: readonly string[]) {
LOWui/packages/editor/src/extensions/paragraph/index.ts125export function deleteCurrentNodeAndSetSelection(
LOWui/packages/editor/src/extensions/gap-cursor/index.ts347function createParagraphNearByGapCursor(
LOWui/packages/editor/src/components/EditorHeader.vue14function getToolbarItemsFromExtensions() {
LOWui/packages/editor/src/components/EditorHeader.vue37function getToolboxItemsFromExtensions() {
LOW…ts/composables/use-content-provider-extension-point.ts7export function useContentProviderExtensionPoint() {
LOW…modules/contents/comments/components/ReplyListItem.vue134function onReplyCreationModalClose() {
LOWui/console-src/modules/contents/posts/PostList.vue345function handleOpenBatchSettingModal() {
LOW…e-src/modules/contents/posts/categories/utils/index.ts69export function resetCategoriesTreePriority(
LOW…e-src/modules/contents/posts/categories/utils/index.ts116export function convertCategoryTreeToCategory(
LOW…ontents/posts/categories/utils/__tests__/index.spec.ts40function createMockCategoryTreeNode(
LOW…tents/attachments/composables/use-attachment-policy.ts42export function useFetchAttachmentPolicyTemplate() {
LOW…ntents/attachments/components/AttachmentGroupBadge.vue99async function fetchAllAttachmentsByGroupName(groupName: string) {
LOWui/console-src/modules/interface/menus/Menus.vue230function getMenuItemRefDisplayName(menuItem: MenuTreeItem) {
LOWui/console-src/modules/interface/menus/utils/index.ts79export function resetMenuItemsTreePriority(
LOWui/console-src/modules/interface/menus/utils/index.ts128 function getChildrenNamesRecursive(menuTreeItem: MenuTreeItem) {
LOWui/console-src/modules/interface/menus/utils/index.ts147export function convertMenuTreeItemToMenuItem(
LOW…s/dashboard/composables/use-dashboard-widgets-fetch.ts48export function useDashboardWidgetsViewFetch(breakpoint: Ref<string>) {
LOW…dashboard/composables/use-dashboard-extension-point.ts7export function useDashboardExtensionPoint() {
LOW…les/dashboard/widgets/presets/comments/CommentItem.vue30function onCommentDetailModalClose() {
LOW…ck-action/composables/use-dashboard-extension-point.ts8export function useDashboardQuickActionExtensionPoint() {
LOW…dashboard/widgets/presets/users/NotificationWidget.vue40function handleRouteToNotification(notification: Notification) {
LOW…e-src/modules/system/plugins/composables/use-plugin.ts292 function handleChangeStatusInBatch(enabled: boolean) {
LOW…/plugins/composables/use-extension-definition-fetch.ts10export function useExtensionDefinitionFetch(
LOWui/console-src/modules/system/users/UserDetail.vue133function onPasswordChangeModalClose() {
LOWui/console-src/modules/system/users/UserDetail.vue137function onGrantPermissionModalClose() {
LOWui/console-src/modules/system/users/UserList.vue139function handleEnableOrDisableInBatch(operation: "enable" | "disable") {
LOW…e-src/modules/system/users/components/UserListItem.vue65function onGrantPermissionModalClose() {
LOW…e-src/modules/system/users/components/UserListItem.vue74function onPasswordChangeModalClose() {
LOWui/console-src/router/guards/permission.ts29function isConsoleAccessDisallowed(currentRoles?: Role[]): boolean {
LOWui/src/vite/library-external.ts149function createInjectExternalTagsPlugin(tags: HtmlTagDescriptor[]): Plugin {
LOWui/src/formkit/plugins/stop-implicit-submission.ts74export function setupStopImplicitSubmission(router: Router) {
LOWui/src/formkit/plugins/password-prevent-autocomplete.ts3export default function passwordPreventAutocomplete(node: FormKitNode) {
LOWui/src/formkit/inputs/array/renderers/native-select.ts8export function renderNativeSelectLabelValue({
LOWui/src/formkit/inputs/array/renderers/select.ts103async function findSelectedOptionByRemote(
LOWui/src/formkit/inputs/array/renderers/attachment.ts4export async function renderAttachmentLabelValue({
LOWui/src/formkit/inputs/array/renderers/tag-select.ts9export async function renderTagSelectLabelValue({
LOW…/src/formkit/inputs/array/renderers/category-select.ts9export async function renderCategorySelectLabelValue({
LOWui/src/formkit/inputs/color/ColorInput.vue37function formatColorByUnpredictableValue(value: string) {
LOWapplication/src/main/resources/static/js/main.js158function setupPasswordConfirmation(passwordId, confirmPasswordId) {
Over-Commented Block14 hits · 14 pts
SeverityFileLineSnippet
LOWui/packages/api-client/src/models/post-vo.ts21import type { ContentVo } from './content-vo';
LOWui/packages/editor/env.d.ts1/// <reference types="vite-plus/client" />
LOWhack/cherry_pick_pull.sh1#!/usr/bin/env bash
LOW…ers/impl/CommentPublicQueryServiceIntegrationTest.java221
LOWapplication/src/main/resources/config/uap/regexes.yaml881 # Structurally identical to AtContent (confirmed APT29/Nobelium C2 marker; see
LOWapplication/src/main/resources/config/uap/regexes.yaml901 # (TOKEN/MAJOR.MINOR.BUILD.PATCH). No known legitimate browser uses this token.
LOWapplication/src/main/resources/config/uap/regexes.yaml1341
LOWapplication/src/main/resources/config/uap/regexes.yaml1361 # Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; Sony; KDL32W650A; PKG3.211EUA; 2013;); ) Presto/2.12.362 Version/12.11
LOWapplication/src/main/resources/config/uap/regexes.yaml1501 ##########
LOWapplication/src/main/resources/config/uap/regexes.yaml2001 ##########################
LOWapplication/src/main/resources/config/uap/regexes.yaml2781 # @ref: http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
LOWapplication/src/main/resources/config/uap/regexes.yaml3501 device_replacement: '$1 $2'
LOWapplication/src/main/resources/config/uap/regexes.yaml3921 #########
LOWapplication/src/main/resources/config/uap/regexes.yaml5221 #########
Verbosity Indicators7 hits · 10 pts
SeverityFileLineSnippet
LOWui/uc-src/modules/contents/posts/PostEditor.vue320 // Finally, we need to check if the slug is unique in the database
LOW…/modules/contents/posts/components/PostSettingForm.vue71// Finally, we need to check if the slug is unique in the database
LOWui/console-src/modules/contents/posts/PostEditor.vue196 // Finally, we need to check if the slug is unique in the database
LOW…les/contents/posts/tags/components/TagEditingModal.vue150// Finally, we need to check if the slug is unique in the database
LOW…modules/contents/posts/components/PostSettingModal.vue264// Finally, we need to check if the slug is unique in the database
LOW…s/posts/categories/components/CategoryEditingModal.vue186// Finally, we need to check if the slug is unique in the database
LOW…s/contents/pages/components/SinglePageSettingModal.vue273// Finally, we need to check if the slug is unique in the database
Cross-Language Confusion (JS/TS)1 hit · 8 pts
SeverityFileLineSnippet
HIGHui/packages/api-client/src/configuration.ts115 * @return True if the given MIME is JSON, false otherwise.
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippet
LOW…un/halo/app/theme/dialect/ElementTagPostProcessor.java23 * <p>Don't forget to return the new tag after processing or {@link reactor.core.publisher.Mono#empty()} if not
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippet
LOW…alo/app/security/DefaultSuperAdminInitializerTest.java18 var admin = initializer.createAdmin("admin", "password", "admin@example.com");