Repository Analysis

tw93/Mole

🐹 Clean, uninstall, analyze, optimize, and monitor your Mac from the terminal.

6.0 Low AI signal View on GitHub
6.0
Adjusted Score
6.0
Raw Score
100%
Time Factor
2026-05-30
Last Push
53,877
Stars
Shell
Language
47,424
Lines of Code
134
Files
134
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 64LOW 70

Pattern Findings

134 matches across 5 categories. Click a row to expand file-level details.

Decorative Section Separators62 hits · 183 pts
SeverityFileLineSnippet
MEDIUMscripts/setup-quick-launchers.sh73# ──────────────────────────────────────────────────────────
MEDIUMscripts/setup-quick-launchers.sh75# ──────────────────────────────────────────────────────────
MEDIUMlib/core/base.sh790# ============================================================================
MEDIUMlib/core/base.sh792# ============================================================================
MEDIUMlib/core/base.sh13# ============================================================================
MEDIUMlib/core/base.sh16# ============================================================================
MEDIUMlib/core/base.sh41# ============================================================================
MEDIUMlib/core/base.sh43# ============================================================================
MEDIUMlib/core/base.sh60# ============================================================================
MEDIUMlib/core/base.sh62# ============================================================================
MEDIUMlib/core/base.sh81# ============================================================================
MEDIUMlib/core/base.sh83# ============================================================================
MEDIUMlib/core/base.sh100# ============================================================================
MEDIUMlib/core/base.sh102# ============================================================================
MEDIUMlib/core/base.sh133# ============================================================================
MEDIUMlib/core/base.sh135# ============================================================================
MEDIUMlib/core/base.sh186# ============================================================================
MEDIUMlib/core/base.sh188# ============================================================================
MEDIUMlib/core/base.sh237# ============================================================================
MEDIUMlib/core/base.sh239# ============================================================================
MEDIUMlib/core/base.sh413# ============================================================================
MEDIUMlib/core/base.sh415# ============================================================================
MEDIUMlib/core/base.sh499# ============================================================================
MEDIUMlib/core/base.sh501# ============================================================================
MEDIUMlib/core/base.sh650# ============================================================================
MEDIUMlib/core/base.sh652# ============================================================================
MEDIUMlib/core/log.sh20# ============================================================================
MEDIUMlib/core/log.sh22# ============================================================================
MEDIUMlib/core/log.sh36# ============================================================================
MEDIUMlib/core/log.sh38# ============================================================================
MEDIUMlib/core/log.sh86# ============================================================================
MEDIUMlib/core/log.sh88# ============================================================================
MEDIUMlib/core/log.sh175# ============================================================================
MEDIUMlib/core/log.sh177# ============================================================================
MEDIUMlib/core/log.sh370# ============================================================================
MEDIUMlib/core/log.sh372# ============================================================================
MEDIUMlib/core/log.sh417# ============================================================================
MEDIUMlib/core/log.sh419# ============================================================================
MEDIUMlib/core/sudo.sh7# ============================================================================
MEDIUMlib/core/sudo.sh9# ============================================================================
MEDIUMlib/core/sudo.sh201# ============================================================================
MEDIUMlib/core/sudo.sh203# ============================================================================
MEDIUMlib/core/file_ops.sh33# ============================================================================
MEDIUMlib/core/file_ops.sh35# ============================================================================
MEDIUMlib/core/file_ops.sh62# ============================================================================
MEDIUMlib/core/file_ops.sh64# ============================================================================
MEDIUMlib/core/file_ops.sh212# ============================================================================
MEDIUMlib/core/file_ops.sh214# ============================================================================
MEDIUMlib/core/file_ops.sh464# ============================================================================
MEDIUMlib/core/file_ops.sh466# ============================================================================
MEDIUMlib/core/file_ops.sh808# ============================================================================
MEDIUMlib/core/file_ops.sh810# ============================================================================
MEDIUMlib/core/file_ops.sh916# ============================================================================
MEDIUMlib/core/file_ops.sh918# ============================================================================
MEDIUMlib/core/timeout.sh13# ============================================================================
MEDIUMlib/core/timeout.sh15# ============================================================================
MEDIUMlib/core/timeout.sh66# ============================================================================
MEDIUMlib/core/timeout.sh68# ============================================================================
MEDIUMlib/core/timeout.sh192 # ========================================================================
MEDIUMlib/core/timeout.sh194 # ========================================================================
2 more matches not shown…
Redundant / Tautological Comments49 hits · 74 pts
SeverityFileLineSnippet
LOWbin/touchid.sh30# Check if Touch ID is already configured
LOWbin/touchid.sh44# Check if system supports Touch ID
LOWbin/touchid.sh46 # Check if bioutil exists and has Touch ID capability
LOWbin/touchid.sh107 # Check if we should use sudo_local (Sonoma+)
LOWbin/touchid.sh109 # Check if already correctly configured in sudo_local
LOWbin/touchid.sh125 # Check if configured in sudo (Legacy)
LOWbin/touchid.sh172 # Check if already configured (Legacy)
LOWbin/completion.sh224 # Check if already installed and normalize to latest line
LOWlib/core/base.sh794# Check if terminal supports ANSI escape codes
LOWlib/core/base.sh802 # Check if running in interactive terminal
LOWlib/core/base.sh775 # Check if enough time has elapsed
LOWlib/core/app_protection.sh47# Check if bundle ID matches pattern (glob support)
LOWlib/core/app_protection.sh98# Check if application is a protected system component
LOWlib/core/app_protection.sh151# Check if application data should be protected during cleanup
LOWlib/core/app_protection.sh223# Check if a path is protected from deletion
LOWlib/core/app_protection.sh415# Check if a path is protected by whitelist patterns
LOWlib/core/app_protection.sh460 # Check if target is a parent directory of a whitelisted path
LOWlib/core/app_protection.sh467 # Check if target is a child of a whitelisted directory path
LOWlib/core/app_protection.sh1033 # Output results
LOWlib/core/app_protection.sh1385 # Check if process is running using exact match only
LOWlib/core/ui.sh450# Check if terminal has Full Disk Access
LOWlib/core/sudo.sh33 # Check if lid is closed; ignore pipeline failures so set -e doesn't exit
LOWlib/core/sudo.sh77 # Check if already have sudo access
LOWlib/core/sudo.sh121 # Check if in clamshell mode - if yes, skip Touch ID entirely
LOWlib/core/sudo.sh247# Check if sudo session is active
LOWlib/core/sudo.sh276 # Check if already established
LOWlib/core/file_ops.sh199 # Check if path is protected (keychains, system settings, etc)
LOWlib/core/file_ops.sh230 # Check if path exists
LOWlib/core/file_ops.sh303 # Check if it's a permission error
LOWlib/core/timeout.sh212 # Check if process still exists
LOWlib/core/timeout.sh260 # Check if command was killed by timeout (exit codes 143=SIGTERM, 137=SIGKILL)
LOWlib/optimize/tasks.sh360 # Check if database has any entries worth cleaning.
LOWlib/optimize/tasks.sh958 # Check if periodic command exists (removed in macOS 26+)
LOWlib/optimize/tasks.sh1238# Check if a login item name corresponds to an installed app.
LOWlib/clean/dev.sh170 # Check if pnpm is actually usable (not just Corepack shim)
LOWlib/clean/dev.sh881 # Check if simctl is accessible and working; timeout prevents hang when CLT-only.
LOWlib/clean/project.sh36# Check if a directory contains projects (directly or in subdirectories).
LOWlib/clean/project.sh334 # Check if parent directory has a .csproj/.fsproj/.vbproj file
LOWlib/clean/project.sh339 # Check if bin directory contains Debug/ or Release/ subdirectories
LOWlib/clean/project.sh345# Check if a vendor directory should be protected from purge
LOWlib/clean/project.sh376# Check if an artifact should be protected from purge
LOWlib/clean/project.sh446 # Check if we should abort (scanning file removed by Ctrl+C)
LOWlib/clean/project.sh581# Check if a path was modified recently (safety check).
LOWlib/clean/project.sh1309 # Check if there are other items with same artifact name AND same project
LOWlib/clean/brew.sh8 # Check if Homebrew cache is whitelisted
LOWlib/uninstall/brew.sh32# Check if Homebrew is installed and accessible
LOWlib/uninstall/brew.sh60 # Check if path is inside Caskroom. Quote literals so Homebrew bottle
LOWlib/uninstall/batch.sh490 # Check if sudo is needed
LOWlib/manage/purge_paths.sh66 # Check if using custom config
Over-Commented Block20 hits · 20 pts
SeverityFileLineSnippet
LOWcmd/analyze/scanner.go41 // inside calculateDirSizeConcurrent. Independent of entrySem because a
LOWcmd/analyze/insights.go141 return total, nil
LOWbin/uninstall.sh821 rm -f "$deduped_file" 2> /dev/null || true
LOWscripts/audit_bundle_drift.sh1#!/bin/bash
LOWscripts/setup-quick-launchers.sh61#!/bin/bash
LOWlib/core/base.sh661# fallback wording, dry-run export behavior). Before changing any of them,
LOWlib/core/app_protection.sh601}
LOWlib/core/bundle_resolver.sh21
LOWlib/core/timeouts.sh1#!/bin/bash
LOWlib/core/timeouts.sh21# DISK_VERIFY Filesystem-level verify/repair operations. ~30s.
LOWlib/core/app_protection_data.sh561 "com.quicken.*"
LOWlib/core/file_ops.sh461 esac
LOWlib/core/file_ops.sh921#
LOWlib/core/timeout.sh1#!/bin/bash
LOWlib/core/timeout.sh21# brew install coreutils
LOWlib/core/timeout.sh61 export MO_TIMEOUT_BIN
LOWlib/core/timeout.sh81# MO_DEBUG - Set to 1 to enable debug logging to stderr
LOWlib/optimize/tasks.sh121 # Hotspot). Bare interface presence therefore over-reports active VPNs and
LOWlib/clean/apps.sh441 # Force-protect list: if a plist's bundle ID matches one of these patterns AND
LOWlib/clean/apps.sh761# ============================================================================
AI Slop Vocabulary2 hits · 4 pts
SeverityFileLineSnippet
LOWlib/core/ui.sh96 # we cannot just use the total width formula on the whole string.
MEDIUMlib/core/sudo.sh264 # Use the robust implementation from common.sh
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMbin/touchid.sh134 # Create the file