aidevops 2.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- package/setup.sh +2366 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
|
|
3
|
+
|
|
4
|
+
# 🔧 SonarCloud Auto-Fix Script
|
|
5
|
+
# Applies fixes for common SonarCloud shell script issues
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Colors for output
|
|
10
|
+
readonly RED='\033[0;31m'
|
|
11
|
+
readonly GREEN='\033[0;32m'
|
|
12
|
+
readonly BLUE='\033[0;34m'
|
|
13
|
+
readonly YELLOW='\033[1;33m'
|
|
14
|
+
readonly PURPLE='\033[0;35m'
|
|
15
|
+
readonly NC='\033[0m'
|
|
16
|
+
|
|
17
|
+
print_header() { local msg="$1"; echo -e "${PURPLE}$msg${NC}"; return 0; }
|
|
18
|
+
print_info() { local msg="$1"; echo -e "${BLUE}$msg${NC}"; return 0; }
|
|
19
|
+
print_success() { local msg="$1"; echo -e "${GREEN}✅ $msg${NC}"; return 0; }
|
|
20
|
+
print_warning() { local msg="$1"; echo -e "${YELLOW}⚠️ $msg${NC}"; return 0; }
|
|
21
|
+
print_error() { local msg="$1"; echo -e "${RED}❌ $msg${NC}"; return 0; }
|
|
22
|
+
|
|
23
|
+
# Fix missing return statements (S7682)
|
|
24
|
+
fix_missing_returns() {
|
|
25
|
+
local file="$1"
|
|
26
|
+
print_info "Adding missing return statements to: $file"
|
|
27
|
+
|
|
28
|
+
# Add return statements to functions that don't have them
|
|
29
|
+
# This is a simplified approach - in practice, you'd need more sophisticated parsing
|
|
30
|
+
|
|
31
|
+
# Backup original file
|
|
32
|
+
cp "$file" "$file.backup"
|
|
33
|
+
|
|
34
|
+
# Add return statements before closing braces of functions
|
|
35
|
+
# This is a basic implementation - would need more sophisticated logic for production
|
|
36
|
+
local temp_file
|
|
37
|
+
temp_file=$(mktemp)
|
|
38
|
+
|
|
39
|
+
awk '
|
|
40
|
+
/^[a-zA-Z_][a-zA-Z0-9_]*\(\)/ { in_function = 1 }
|
|
41
|
+
/^}$/ && in_function {
|
|
42
|
+
print " return 0"
|
|
43
|
+
print $0
|
|
44
|
+
in_function = 0
|
|
45
|
+
next
|
|
46
|
+
return 0
|
|
47
|
+
}
|
|
48
|
+
{ print }
|
|
49
|
+
' "$file" > "$temp_file"
|
|
50
|
+
|
|
51
|
+
mv "$temp_file" "$file"
|
|
52
|
+
print_success "Added return statements to $file"
|
|
53
|
+
return 0
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# Fix positional parameter assignments (S7679)
|
|
57
|
+
fix_positional_parameters() {
|
|
58
|
+
local file="$1"
|
|
59
|
+
print_info "Fixing positional parameter assignments in: $file"
|
|
60
|
+
|
|
61
|
+
# Backup original file
|
|
62
|
+
cp "$file" "$file.backup"
|
|
63
|
+
|
|
64
|
+
# Replace direct $1, $_arg2, etc. usage with local variable assignments
|
|
65
|
+
sed -i.tmp '
|
|
66
|
+
s/echo "\$1"/local param1="$1"; echo "$param1"/g
|
|
67
|
+
s/echo "\$_arg2"/local param2="$_arg2"; echo "$param2"/g
|
|
68
|
+
s/case "\$1"/local command="$1"; case "$command"/g
|
|
69
|
+
s/\[\[ "\$1"/local arg1="$1"; [[ "$arg1"/g
|
|
70
|
+
' "$file"
|
|
71
|
+
|
|
72
|
+
rm -f "$file.tmp"
|
|
73
|
+
print_success "Fixed positional parameters in $file"
|
|
74
|
+
return 0
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
# Add default case to switch statements (S131)
|
|
78
|
+
fix_missing_default_case() {
|
|
79
|
+
local file="$1"
|
|
80
|
+
print_info "Adding default cases to switch statements in: $file"
|
|
81
|
+
|
|
82
|
+
# Backup original file
|
|
83
|
+
cp "$file" "$file.backup"
|
|
84
|
+
|
|
85
|
+
# Add default case before esac if missing
|
|
86
|
+
sed -i.tmp '
|
|
87
|
+
/esac/ {
|
|
88
|
+
i\
|
|
89
|
+
*)\
|
|
90
|
+
print_error "Unknown option: $1"\
|
|
91
|
+
exit 1\
|
|
92
|
+
;;
|
|
93
|
+
}
|
|
94
|
+
' "$file"
|
|
95
|
+
|
|
96
|
+
rm -f "$file.tmp"
|
|
97
|
+
print_success "Added default cases to $file"
|
|
98
|
+
return 0
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Apply all SonarCloud fixes to a file
|
|
102
|
+
apply_sonarcloud_fixes() {
|
|
103
|
+
local file="$1"
|
|
104
|
+
|
|
105
|
+
if [[ ! -f "$file" ]]; then
|
|
106
|
+
print_error "File not found: $file"
|
|
107
|
+
return 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
print_header "Applying SonarCloud fixes to: $file"
|
|
111
|
+
|
|
112
|
+
# Apply fixes based on common SonarCloud issues
|
|
113
|
+
fix_positional_parameters "$file"
|
|
114
|
+
fix_missing_returns "$file"
|
|
115
|
+
|
|
116
|
+
# Check if file has switch statements and fix them
|
|
117
|
+
if grep -q "case.*in" "$file"; then
|
|
118
|
+
fix_missing_default_case "$file"
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
print_success "All SonarCloud fixes applied to $file"
|
|
122
|
+
return 0
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
# Main function
|
|
126
|
+
main() {
|
|
127
|
+
print_header "SonarCloud Auto-Fix Tool"
|
|
128
|
+
|
|
129
|
+
case "${1:-help}" in
|
|
130
|
+
"fix")
|
|
131
|
+
if [[ -z "${2:-}" ]]; then
|
|
132
|
+
print_error "Please specify a file to fix"
|
|
133
|
+
print_info "Usage: $0 fix <file>"
|
|
134
|
+
exit 1
|
|
135
|
+
fi
|
|
136
|
+
apply_sonarcloud_fixes "$_arg2"
|
|
137
|
+
;;
|
|
138
|
+
"fix-all")
|
|
139
|
+
print_info "Applying fixes to all shell scripts with SonarCloud issues..."
|
|
140
|
+
|
|
141
|
+
# Files with known SonarCloud issues
|
|
142
|
+
local files=(
|
|
143
|
+
".agent/scripts/setup-mcp-integrations.sh"
|
|
144
|
+
".agent/scripts/validate-mcp-integrations.sh"
|
|
145
|
+
".agent/scripts/setup-linters-wizard.sh"
|
|
146
|
+
".agent/scripts/setup-wizard-helper.sh"
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
for file in "${files[@]}"; do
|
|
150
|
+
if [[ -f "$file" ]]; then
|
|
151
|
+
apply_sonarcloud_fixes "$file"
|
|
152
|
+
echo
|
|
153
|
+
else
|
|
154
|
+
print_warning "File not found: $file"
|
|
155
|
+
fi
|
|
156
|
+
done
|
|
157
|
+
;;
|
|
158
|
+
"restore")
|
|
159
|
+
if [[ -z "${2:-}" ]]; then
|
|
160
|
+
print_error "Please specify a file to restore"
|
|
161
|
+
print_info "Usage: $0 restore <file>"
|
|
162
|
+
exit 1
|
|
163
|
+
fi
|
|
164
|
+
|
|
165
|
+
local file="$2"
|
|
166
|
+
if [[ -f "$file.backup" ]]; then
|
|
167
|
+
mv "$file.backup" "$file"
|
|
168
|
+
print_success "Restored $file from backup"
|
|
169
|
+
else
|
|
170
|
+
print_error "No backup found for $file"
|
|
171
|
+
exit 1
|
|
172
|
+
fi
|
|
173
|
+
;;
|
|
174
|
+
"help"|*)
|
|
175
|
+
print_header "SonarCloud Auto-Fix Usage"
|
|
176
|
+
echo "Usage: $0 [command] [file]"
|
|
177
|
+
echo ""
|
|
178
|
+
echo "Commands:"
|
|
179
|
+
echo " fix <file> - Apply SonarCloud fixes to specific file"
|
|
180
|
+
echo " fix-all - Apply fixes to all known problematic files"
|
|
181
|
+
echo " restore <file> - Restore file from backup"
|
|
182
|
+
echo " help - Show this help"
|
|
183
|
+
echo ""
|
|
184
|
+
echo "Common SonarCloud Issues Fixed:"
|
|
185
|
+
echo " S7682 - Missing return statements in functions"
|
|
186
|
+
echo " S7679 - Direct positional parameter usage"
|
|
187
|
+
echo " S131 - Missing default case in switch statements"
|
|
188
|
+
;;
|
|
189
|
+
esac
|
|
190
|
+
return 0
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
main "$@"
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
|
|
3
|
+
|
|
4
|
+
# 🔍 SonarCloud Analysis CLI Script
|
|
5
|
+
# Provides local SonarCloud analysis and issue reporting
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Colors for output
|
|
10
|
+
readonly RED='\033[0;31m'
|
|
11
|
+
readonly GREEN='\033[0;32m'
|
|
12
|
+
readonly BLUE='\033[0;34m'
|
|
13
|
+
readonly YELLOW='\033[1;33m'
|
|
14
|
+
readonly PURPLE='\033[0;35m'
|
|
15
|
+
readonly NC='\033[0m'
|
|
16
|
+
|
|
17
|
+
print_header() { local msg="$1"; echo -e "${PURPLE}$msg${NC}"; return 0; }
|
|
18
|
+
print_info() { local msg="$1"; echo -e "${BLUE}$msg${NC}"; return 0; }
|
|
19
|
+
print_success() { local msg="$1"; echo -e "${GREEN}✅ $msg${NC}"; return 0; }
|
|
20
|
+
print_warning() { local msg="$1"; echo -e "${YELLOW}⚠️ $msg${NC}"; return 0; }
|
|
21
|
+
print_error() { local msg="$1"; echo -e "${RED}❌ $msg${NC}"; return 0; }
|
|
22
|
+
|
|
23
|
+
# SonarCloud project configuration
|
|
24
|
+
readonly SONAR_PROJECT_KEY="marcusquinn_aidevops"
|
|
25
|
+
readonly SONAR_ORGANIZATION="marcusquinn"
|
|
26
|
+
readonly SONAR_URL="https://sonarcloud.io"
|
|
27
|
+
|
|
28
|
+
# Check if SonarScanner is available
|
|
29
|
+
check_sonar_scanner() {
|
|
30
|
+
if ! command -v sonar-scanner &> /dev/null; then
|
|
31
|
+
print_warning "SonarScanner not found. Installing..."
|
|
32
|
+
|
|
33
|
+
# Check if we're on macOS
|
|
34
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
35
|
+
if command -v brew &> /dev/null; then
|
|
36
|
+
brew install sonar-scanner
|
|
37
|
+
else
|
|
38
|
+
print_error "Homebrew not found. Please install SonarScanner manually:"
|
|
39
|
+
print_info "https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
else
|
|
43
|
+
print_error "Please install SonarScanner manually:"
|
|
44
|
+
print_info "https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/"
|
|
45
|
+
exit 1
|
|
46
|
+
fi
|
|
47
|
+
fi
|
|
48
|
+
return 0
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
# Run SonarCloud analysis
|
|
52
|
+
run_analysis() {
|
|
53
|
+
print_header "Running SonarCloud Analysis"
|
|
54
|
+
|
|
55
|
+
# Check for SONAR_TOKEN
|
|
56
|
+
if [[ -z "${SONAR_TOKEN:-}" ]]; then
|
|
57
|
+
print_error "SONAR_TOKEN environment variable not set"
|
|
58
|
+
print_info "Get your token from: https://sonarcloud.io/account/security/"
|
|
59
|
+
print_info "Then run: export SONAR_TOKEN=your_token_here"
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
print_info "Project: $SONAR_PROJECT_KEY"
|
|
64
|
+
print_info "Organization: $SONAR_ORGANIZATION"
|
|
65
|
+
print_info "Running analysis..."
|
|
66
|
+
|
|
67
|
+
# Run SonarScanner
|
|
68
|
+
sonar-scanner \
|
|
69
|
+
-Dsonar.projectKey="$SONAR_PROJECT_KEY" \
|
|
70
|
+
-Dsonar.organization="$SONAR_ORGANIZATION" \
|
|
71
|
+
-Dsonar.host.url="$SONAR_URL" \
|
|
72
|
+
-Dsonar.login="$SONAR_TOKEN"
|
|
73
|
+
|
|
74
|
+
print_success "SonarCloud analysis completed"
|
|
75
|
+
print_info "View results at: $SONAR_URL/project/overview?id=$SONAR_PROJECT_KEY"
|
|
76
|
+
return 0
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# Get project issues via API
|
|
80
|
+
get_issues() {
|
|
81
|
+
print_header "Fetching SonarCloud Issues"
|
|
82
|
+
|
|
83
|
+
if [[ -z "${SONAR_TOKEN:-}" ]]; then
|
|
84
|
+
print_error "SONAR_TOKEN environment variable not set"
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
local api_url="$SONAR_URL/api/issues/search"
|
|
89
|
+
local params="componentKeys=$SONAR_PROJECT_KEY&resolved=false"
|
|
90
|
+
|
|
91
|
+
print_info "Fetching issues from SonarCloud API..."
|
|
92
|
+
|
|
93
|
+
# Use curl to fetch issues
|
|
94
|
+
local response
|
|
95
|
+
response=$(curl -s -u "$SONAR_TOKEN:" "$api_url?$params")
|
|
96
|
+
|
|
97
|
+
if [[ $? -eq 0 ]]; then
|
|
98
|
+
# Parse JSON response (basic parsing)
|
|
99
|
+
local total_issues
|
|
100
|
+
total_issues=$(echo "$response" | grep -o '"total":[0-9]*' | cut -d':' -f2 || echo "0")
|
|
101
|
+
|
|
102
|
+
print_info "Total issues found: $total_issues"
|
|
103
|
+
|
|
104
|
+
if [[ "$total_issues" -gt 0 ]]; then
|
|
105
|
+
print_warning "Issues found in SonarCloud analysis"
|
|
106
|
+
print_info "View details at: $SONAR_URL/project/issues?id=$SONAR_PROJECT_KEY"
|
|
107
|
+
else
|
|
108
|
+
print_success "No issues found in SonarCloud analysis"
|
|
109
|
+
fi
|
|
110
|
+
else
|
|
111
|
+
print_error "Failed to fetch issues from SonarCloud API"
|
|
112
|
+
exit 1
|
|
113
|
+
fi
|
|
114
|
+
return 0
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
# Get project metrics
|
|
118
|
+
get_metrics() {
|
|
119
|
+
print_header "Fetching SonarCloud Metrics"
|
|
120
|
+
|
|
121
|
+
if [[ -z "${SONAR_TOKEN:-}" ]]; then
|
|
122
|
+
print_error "SONAR_TOKEN environment variable not set"
|
|
123
|
+
exit 1
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
local api_url="$SONAR_URL/api/measures/component"
|
|
127
|
+
local metrics="bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density,reliability_rating,security_rating,sqale_rating"
|
|
128
|
+
local params="component=$SONAR_PROJECT_KEY&metricKeys=$metrics"
|
|
129
|
+
|
|
130
|
+
print_info "Fetching metrics from SonarCloud API..."
|
|
131
|
+
|
|
132
|
+
local response
|
|
133
|
+
response=$(curl -s -u "$SONAR_TOKEN:" "$api_url?$params")
|
|
134
|
+
|
|
135
|
+
if [[ $? -eq 0 ]]; then
|
|
136
|
+
print_success "Metrics retrieved successfully"
|
|
137
|
+
print_info "View detailed metrics at: $SONAR_URL/project/overview?id=$SONAR_PROJECT_KEY"
|
|
138
|
+
|
|
139
|
+
# Basic metric extraction (would need jq for proper JSON parsing)
|
|
140
|
+
echo "$response" | grep -o '"metric":"[^"]*","value":"[^"]*"' | while read -r line; do
|
|
141
|
+
local metric
|
|
142
|
+
local value
|
|
143
|
+
metric=$(echo "$line" | sed 's/.*"metric":"\([^"]*\)".*/\1/')
|
|
144
|
+
value=$(echo "$line" | sed 's/.*"value":"\([^"]*\)".*/\1/')
|
|
145
|
+
print_info "$metric: $value"
|
|
146
|
+
done
|
|
147
|
+
else
|
|
148
|
+
print_error "Failed to fetch metrics from SonarCloud API"
|
|
149
|
+
exit 1
|
|
150
|
+
fi
|
|
151
|
+
return 0
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
# Main function
|
|
155
|
+
main() {
|
|
156
|
+
case "${1:-help}" in
|
|
157
|
+
"analyze"|"analysis")
|
|
158
|
+
check_sonar_scanner
|
|
159
|
+
run_analysis
|
|
160
|
+
;;
|
|
161
|
+
"issues")
|
|
162
|
+
get_issues
|
|
163
|
+
;;
|
|
164
|
+
"metrics")
|
|
165
|
+
get_metrics
|
|
166
|
+
;;
|
|
167
|
+
"status")
|
|
168
|
+
get_issues
|
|
169
|
+
get_metrics
|
|
170
|
+
;;
|
|
171
|
+
"help"|*)
|
|
172
|
+
print_header "SonarCloud CLI Usage"
|
|
173
|
+
echo "Usage: $0 [command]"
|
|
174
|
+
echo ""
|
|
175
|
+
echo "Commands:"
|
|
176
|
+
echo " analyze - Run SonarCloud analysis"
|
|
177
|
+
echo " issues - Fetch current issues"
|
|
178
|
+
echo " metrics - Fetch project metrics"
|
|
179
|
+
echo " status - Get issues and metrics"
|
|
180
|
+
echo " help - Show this help"
|
|
181
|
+
echo ""
|
|
182
|
+
echo "Environment Variables:"
|
|
183
|
+
echo " SONAR_TOKEN - SonarCloud authentication token"
|
|
184
|
+
echo ""
|
|
185
|
+
echo "Get your token from: https://sonarcloud.io/account/security/"
|
|
186
|
+
;;
|
|
187
|
+
esac
|
|
188
|
+
return 0
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
main "$@"
|