UNPKG

deepsource-mcp-server

Version:
239 lines (193 loc) 8.24 kB
# Fix DeepSource Issues Analyze and fix all open issues reported by DeepSource for this project using the DeepSource MCP server. ## Steps 1. **Identify Project and Check for Issues** - Use MCP tool `projects` to list available projects - Find the project key matching this repository - **For branch-specific issues**: Use `recent_run_issues` with the current branch name - **For overall project issues**: Use `project_issues` to query all open issues - **Note**: `recent_run_issues` may return very large responses - use `runs` to check issue counts first - **If no issues found**: Report "✅ No DeepSource issues found!" and exit 2. **Get Detailed Issue Analysis** - When working on a specific branch (e.g., for a PR): - Use `runs` to find the latest run for your branch and check issue counts - Use `run` with the run ID to get summary information - **Note**: `recent_run_issues` responses can exceed token limits even with `first: 1` - If API responses are too large, check the DeepSource dashboard directly - For main branch or overall project: - Use `project_issues` with pagination (default branch is main) - Use `quality_metrics` to understand overall code health - Check `dependency_vulnerabilities` for security issues in dependencies 3. **Analyze Retrieved Issues** - Group by severity: BLOCKER, CRITICAL, MAJOR, MINOR, INFO - Categorize by analyzer: - **JavaScript/TypeScript**: JS-\* issues - **Test Coverage**: TCV-\* issues - **Security**: SEC-\* issues - **Dependencies**: DEP-\* issues - Note issue occurrences (how many times each issue appears) - Report detailed summary with issue codes and descriptions 4. **Create Feature Branch** (only if issues exist) ```bash git checkout -b fix/deepsource-issues-$(date +%Y%m%d) ``` 5. **Fix Issues by Priority** - Start with BLOCKER severity - Then CRITICAL - Then MAJOR - Then MINOR - Finally INFO - Group similar issues to fix them together efficiently 6. **For Each Issue Type** - Read the affected files - Understand the specific DeepSource rule violated - Apply the recommended fix pattern - Verify the fix doesn't break existing functionality 7. **Common DeepSource Issues and Fixes** **JavaScript/TypeScript (JS-\*)** - **JS-0323** (No any type): Replace `any` with `unknown` or specific types - **JS-0331** (Redundant type annotations): Remove unnecessary type declarations - **JS-R1004** (Template literals): Use regular strings when no interpolation - **JS-0105** (Static methods): Make non-instance methods static - **JS-W1044** (Optional chaining): Use `?.` for nested property access - **JS-C1003** (Wildcard imports): Use named imports instead - **JS-0097** (Variable shadowing): Rename inner variables - **JS-0125** (Unused variables): Remove or use underscore prefix **Test Coverage (TCV-\*)** - **TCV-001**: Add tests for uncovered code paths - Focus on critical business logic first - Aim for >80% coverage as per project requirements **Security (SEC-\*)** - **SEC-001**: Sanitize user inputs - **SEC-002**: Use secure random generators - Validate all external data **Dependencies (DEP-\*)** - Use `dependency_vulnerabilities` tool to identify issues - Update vulnerable packages to secure versions - Check for breaking changes in updates 8. **Validation After Each Fix Group** - Run `pnpm test` to ensure tests pass - Run `pnpm lint` to check for new linting issues - Run `pnpm typecheck` to verify TypeScript compilation - Run `pnpm check-types` for additional type checking 9. **Monitor Progress with MCP Tools** - After significant fixes, use `runs` to check if a new analysis is available - Use `run` with the latest run ID to get updated results - Track improvement in `quality_metrics` scores 10. **Create Changeset** ```bash pnpm changeset ``` - Type: patch (for bug fixes and minor improvements) - Summary: "Fix DeepSource code quality issues" - Detailed description of fixed issue categories 11. **Commit Changes** ```bash git add -A git commit -m "fix: resolve DeepSource code quality issues - Fixed [X] JavaScript/TypeScript issues - Fixed [X] test coverage issues - Fixed [X] security issues - Fixed [X] dependency vulnerabilities Issues resolved by severity: - BLOCKER: [X] - CRITICAL: [X] - MAJOR: [X] - MINOR: [X] - INFO: [X]" ``` 12. **Push Branch and Monitor** ```bash git push origin fix/deepsource-issues-$(date +%Y%m%d) ``` - Wait for DeepSource to analyze the branch - Use `runs` to find the new analysis run - Use `run` to verify issues are resolved 13. **Create Pull Request with Metrics** ```bash gh pr create --title "fix: resolve DeepSource code quality issues" \ --body "## Summary Resolved DeepSource issues identified in the latest analysis run. ## DeepSource Metrics Improvement - Issues Fixed: [X] total - Code Coverage: [before]% → [after]% - Maintainability Score: [improvement] - Reliability Score: [improvement] - Security Score: [improvement] ## Fixed Issues by Category ### JavaScript/TypeScript Issues - JS-0323 (No any): [X] occurrences fixed - JS-0331 (Type annotations): [X] occurrences fixed - JS-R1004 (Template literals): [X] occurrences fixed - [Other issues...] ### Test Coverage - Improved coverage for [modules] - Added [X] new test cases ### Security & Dependencies - Fixed [X] vulnerabilities - Updated [X] dependencies ## Testing - ✅ All tests passing (\`pnpm test\`) - ✅ Linting checks pass (\`pnpm lint\`) - ✅ TypeScript compilation successful (\`pnpm typecheck\`) - ✅ Type checking passed (\`pnpm check-types\`) - ✅ CI pipeline passing ## DeepSource Analysis - Branch analysis run ID: [run_id] - Issues remaining: [X] (if any, explain why not fixed) - Link to DeepSource dashboard: [project_url]" ``` ## Example MCP Tool Usage ```typescript // List projects to find project key mcp_tool: projects // Check runs for a specific branch to see issue counts mcp_tool: runs args: { projectKey: "deepsource-mcp-server", first: 5 } // Get details of a specific run mcp_tool: run args: { projectKey: "deepsource-mcp-server", runIdentifier: "run-id-here", isCommitOid: false } // Get issues from most recent run on a branch (WARNING: may exceed token limits) mcp_tool: recent_run_issues args: { projectKey: "deepsource-mcp-server", branchName: "feature/my-branch", // Specify the actual branch name first: 1 // Even with 1, response may be too large } // Get all open issues (defaults to main branch) mcp_tool: project_issues args: { projectKey: "deepsource-mcp-server", analyzerIn: ["javascript"], // Filter by analyzer if needed first: 50 } // Check quality metrics mcp_tool: quality_metrics args: { projectKey: "deepsource-mcp-server" } // Check for dependency vulnerabilities mcp_tool: dependency_vulnerabilities args: { projectKey: "deepsource-mcp-server" } ``` ## Notes - The MCP server provides real-time access to DeepSource data - **API Limitations**: `recent_run_issues` can return very large responses (>70K tokens) even with `first: 1` due to large code snippets in issue details - **Branch-specific queries**: `project_issues` defaults to main branch; use `recent_run_issues` for other branches but be aware of size limitations - **Workaround for large responses**: Use `runs` and `run` tools to get issue counts and summaries, then check the DeepSource dashboard for details - Use pagination for large issue sets (>50 issues) - Some issues may be false positives - document them in code comments using `skipcq` directives - Complex refactoring should preserve existing functionality - Monitor the DeepSource dashboard for analysis progress - If no issues are found, celebrate with "✅ No DeepSource issues found!" - Consider updating metric thresholds with `update_metric_threshold` if needed - Use `compliance_report` for regulatory compliance checks (OWASP, SANS, etc.)