Repository Analysis

NodeBB/NodeBB

Node.js based forum software built for the modern web

0.4 Likely human-written View on GitHub
0.4
Adjusted Score
0.4
Raw Score
100%
Time Factor
2026-05-30
Last Push
15,101
Stars
JavaScript
Language
374,620
Lines of Code
5394
Files
101
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 5HIGH 0MEDIUM 1LOW 95

Pattern Findings

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

Hyper-Verbose Identifiers53 hits · 54 pts
SeverityFileLineSnippet
LOWpublic/src/modules/helpers.common.js122 function generateCategoryBackground(category) {
LOWpublic/src/modules/helpers.common.js147 function generateChildrenCategories(category) {
LOWpublic/src/modules/navigator.js183 async function updateThumbTimestampToIndex(thumb, index) {
LOWpublic/src/modules/chat.js465 function makeModalResizeableDraggable(chatModal, uuid) {
LOWpublic/src/modules/notifications.js128 function scrollToPostIndexIfOnPage(notifEl) {
LOWpublic/src/modules/messages.js28 function hideAlertAndGotoEditEmail() {
LOWpublic/src/client/post-queue.js32 function replaceRelativeUploadPath(url) {
LOWpublic/src/client/category.js99 function handleLoadMoreSubcategories() {
LOWpublic/src/client/groups/memberlist.js109 function handleMemberInfiniteScroll() {
LOWpublic/src/client/groups/details.js299 function updatePendingAlertVisibility() {
LOWpublic/src/client/groups/details.js306 function updateInviteAlertVisibility() {
LOWpublic/src/client/topic/events.js68 function updatePostVotesAndUserReputation(data) {
LOWpublic/src/client/topic/posts.js57 function updateNavigatorLastPostTimestamp(post) {
LOWpublic/src/client/topic/posts.js429 function hidePostToolsForDeletedPosts(posts) {
LOWpublic/src/client/account/settings.js229 function handleNotificationToggles() {
LOWsrc/flags.js1028async function mergeUsernameEmailChanges(history, targetUid, uids) {
LOWsrc/install.js413async function createGlobalModeratorsGroup() {
LOWsrc/notifications.js28function getOrCreateCache() {
LOWsrc/middleware/user.js314 async function requiresEmailConfirmation(req) {
LOWsrc/middleware/render.js150 async function loadClientHeaderFooterData(req, res, options) {
LOWsrc/middleware/render.js255 async function loadAdminHeaderFooterData(req, res, options) {
LOWsrc/database/index.js40function promisifySessionStoreMethod(method, sid) {
LOWsrc/database/mongo/sorted.js382 async function getSortedSetsMembersWithScores(keys, withScores) {
LOWsrc/posts/delete.js97 async function deleteFromTopicUserNotification(postData) {
LOWsrc/posts/delete.js169 async function deleteFromCategoryRecentPosts(postData) {
LOWsrc/user/posts.js152 async function incrementUserFieldAndSetBy(uid, field, set, value) {
LOWsrc/user/auth.js112 async function revokeSessionsAboveThreshold(activeSids, uid) {
LOWsrc/user/delete.js185 async function deleteUserFromFollowedTopics(uid) {
LOWsrc/user/delete.js190 async function deleteUserFromIgnoredTopics(uid) {
LOWsrc/user/delete.js195 async function deleteUserFromFollowedTags(uid) {
LOWsrc/user/picture.js212 function generateProfileImageFilename(uid, extension) {
LOWsrc/user/picture.js262 async function getPicturePathFromUserField(uid, field) {
LOWsrc/user/approval.js144 async function getRegistrationQueuedMessage() {
LOWsrc/groups/invite.js83 async function inviteOrRequestMembership(groupName, uids, type) {
LOWsrc/groups/delete.js52 async function removeGroupsFromPrivilegeGroups(groupNames) {
LOWsrc/cli/package-install.js96function getPackageManagerByLockfile() {
LOWsrc/privileges/helpers.js126async function isSystemGroupAllowedToCids(privilege, uid, cids) {
LOWsrc/privileges/helpers.js131async function isSystemGroupAllowedToPrivileges(privileges, uid, cid) {
LOWsrc/socket.io/admin/categories.js21async function copyPrivilegesToChildrenRecursive(parentCid, category, group, filter) {
LOWsrc/api/users.js506async function isPrivilegedOrSelfAndPasswordMatch(caller, data) {
LOWsrc/controllers/search.js207async function buildSelectedCategoryLabel(selectedCids) {
LOWsrc/controllers/admin/admins-mods.js47async function getModeratorsOfCategories(categoryData) {
LOWsrc/categories/create.js134 async function duplicateCategoriesChildren(parentCid, cid, uid) {
LOWsrc/routes/feeds.js41async function validateTokenIfRequiresLogin(requiresLogin, cid, req, res) {
LOWsrc/routes/feeds.js330async function generateForCategoryRecentPosts(req, res) {
LOWsrc/topics/unread.js241 async function filterTidsThatHaveBlockedPosts(params) {
LOWsrc/topics/unread.js258 async function doesTidHaveUnblockedUnreadPosts(tid, params) {
LOWsrc/topics/posts.js322 async function incrementFieldAndUpdateSortedSet(tid, field, by, set) {
LOWsrc/topics/delete.js151 async function deleteFromFollowersIgnorers(tids) {
LOWsrc/topics/delete.js192 async function deleteTopicsFromCategoryAndUser(topicsData) {
LOWsrc/topics/index.js234function mergeConsecutiveShareEvents(arr) {
LOWsrc/topics/sorted.js135 async function getTidsWithMostPostsInTerm({ cids, uid, term, includeRemote }) {
LOWsrc/topics/teaser.js114 async function getPreviousNonBlockedPost(postData, blockedUids) {
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippet
CRITICALpublic/src/ajaxify.js312 ajaxify.data._header.tags.meta.forEach(async (tagObj) => {
CRITICALpublic/src/ajaxify.js333 ajaxify.data._header.tags.link.forEach(async (tagObj) => {
CRITICALpublic/src/admin/manage/privileges.js418 const privilegeSet = ajaxify.data.privileges.keys.groups.reduce(function (memo, cur, index) {
CRITICALpublic/src/admin/manage/privileges.js457 const privilegeSet = ajaxify.data.privileges.keys.users.reduce(function (memo, cur, index) {
CRITICALsrc/socket.io/index.js310 const roomMap = Sockets.server.sockets.adapter.rooms.get(room);
Fake / Example Data39 hits · 41 pts
SeverityFileLineSnippet
LOWtest/flags.js1019 note: 'lorem ipsum dolor sit amet',
LOWtest/flags.js1019 note: 'lorem ipsum dolor sit amet',
LOWtest/flags.js1026 assert.strictEqual('lorem ipsum dolor sit amet', response.notes[0].content);
LOWtest/flags.js1026 assert.strictEqual('lorem ipsum dolor sit amet', response.notes[0].content);
LOWtest/user.js198 username: 'Jane Doe',
LOWtest/user.js208 username: 'Jane Doe',
LOWtest/user.js290 content: 'lorem ipsum',
LOWtest/user.js307 content: 'lorem ipsum',
LOWtest/user.js324 content: 'lorem ipsum',
LOWtest/user.js2177 User.deleteInvitation('doesnotexist', 'test@test.com', (err) => {
LOWtest/user.js2538 content: 'lorem ipsum',
LOWtest/translator.js323 Translator.removePatterns('Lorem ipsum dolor [[sit:amet]], consectetur adipiscing elit. [[sed:vitae, [[semper:dolor]
LOWtest/translator.js324 'Lorem ipsum dolor , consectetur adipiscing elit. lorem'
LOWtest/activitypub.js385 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub.js385 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/notes.js250 content: 'Guaranteed to be more than 500 characters.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. I
LOWtest/activitypub/notes.js250 content: 'Guaranteed to be more than 500 characters.\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. I
LOWtest/activitypub/actors.js606 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js606 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js639 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js639 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js677 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js677 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js708 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/actors.js708 content: 'Lorem ipsum dolor sit amet',
LOWtest/activitypub/mocks.js37 content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js37 content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js53 content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js53 content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js78 assert.strictEqual(this.withBreak.summary, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js78 assert.strictEqual(this.withBreak.summary, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js101 assert.strictEqual(mocked.summary, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js101 assert.strictEqual(mocked.summary, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\
LOWtest/activitypub/mocks.js123 assert.strictEqual(mocked.summary, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. [...]');
LOWtest/activitypub/mocks.js123 assert.strictEqual(mocked.summary, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. [...]');
LOWtest/activitypub/mocks.js148 content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
LOWtest/activitypub/mocks.js148 content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' +
LOWpublic/openapi/write/categories.yaml40 example: Lorem ipsum, dolor sit amet
LOWpublic/openapi/write/categories.yaml40 example: Lorem ipsum, dolor sit amet
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMinstall/docker/entrypoint.sh178 # Create a local array to work with
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippet
LOWinstall/docker/entrypoint.sh56 # Check if source and destination files are the same
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippet
LOWpublic/scss/overrides.scss1// global bs5 overrides if necessary
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippet
LOWpublic/src/client/topic/postTools.js376 function getData(button, data) {