@khoavu882/doflow 0.0.0-stage → 2.0.0-beta.4
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/LICENSE +21 -0
- package/README.md +132 -2
- package/bin/doflow.js +44 -0
- package/core/.antigravity-plugin/hooks.json +39 -0
- package/core/.antigravity-plugin/mcp_config.json +18 -0
- package/core/.antigravity-plugin/plugin.json +31 -0
- package/core/.claude-plugin/marketplace.json +20 -0
- package/core/.claude-plugin/plugin.json +21 -0
- package/core/.codex-plugin/marketplace.json +20 -0
- package/core/.codex-plugin/plugin.json +35 -0
- package/core/.plugin/plugin.json +19 -0
- package/core/harnesses/antigravity/hooks/pre-implementation-gate.sh +9 -0
- package/core/harnesses/antigravity/hooks/stop-check.sh +10 -0
- package/core/harnesses/claude/hooks/lib.sh +304 -0
- package/core/harnesses/claude/hooks/mcp-tool-guard.sh +20 -0
- package/core/harnesses/claude/hooks/permission-audit.sh +47 -0
- package/core/harnesses/claude/hooks/post-compact.sh +74 -0
- package/core/harnesses/claude/hooks/post-edit-lint.sh +36 -0
- package/core/harnesses/claude/hooks/post-tool-failure.sh +47 -0
- package/core/harnesses/claude/hooks/pre-bash-guard.sh +20 -0
- package/core/harnesses/claude/hooks/pre-compact.sh +43 -0
- package/core/harnesses/claude/hooks/pre-implement-gate.sh +21 -0
- package/core/harnesses/claude/hooks/session-end.sh +89 -0
- package/core/harnesses/claude/hooks/session-start.sh +5 -0
- package/core/harnesses/claude/hooks/skill-config-audit.sh +39 -0
- package/core/harnesses/claude/hooks/stop-check.sh +5 -0
- package/core/harnesses/claude/hooks/subagent-audit.sh +7 -0
- package/core/harnesses/claude/hooks/user-prompt-submit.sh +5 -0
- package/core/harnesses/claude/settings/keybindings.json +20 -0
- package/core/harnesses/claude/settings/settings.json +201 -0
- package/core/harnesses/claude/statusline/doflow-statusline.sh +49 -0
- package/core/harnesses/codex/agents/core-implementer.toml +7 -0
- package/core/harnesses/codex/agents/quality-guardian.toml +8 -0
- package/core/harnesses/codex/agents/research-writer.toml +8 -0
- package/core/harnesses/codex/agents/spec-analyst.toml +8 -0
- package/core/harnesses/codex/agents/system-architect.toml +9 -0
- package/core/harnesses/codex/config/config.toml +10 -0
- package/core/harnesses/codex/hooks/hooks.json +122 -0
- package/core/harnesses/codex/hooks/lib.sh +335 -0
- package/core/harnesses/codex/hooks/mcp-tool-guard.sh +18 -0
- package/core/harnesses/codex/hooks/post-edit-lint.impl.sh +52 -0
- package/core/harnesses/codex/hooks/post-edit-lint.sh +6 -0
- package/core/harnesses/codex/hooks/pre-bash-guard.sh +18 -0
- package/core/harnesses/codex/hooks/pre-compact.impl.sh +46 -0
- package/core/harnesses/codex/hooks/pre-compact.sh +9 -0
- package/core/harnesses/codex/hooks/pre-implement-gate.sh +19 -0
- package/core/harnesses/codex/hooks/session-end.impl.sh +92 -0
- package/core/harnesses/codex/hooks/session-end.sh +5 -0
- package/core/harnesses/codex/hooks/session-start.sh +5 -0
- package/core/harnesses/codex/hooks/stop-check.sh +8 -0
- package/core/harnesses/codex/hooks/subagent-audit.sh +8 -0
- package/core/harnesses/codex/hooks/user-prompt-submit.sh +6 -0
- package/core/harnesses/gemini/hooks/hooks.json +77 -0
- package/core/harnesses/gemini/hooks/lib.sh +302 -0
- package/core/harnesses/gemini/hooks/mcp-tool-guard.sh +21 -0
- package/core/harnesses/gemini/hooks/post-edit-lint.sh +39 -0
- package/core/harnesses/gemini/hooks/pre-bash-guard.sh +21 -0
- package/core/harnesses/gemini/hooks/pre-compact.sh +38 -0
- package/core/harnesses/gemini/hooks/pre-implement-gate.sh +22 -0
- package/core/harnesses/gemini/hooks/session-end.impl.sh +89 -0
- package/core/harnesses/gemini/hooks/session-end.sh +5 -0
- package/core/harnesses/gemini/hooks/session-start.sh +5 -0
- package/core/harnesses/gemini/settings/adapter-defaults.json +4 -0
- package/core/harnesses/kiro/agents/doflow.json +58 -0
- package/core/harnesses/kiro/hooks/doflow.json +53 -0
- package/core/harnesses/kiro/hooks/lib.sh +324 -0
- package/core/harnesses/kiro/hooks/mcp-tool-guard.sh +9 -0
- package/core/harnesses/kiro/hooks/pre-bash-guard.sh +9 -0
- package/core/harnesses/kiro/hooks/pre-implement-gate.sh +9 -0
- package/core/harnesses/kiro/hooks/session-start.sh +9 -0
- package/core/harnesses/kiro/hooks/stop-check.sh +43 -0
- package/core/harnesses/shared/hooks/ENVELOPE_MIGRATION.md +39 -0
- package/core/harnesses/shared/hooks/adapters/antigravity.js +111 -0
- package/core/harnesses/shared/hooks/adapters/arg-fields.js +19 -0
- package/core/harnesses/shared/hooks/adapters/gemini.js +114 -0
- package/core/harnesses/shared/hooks/hooks.json +47 -0
- package/core/harnesses/shared/hooks/policies/blocked-patterns.conf +91 -0
- package/core/harnesses/shared/hooks/policies/capture-failure.sh +97 -0
- package/core/harnesses/shared/hooks/policies/deny-json.sh +29 -0
- package/core/harnesses/shared/hooks/policies/lib.sh +501 -0
- package/core/harnesses/shared/hooks/policies/mcp-policy.conf +21 -0
- package/core/harnesses/shared/hooks/policies/mcp-tool-guard.sh +91 -0
- package/core/harnesses/shared/hooks/policies/pre-bash-guard.sh +328 -0
- package/core/harnesses/shared/hooks/policies/pre-implementation-gate.sh +496 -0
- package/core/harnesses/shared/hooks/policies/prompt-nudge.jq +131 -0
- package/core/harnesses/shared/hooks/policies/session-context.sh +141 -0
- package/core/harnesses/shared/hooks/policies/stop-check.sh +264 -0
- package/core/harnesses/shared/hooks/policies/subagent-audit.sh +46 -0
- package/core/harnesses/shared/hooks/policies/user-prompt-submit.sh +235 -0
- package/core/harnesses/shared/hooks/stream-hook-runner.js +590 -0
- package/core/harnesses/shared/locator/doflow-run +87 -0
- package/core/registry/advice.json +101 -0
- package/core/registry/assets.json +792 -0
- package/core/registry/capabilities.json +120 -0
- package/core/registry/contracts.json +189 -0
- package/core/registry/external-tools.json +191 -0
- package/core/registry/harnesses.json +2062 -0
- package/core/registry/lifecycle.json +231 -0
- package/core/registry/mcp.json +18 -0
- package/core/registry/models.json +79 -0
- package/core/registry/readiness-templates.json +118 -0
- package/core/registry/routes.json +47 -0
- package/core/registry/storage.json +1061 -0
- package/core/registry/verification.json +258 -0
- package/core/registry/workflows.json +790 -0
- package/core/shared/agent-specs/core-implementer.md +73 -0
- package/core/shared/agent-specs/quality-guardian.md +28 -0
- package/core/shared/agent-specs/research-writer.md +31 -0
- package/core/shared/agent-specs/spec-analyst.md +33 -0
- package/core/shared/agent-specs/system-architect.md +29 -0
- package/core/shared/guidance/DOFLOW_CORE.md +8 -0
- package/core/shared/guidance/FLAGS.md +25 -0
- package/core/shared/guidance/PRINCIPLES.md +61 -0
- package/core/shared/guidance/VERSION +1 -0
- package/core/shared/guidance/mcp/MCP_Context7.md +18 -0
- package/core/shared/guidance/mcp/MCP_Sequential.md +17 -0
- package/core/shared/guidance/modes/MODE_Brainstorming.md +46 -0
- package/core/shared/guidance/modes/MODE_DeepResearch.md +69 -0
- package/core/shared/guidance/modes/MODE_Introspection.md +33 -0
- package/core/shared/guidance/modes/MODE_Orchestration.md +57 -0
- package/core/shared/guidance/modes/MODE_Task_Management.md +74 -0
- package/core/shared/guidance/pointers/claude-gemini.md +2 -0
- package/core/shared/guidance/pointers/codex.md +6 -0
- package/core/shared/guidance/references/ARTIFACT_FORMAT.md +373 -0
- package/core/shared/guidance/references/ARTIFACT_VOICE.md +104 -0
- package/core/shared/guidance/references/CONSTITUTION_BASE.md +47 -0
- package/core/shared/guidance/references/DIAGRAM_GUIDE.md +161 -0
- package/core/shared/guidance/references/DOFLOW_CHAIN.md +87 -0
- package/core/shared/guidance/references/EVIDENCE_LEDGER.md +93 -0
- package/core/shared/guidance/references/MODEL_SELECTION.md +74 -0
- package/core/shared/guidance/references/ORCHESTRATION.md +36 -0
- package/core/shared/guidance/references/RESEARCH_CONFIG.md +21 -0
- package/core/shared/guidance/references/WORKFLOW_HANDOFF.md +81 -0
- package/core/shared/guidance/rules/RULE_01_SAFETY.md +25 -0
- package/core/shared/guidance/rules/RULE_02_WORKFLOW.md +23 -0
- package/core/shared/guidance/rules/RULE_03_QUALITY.md +14 -0
- package/core/shared/guidance/rules/RULE_04_QUESTIONS.md +46 -0
- package/core/shared/scripts/doflow/assets/mermaid-theme.json +46 -0
- package/core/shared/scripts/doflow/bash/do-exec-paths.sh +167 -0
- package/core/shared/scripts/doflow/bash/do-git-state.sh +546 -0
- package/core/shared/scripts/doflow/bash/do-parallel-check.sh +208 -0
- package/core/shared/scripts/doflow/bash/do-paths.sh +347 -0
- package/core/shared/scripts/doflow/bash/do-prereqs.sh +66 -0
- package/core/shared/scripts/doflow/bash/do-review-package.sh +127 -0
- package/core/shared/scripts/doflow/bash/do-task-brief.sh +698 -0
- package/core/shared/scripts/doflow/bash/render-audit.sh +224 -0
- package/core/shared/scripts/doflow/bash/render-diagrams.sh +177 -0
- package/core/shared/scripts/doflow/bash/render-puml.sh +223 -0
- package/core/shared/scripts/doflow/bash/sync-context.sh +66 -0
- package/core/shared/scripts/doflow/bash/validate-artifacts.sh +526 -0
- package/core/shared/scripts/doflow/bin/doflow-run +592 -0
- package/core/shared/skills/do/SKILL.md +128 -0
- package/core/shared/skills/do/references/estimation.md +13 -0
- package/core/shared/skills/do/references/pm_routing.md +25 -0
- package/core/shared/skills/do/references/tool_matrix.md +52 -0
- package/core/shared/skills/do-brainstorm/SKILL.md +252 -0
- package/core/shared/skills/do-code-review/README.md +49 -0
- package/core/shared/skills/do-code-review/SKILL.md +333 -0
- package/core/shared/skills/do-code-review/assets/sample_c_clean.c +71 -0
- package/core/shared/skills/do-code-review/assets/sample_c_smells.c +66 -0
- package/core/shared/skills/do-code-review/assets/sample_cpp_shift.cpp +19 -0
- package/core/shared/skills/do-code-review/assets/sample_csharp_clean.cs +100 -0
- package/core/shared/skills/do-code-review/assets/sample_csharp_smells.cs +78 -0
- package/core/shared/skills/do-code-review/assets/sample_java_clean.java +55 -0
- package/core/shared/skills/do-code-review/assets/sample_java_smells.java +56 -0
- package/core/shared/skills/do-code-review/assets/sample_json_clean.json +7 -0
- package/core/shared/skills/do-code-review/assets/sample_markdown_clean.md +30 -0
- package/core/shared/skills/do-code-review/assets/sample_markdown_smells.md +29 -0
- package/core/shared/skills/do-code-review/assets/sample_shell_heredoc.sh +38 -0
- package/core/shared/skills/do-code-review/assets/sample_shell_smells.sh +15 -0
- package/core/shared/skills/do-code-review/assets/sample_typescript_strings.ts +36 -0
- package/core/shared/skills/do-code-review/assets/sample_yaml_smells.yaml +6 -0
- package/core/shared/skills/do-code-review/content-types/config.md +83 -0
- package/core/shared/skills/do-code-review/content-types/markdown.md +132 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_c_clean_quality.json +79 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_c_smells_quality.json +169 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_cpp_shift_quality.json +49 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_csharp_clean_quality.json +149 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_csharp_smells_quality.json +157 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_java_clean_quality.json +67 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_java_smells_quality.json +97 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_json_clean_quality.json +33 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_markdown_clean_quality.json +1 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_markdown_smells_quality.json +16 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_shell_heredoc_quality.json +54 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_shell_smells_quality.json +91 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_typescript_strings_quality.json +60 -0
- package/core/shared/skills/do-code-review/expected_outputs/sample_yaml_smells_quality.json +46 -0
- package/core/shared/skills/do-code-review/languages/c.md +103 -0
- package/core/shared/skills/do-code-review/languages/cpp.md +103 -0
- package/core/shared/skills/do-code-review/languages/csharp.md +97 -0
- package/core/shared/skills/do-code-review/languages/dart.md +108 -0
- package/core/shared/skills/do-code-review/languages/go.md +92 -0
- package/core/shared/skills/do-code-review/languages/java.md +103 -0
- package/core/shared/skills/do-code-review/languages/kotlin.md +88 -0
- package/core/shared/skills/do-code-review/languages/php.md +109 -0
- package/core/shared/skills/do-code-review/languages/python.md +94 -0
- package/core/shared/skills/do-code-review/languages/ruby.md +105 -0
- package/core/shared/skills/do-code-review/languages/rust.md +99 -0
- package/core/shared/skills/do-code-review/languages/shell.md +90 -0
- package/core/shared/skills/do-code-review/languages/swift.md +88 -0
- package/core/shared/skills/do-code-review/languages/typescript.md +97 -0
- package/core/shared/skills/do-code-review/review-policy.json +47 -0
- package/core/shared/skills/do-code-review/rules/universal.md +49 -0
- package/core/shared/skills/do-code-review/scripts/code_quality_checker.py +1696 -0
- package/core/shared/skills/do-code-review/scripts/doc_quality_checker.py +532 -0
- package/core/shared/skills/do-code-review/scripts/pr_analyzer.py +620 -0
- package/core/shared/skills/do-code-review/scripts/review_report_generator.py +505 -0
- package/core/shared/skills/do-constitution/SKILL.md +72 -0
- package/core/shared/skills/do-design/SKILL.md +212 -0
- package/core/shared/skills/do-diagnose/SKILL.md +156 -0
- package/core/shared/skills/do-diagnose/references/code_audit.md +15 -0
- package/core/shared/skills/do-diagnose/references/refactoring.md +12 -0
- package/core/shared/skills/do-diagnose/references/root_cause.md +17 -0
- package/core/shared/skills/do-document/SKILL.md +81 -0
- package/core/shared/skills/do-document/references/api-reference.md +42 -0
- package/core/shared/skills/do-document/references/deep_research.md +18 -0
- package/core/shared/skills/do-document/references/embedded-research.md +11 -0
- package/core/shared/skills/do-document/references/implementation-flow.md +105 -0
- package/core/shared/skills/do-document/references/index_generator.md +9 -0
- package/core/shared/skills/do-document/references/user-guide.md +22 -0
- package/core/shared/skills/do-execute-plan/SKILL.md +261 -0
- package/core/shared/skills/do-execute-plan/references/handoff_record.md +57 -0
- package/core/shared/skills/do-execute-plan/references/parallel_dispatch.md +92 -0
- package/core/shared/skills/do-execute-plan/references/readiness_gate.md +155 -0
- package/core/shared/skills/do-execute-plan/references/run_position.md +63 -0
- package/core/shared/skills/do-execute-plan/references/scaffold.md +441 -0
- package/core/shared/skills/do-execute-plan/references/task_attempts.md +41 -0
- package/core/shared/skills/do-flow/SKILL.md +186 -0
- package/core/shared/skills/do-flow/references/task_classes.md +134 -0
- package/core/shared/skills/do-git/SKILL.md +115 -0
- package/core/shared/skills/do-git/references/hotfix-ritual.md +44 -0
- package/core/shared/skills/do-git/references/lifecycle-policy.md +54 -0
- package/core/shared/skills/do-git/references/release-ritual.md +64 -0
- package/core/shared/skills/do-implement/SKILL.md +222 -0
- package/core/shared/skills/do-plan/SKILL.md +219 -0
- package/core/shared/skills/do-test/SKILL.md +113 -0
- package/core/shared/templates/doflow/constitution-template.md +28 -0
- package/core/shared/templates/doflow/data-model-template.md +169 -0
- package/core/shared/templates/doflow/design-template.md +193 -0
- package/core/shared/templates/doflow/external-contract-template.md +35 -0
- package/core/shared/templates/doflow/intent-template.md +45 -0
- package/core/shared/templates/doflow/plan-template.md +151 -0
- package/core/shared/templates/doflow/question-log-template.md +51 -0
- package/core/shared/templates/doflow/requirement-template.md +126 -0
- package/core/shared/templates/doflow/specs-template.md +55 -0
- package/core/shared/templates/doflow/state-template.md +59 -0
- package/core/shared/workflows/do-flow-chain.md +17 -0
- package/package.json +48 -4
- package/src/adapters/antigravity/index.js +631 -0
- package/src/adapters/claude/index.js +548 -0
- package/src/adapters/claude/mcp.js +94 -0
- package/src/adapters/codex/agents.js +208 -0
- package/src/adapters/codex/config.js +272 -0
- package/src/adapters/codex/hooks.js +203 -0
- package/src/adapters/codex/index.js +707 -0
- package/src/adapters/codex/mcp.js +271 -0
- package/src/adapters/codex/native-projection.js +34 -0
- package/src/adapters/copilot/index.js +413 -0
- package/src/adapters/copy-tree.js +620 -0
- package/src/adapters/gemini/hooks.js +210 -0
- package/src/adapters/gemini/index.js +390 -0
- package/src/adapters/hook-commands.js +60 -0
- package/src/adapters/index.js +106 -0
- package/src/adapters/kiro/index.js +310 -0
- package/src/adapters/mcp-entries.js +331 -0
- package/src/adapters/opencode/index.js +466 -0
- package/src/adapters/pi/index.js +279 -0
- package/src/adapters/pi/json-members.js +185 -0
- package/src/adapters/pi/mcp.js +373 -0
- package/src/adapters/resolve-source.js +19 -0
- package/src/cli/commands/install.js +218 -0
- package/src/cli/commands/list-backups.js +21 -0
- package/src/cli/commands/reconcile.js +120 -0
- package/src/cli/commands/remove.js +82 -0
- package/src/cli/commands/rollback.js +172 -0
- package/src/cli/commands/self-update.js +33 -0
- package/src/cli/commands/status.js +138 -0
- package/src/cli/commands/tools.js +92 -0
- package/src/cli/commands/update.js +162 -0
- package/src/cli/index.js +568 -0
- package/src/cli/runtime-commands.js +281 -0
- package/src/cli/shared.js +218 -0
- package/src/helper/bash-helper.js +34 -0
- package/src/helper/git.js +24 -0
- package/src/helper/guardrails.js +49 -0
- package/src/helper/harness-paths.js +140 -0
- package/src/helper/marker-merge.js +116 -0
- package/src/helper/prompt.js +61 -0
- package/src/helper/repo-root.js +29 -0
- package/src/helper/settings-merge.js +151 -0
- package/src/helper/settings-scope.js +33 -0
- package/src/helper/toml.js +244 -0
- package/src/install/backup-set.js +149 -0
- package/src/install/backup.js +724 -0
- package/src/install/context.js +58 -0
- package/src/install/manifest.js +145 -0
- package/src/install/mcp.js +254 -0
- package/src/install/paths.js +84 -0
- package/src/install/targets.js +90 -0
- package/src/install/tool-lifecycle.js +151 -0
- package/src/lifecycle/bash-availability.js +25 -0
- package/src/lifecycle/index.js +812 -0
- package/src/lifecycle/mcp-index.js +28 -0
- package/src/lifecycle/policies.js +73 -0
- package/src/lifecycle/view.js +175 -0
- package/src/registry/index.js +611 -0
- package/src/release/build-package.js +91 -0
- package/src/release/changelog-section.js +70 -0
- package/src/release/sync-plugin-versions.js +66 -0
- package/src/runtime/advice/cli.js +283 -0
- package/src/runtime/advice/client.js +324 -0
- package/src/runtime/advice/config.js +189 -0
- package/src/runtime/advice/doctor.js +169 -0
- package/src/runtime/advice/endpoint-guard.js +134 -0
- package/src/runtime/advice/kinds.js +154 -0
- package/src/runtime/advice/providers/ollama-systemone.js +209 -0
- package/src/runtime/advice/record.js +166 -0
- package/src/runtime/advice/registry.js +170 -0
- package/src/runtime/advice/strength.js +66 -0
- package/src/runtime/brief-tools.js +342 -0
- package/src/runtime/c4-project.js +371 -0
- package/src/runtime/capability-router.js +484 -0
- package/src/runtime/checkouts.js +170 -0
- package/src/runtime/claims.js +468 -0
- package/src/runtime/cli-result.js +55 -0
- package/src/runtime/cli.js +678 -0
- package/src/runtime/command-detect.js +516 -0
- package/src/runtime/context-pack.js +492 -0
- package/src/runtime/decision-register.js +493 -0
- package/src/runtime/evidence-ledger.js +338 -0
- package/src/runtime/failure/capture.js +272 -0
- package/src/runtime/failure/classifier.js +68 -0
- package/src/runtime/failure/cli.js +178 -0
- package/src/runtime/failure/home.js +64 -0
- package/src/runtime/failure/store.js +226 -0
- package/src/runtime/feature-resolve.js +79 -0
- package/src/runtime/freshness.js +177 -0
- package/src/runtime/health.js +863 -0
- package/src/runtime/history-compactor.js +237 -0
- package/src/runtime/implementation-gate.js +321 -0
- package/src/runtime/inventory/coverage.js +218 -0
- package/src/runtime/inventory/identity.js +65 -0
- package/src/runtime/inventory/index.js +705 -0
- package/src/runtime/inventory/precedence.js +134 -0
- package/src/runtime/inventory/read-scopes.js +131 -0
- package/src/runtime/inventory/siblings.js +192 -0
- package/src/runtime/knowledge/chunker.js +124 -0
- package/src/runtime/knowledge/hybrid.js +149 -0
- package/src/runtime/knowledge/index-store.js +145 -0
- package/src/runtime/knowledge/retrieval.js +194 -0
- package/src/runtime/leak-scan.js +185 -0
- package/src/runtime/lifecycle/cli.js +276 -0
- package/src/runtime/lifecycle/event-store.js +340 -0
- package/src/runtime/lifecycle/fold.js +353 -0
- package/src/runtime/lifecycle/followup.js +432 -0
- package/src/runtime/lifecycle/goal.js +249 -0
- package/src/runtime/lifecycle/intent-writer.js +86 -0
- package/src/runtime/lifecycle/overview.js +292 -0
- package/src/runtime/lifecycle/release.js +241 -0
- package/src/runtime/lifecycle/report-store.js +221 -0
- package/src/runtime/lifecycle/retention.js +212 -0
- package/src/runtime/lifecycle/root.js +71 -0
- package/src/runtime/lifecycle/status.js +353 -0
- package/src/runtime/lifecycle/store-upkeep.js +393 -0
- package/src/runtime/locator-resolve.js +158 -0
- package/src/runtime/mask.js +210 -0
- package/src/runtime/mcp-consultations.js +412 -0
- package/src/runtime/mcp-reach.js +157 -0
- package/src/runtime/model-router.js +153 -0
- package/src/runtime/outcome.js +467 -0
- package/src/runtime/reach.js +148 -0
- package/src/runtime/readiness-record.js +150 -0
- package/src/runtime/readiness.js +435 -0
- package/src/runtime/recovery.js +282 -0
- package/src/runtime/research-request.js +231 -0
- package/src/runtime/retrieval-plan.js +578 -0
- package/src/runtime/scaffold/artifacts.js +217 -0
- package/src/runtime/scaffold/fingerprint.js +56 -0
- package/src/runtime/scaffold/generate.js +911 -0
- package/src/runtime/scaffold/languages.js +245 -0
- package/src/runtime/storage/cli.js +64 -0
- package/src/runtime/storage/engine.js +249 -0
- package/src/runtime/storage/registry.js +130 -0
- package/src/runtime/storage/roots.js +63 -0
- package/src/runtime/storage/rules.js +282 -0
- package/src/runtime/storage/upkeep.js +243 -0
- package/src/runtime/storage/work-status.js +326 -0
- package/src/runtime/task-attempts.js +415 -0
- package/src/runtime/task-classifier.js +550 -0
- package/src/runtime/task-scope.js +130 -0
- package/src/runtime/task-state.js +176 -0
- package/src/runtime/trace/indicators.js +235 -0
- package/src/runtime/trace/ledger.js +626 -0
- package/src/runtime/trace/render.js +76 -0
- package/src/runtime/trace/views.js +459 -0
- package/src/runtime/verification/contract-runner.js +341 -0
- package/src/runtime/verification/engine.js +1461 -0
- package/src/runtime/verification/registry.js +130 -0
- package/src/runtime/verification/scope-bound.js +418 -0
- package/src/runtime/verification/test-selection.js +172 -0
- package/src/runtime/workflow-engine.js +588 -0
- package/src/runtime/workflow-orchestrator.js +953 -0
- package/src/runtime/worktree.js +340 -0
- package/src/state/index.js +193 -0
- package/src/state/lockfile.js +136 -0
- package/src/state/run-lock.js +408 -0
- package/types/node-commonjs.d.ts +68 -0
- package/types/runtime.d.ts +91 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file": "assets/sample_c_smells.c",
|
|
3
|
+
"language": "c",
|
|
4
|
+
"metrics": {
|
|
5
|
+
"lines": {
|
|
6
|
+
"total": 67,
|
|
7
|
+
"code": 37,
|
|
8
|
+
"blank": 17,
|
|
9
|
+
"comment": 13
|
|
10
|
+
},
|
|
11
|
+
"functions": 4,
|
|
12
|
+
"classes": 0,
|
|
13
|
+
"avg_complexity": 2.0
|
|
14
|
+
},
|
|
15
|
+
"quality_score": 4,
|
|
16
|
+
"grade": "F",
|
|
17
|
+
"smells": [
|
|
18
|
+
{
|
|
19
|
+
"type": "long_function",
|
|
20
|
+
"severity": "medium",
|
|
21
|
+
"message": "Function 'unsafe_input' has 53 lines (max: 50)",
|
|
22
|
+
"location": "unsafe_input"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "magic_number",
|
|
26
|
+
"severity": "low",
|
|
27
|
+
"message": "Magic number 242 should be a named constant",
|
|
28
|
+
"location": "line 17"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "magic_number",
|
|
32
|
+
"severity": "low",
|
|
33
|
+
"message": "Magic number 100 should be a named constant",
|
|
34
|
+
"location": "line 27"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "magic_number",
|
|
38
|
+
"severity": "low",
|
|
39
|
+
"message": "Magic number 134 should be a named constant",
|
|
40
|
+
"location": "line 31"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "magic_number",
|
|
44
|
+
"severity": "low",
|
|
45
|
+
"message": "Magic number 120 should be a named constant",
|
|
46
|
+
"location": "line 35"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "magic_number",
|
|
50
|
+
"severity": "low",
|
|
51
|
+
"message": "Magic number 690 should be a named constant",
|
|
52
|
+
"location": "line 41"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "magic_number",
|
|
56
|
+
"severity": "low",
|
|
57
|
+
"message": "Magic number 416 should be a named constant",
|
|
58
|
+
"location": "line 47"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "magic_number",
|
|
62
|
+
"severity": "low",
|
|
63
|
+
"message": "Magic number 100 should be a named constant",
|
|
64
|
+
"location": "line 62"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "c_banned_gets",
|
|
68
|
+
"severity": "high",
|
|
69
|
+
"message": "'gets()' is unsafe: no bounds check, removed from C11 (CWE-242)",
|
|
70
|
+
"location": "offset 117"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "c_banned_strcpy",
|
|
74
|
+
"severity": "high",
|
|
75
|
+
"message": "'strcpy()' is unsafe: no bounds check \u2014 prefer strncpy or strlcpy",
|
|
76
|
+
"location": "offset 157"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "c_banned_strcpy",
|
|
80
|
+
"severity": "high",
|
|
81
|
+
"message": "'strcpy()' is unsafe: no bounds check \u2014 prefer strncpy or strlcpy",
|
|
82
|
+
"location": "offset 447"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "c_banned_strcat",
|
|
86
|
+
"severity": "high",
|
|
87
|
+
"message": "'strcat()' is unsafe: no bounds check \u2014 prefer strncat or strlcat",
|
|
88
|
+
"location": "offset 186"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"type": "c_banned_sprintf",
|
|
92
|
+
"severity": "high",
|
|
93
|
+
"message": "'sprintf()' is unsafe: no bounds check \u2014 prefer snprintf",
|
|
94
|
+
"location": "offset 238"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"type": "c_format_string",
|
|
98
|
+
"severity": "high",
|
|
99
|
+
"message": "'printf(buf)' uses a non-literal format string \u2014 CWE-134 format string vulnerability",
|
|
100
|
+
"location": "offset 284"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"type": "c_unbounded_scanf",
|
|
104
|
+
"severity": "high",
|
|
105
|
+
"message": "scanf '%s' without a width specifier \u2014 unbounded read can overflow the destination buffer",
|
|
106
|
+
"location": "offset 326"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"type": "c_malloc_unchecked",
|
|
110
|
+
"severity": "medium",
|
|
111
|
+
"message": "'buf' from malloc/calloc/realloc is not NULL-checked within 5 lines \u2014 dereferencing NULL is UB (CWE-690)",
|
|
112
|
+
"location": "line 36"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"type": "c_free_without_null",
|
|
116
|
+
"severity": "low",
|
|
117
|
+
"message": "'free(buf)' not followed by 'buf = NULL;' \u2014 dangling pointer can be reused (CWE-416)",
|
|
118
|
+
"location": "line 42"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"type": "c_system_non_literal",
|
|
122
|
+
"severity": "high",
|
|
123
|
+
"message": "'system(cmd_from_user)' with a non-literal argument \u2014 command injection (CWE-78); use execve with validated args",
|
|
124
|
+
"location": "offset 571"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"solid_violations": [],
|
|
128
|
+
"function_details": [
|
|
129
|
+
{
|
|
130
|
+
"name": "unsafe_input",
|
|
131
|
+
"parameters": 1,
|
|
132
|
+
"lines": 53,
|
|
133
|
+
"complexity": 2
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "leaky_alloc",
|
|
137
|
+
"parameters": 1,
|
|
138
|
+
"lines": 27,
|
|
139
|
+
"complexity": 2
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "run_user_cmd",
|
|
143
|
+
"parameters": 1,
|
|
144
|
+
"lines": 14,
|
|
145
|
+
"complexity": 2
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "main",
|
|
149
|
+
"parameters": 2,
|
|
150
|
+
"lines": 8,
|
|
151
|
+
"complexity": 2
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"class_details": [],
|
|
155
|
+
"policy": {
|
|
156
|
+
"tiers": [
|
|
157
|
+
"built-in",
|
|
158
|
+
"review-policy.json"
|
|
159
|
+
],
|
|
160
|
+
"thresholds": {
|
|
161
|
+
"long_function_lines": 50,
|
|
162
|
+
"too_many_parameters": 5,
|
|
163
|
+
"high_complexity": 10,
|
|
164
|
+
"god_class_methods": 20,
|
|
165
|
+
"max_imports": 15,
|
|
166
|
+
"max_declarative_depth": 8
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file": "assets/sample_cpp_shift.cpp",
|
|
3
|
+
"language": "cpp",
|
|
4
|
+
"metrics": {
|
|
5
|
+
"lines": {
|
|
6
|
+
"total": 20,
|
|
7
|
+
"code": 13,
|
|
8
|
+
"blank": 2,
|
|
9
|
+
"comment": 5
|
|
10
|
+
},
|
|
11
|
+
"functions": 1,
|
|
12
|
+
"classes": 0,
|
|
13
|
+
"avg_complexity": 7.0
|
|
14
|
+
},
|
|
15
|
+
"quality_score": 100,
|
|
16
|
+
"grade": "A",
|
|
17
|
+
"smells": [
|
|
18
|
+
{
|
|
19
|
+
"type": "magic_number",
|
|
20
|
+
"severity": "low",
|
|
21
|
+
"message": "Magic number 100 should be a named constant",
|
|
22
|
+
"location": "line 9"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"solid_violations": [],
|
|
26
|
+
"function_details": [
|
|
27
|
+
{
|
|
28
|
+
"name": "report",
|
|
29
|
+
"parameters": 1,
|
|
30
|
+
"lines": 13,
|
|
31
|
+
"complexity": 7
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"class_details": [],
|
|
35
|
+
"policy": {
|
|
36
|
+
"tiers": [
|
|
37
|
+
"built-in",
|
|
38
|
+
"review-policy.json"
|
|
39
|
+
],
|
|
40
|
+
"thresholds": {
|
|
41
|
+
"long_function_lines": 50,
|
|
42
|
+
"too_many_parameters": 5,
|
|
43
|
+
"high_complexity": 10,
|
|
44
|
+
"god_class_methods": 20,
|
|
45
|
+
"max_imports": 15,
|
|
46
|
+
"max_declarative_depth": 8
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file": "assets/sample_csharp_clean.cs",
|
|
3
|
+
"language": "csharp",
|
|
4
|
+
"metrics": {
|
|
5
|
+
"lines": {
|
|
6
|
+
"total": 101,
|
|
7
|
+
"code": 67,
|
|
8
|
+
"blank": 14,
|
|
9
|
+
"comment": 20
|
|
10
|
+
},
|
|
11
|
+
"functions": 13,
|
|
12
|
+
"classes": 3,
|
|
13
|
+
"avg_complexity": 1.2
|
|
14
|
+
},
|
|
15
|
+
"quality_score": 98,
|
|
16
|
+
"grade": "A",
|
|
17
|
+
"smells": [
|
|
18
|
+
{
|
|
19
|
+
"type": "csharp_unused_using",
|
|
20
|
+
"severity": "low",
|
|
21
|
+
"message": "'using System;' appears unused",
|
|
22
|
+
"location": "System"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "csharp_unused_using",
|
|
26
|
+
"severity": "low",
|
|
27
|
+
"message": "'using System.Net.Http;' appears unused",
|
|
28
|
+
"location": "System.Net.Http"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "csharp_unused_using",
|
|
32
|
+
"severity": "low",
|
|
33
|
+
"message": "'using System.Threading.Tasks;' appears unused",
|
|
34
|
+
"location": "System.Threading.Tasks"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "csharp_unused_using",
|
|
38
|
+
"severity": "low",
|
|
39
|
+
"message": "'using System.Data.SqlClient;' appears unused",
|
|
40
|
+
"location": "System.Data.SqlClient"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "csharp_unused_using",
|
|
44
|
+
"severity": "low",
|
|
45
|
+
"message": "'using Microsoft.Extensions.Logging;' appears unused",
|
|
46
|
+
"location": "Microsoft.Extensions.Logging"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "csharp_unused_using",
|
|
50
|
+
"severity": "low",
|
|
51
|
+
"message": "'using Microsoft.Extensions.Options;' appears unused",
|
|
52
|
+
"location": "Microsoft.Extensions.Options"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"solid_violations": [],
|
|
56
|
+
"function_details": [
|
|
57
|
+
{
|
|
58
|
+
"name": "HttpClient",
|
|
59
|
+
"parameters": 0,
|
|
60
|
+
"lines": 1,
|
|
61
|
+
"complexity": 1
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "UserService",
|
|
65
|
+
"parameters": 3,
|
|
66
|
+
"lines": 6,
|
|
67
|
+
"complexity": 1
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "Task",
|
|
71
|
+
"parameters": 1,
|
|
72
|
+
"lines": 1,
|
|
73
|
+
"complexity": 2
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "HandleClickAsync",
|
|
77
|
+
"parameters": 0,
|
|
78
|
+
"lines": 6,
|
|
79
|
+
"complexity": 1
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "FetchAsync",
|
|
83
|
+
"parameters": 0,
|
|
84
|
+
"lines": 12,
|
|
85
|
+
"complexity": 2
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "InvalidOperationException",
|
|
89
|
+
"parameters": 1,
|
|
90
|
+
"lines": 18,
|
|
91
|
+
"complexity": 2
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "FirstValue",
|
|
95
|
+
"parameters": 1,
|
|
96
|
+
"lines": 1,
|
|
97
|
+
"complexity": 1
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "GetName",
|
|
101
|
+
"parameters": 1,
|
|
102
|
+
"lines": 4,
|
|
103
|
+
"complexity": 1
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "SqlConnection",
|
|
107
|
+
"parameters": 1,
|
|
108
|
+
"lines": 3,
|
|
109
|
+
"complexity": 1
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "SqlCommand",
|
|
113
|
+
"parameters": 2,
|
|
114
|
+
"lines": 5,
|
|
115
|
+
"complexity": 1
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"class_details": [
|
|
119
|
+
{
|
|
120
|
+
"name": "DbOptions",
|
|
121
|
+
"methods": 0,
|
|
122
|
+
"lines": 7
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "UserService",
|
|
126
|
+
"methods": 8,
|
|
127
|
+
"lines": 75
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "User",
|
|
131
|
+
"methods": 0,
|
|
132
|
+
"lines": 3
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"policy": {
|
|
136
|
+
"tiers": [
|
|
137
|
+
"built-in",
|
|
138
|
+
"review-policy.json"
|
|
139
|
+
],
|
|
140
|
+
"thresholds": {
|
|
141
|
+
"long_function_lines": 50,
|
|
142
|
+
"too_many_parameters": 5,
|
|
143
|
+
"high_complexity": 10,
|
|
144
|
+
"god_class_methods": 20,
|
|
145
|
+
"max_imports": 15,
|
|
146
|
+
"max_declarative_depth": 8
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file": "assets/sample_csharp_smells.cs",
|
|
3
|
+
"language": "csharp",
|
|
4
|
+
"metrics": {
|
|
5
|
+
"lines": {
|
|
6
|
+
"total": 79,
|
|
7
|
+
"code": 43,
|
|
8
|
+
"blank": 11,
|
|
9
|
+
"comment": 25
|
|
10
|
+
},
|
|
11
|
+
"functions": 7,
|
|
12
|
+
"classes": 1,
|
|
13
|
+
"avg_complexity": 1.1
|
|
14
|
+
},
|
|
15
|
+
"quality_score": 45,
|
|
16
|
+
"grade": "F",
|
|
17
|
+
"smells": [
|
|
18
|
+
{
|
|
19
|
+
"type": "csharp_async_void",
|
|
20
|
+
"severity": "high",
|
|
21
|
+
"message": "'async void HandleClick' \u2014 only safe for event handlers; prefer 'async Task'",
|
|
22
|
+
"location": "HandleClick"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "csharp_blocking_async",
|
|
26
|
+
"severity": "high",
|
|
27
|
+
"message": "Blocking call on async operation ('.Result' / '.Wait()' / '.GetAwaiter().GetResult()') \u2014 can deadlock in ASP.NET contexts",
|
|
28
|
+
"location": "offset 430"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "csharp_swallowed_exception",
|
|
32
|
+
"severity": "high",
|
|
33
|
+
"message": "Empty catch block swallows exceptions silently",
|
|
34
|
+
"location": "offset 853"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "csharp_undisposed_idisposable",
|
|
38
|
+
"severity": "medium",
|
|
39
|
+
"message": "'HttpClient' looks like IDisposable but is not wrapped in 'using' / 'using var'",
|
|
40
|
+
"location": "offset 555"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "csharp_undisposed_idisposable",
|
|
44
|
+
"severity": "medium",
|
|
45
|
+
"message": "'SqlCommand' looks like IDisposable but is not wrapped in 'using' / 'using var'",
|
|
46
|
+
"location": "offset 1289"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "csharp_new_httpclient",
|
|
50
|
+
"severity": "medium",
|
|
51
|
+
"message": "'new HttpClient()' \u2014 prefer IHttpClientFactory or a long-lived static instance to avoid socket exhaustion",
|
|
52
|
+
"location": "offset 606"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "csharp_missing_await",
|
|
56
|
+
"severity": "medium",
|
|
57
|
+
"message": "Async method called without 'await' \u2014 Task is discarded",
|
|
58
|
+
"location": "line 42"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "csharp_unused_using",
|
|
62
|
+
"severity": "low",
|
|
63
|
+
"message": "'using System;' appears unused",
|
|
64
|
+
"location": "System"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "csharp_unused_using",
|
|
68
|
+
"severity": "low",
|
|
69
|
+
"message": "'using System.Net.Http;' appears unused",
|
|
70
|
+
"location": "System.Net.Http"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "csharp_unused_using",
|
|
74
|
+
"severity": "low",
|
|
75
|
+
"message": "'using System.Threading.Tasks;' appears unused",
|
|
76
|
+
"location": "System.Threading.Tasks"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "csharp_unused_using",
|
|
80
|
+
"severity": "low",
|
|
81
|
+
"message": "'using System.Data.SqlClient;' appears unused",
|
|
82
|
+
"location": "System.Data.SqlClient"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "csharp_unused_using",
|
|
86
|
+
"severity": "low",
|
|
87
|
+
"message": "'using System.Diagnostics.CodeAnalysis;' appears unused",
|
|
88
|
+
"location": "System.Diagnostics.CodeAnalysis"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"solid_violations": [],
|
|
92
|
+
"function_details": [
|
|
93
|
+
{
|
|
94
|
+
"name": "HandleClick",
|
|
95
|
+
"parameters": 2,
|
|
96
|
+
"lines": 7,
|
|
97
|
+
"complexity": 1
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "FetchAsync",
|
|
101
|
+
"parameters": 0,
|
|
102
|
+
"lines": 2,
|
|
103
|
+
"complexity": 1
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "HttpClient",
|
|
107
|
+
"parameters": 0,
|
|
108
|
+
"lines": 3,
|
|
109
|
+
"complexity": 1
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "HttpClient",
|
|
113
|
+
"parameters": 0,
|
|
114
|
+
"lines": 21,
|
|
115
|
+
"complexity": 2
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "Pointers",
|
|
119
|
+
"parameters": 0,
|
|
120
|
+
"lines": 10,
|
|
121
|
+
"complexity": 1
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "GetName",
|
|
125
|
+
"parameters": 2,
|
|
126
|
+
"lines": 5,
|
|
127
|
+
"complexity": 1
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "SqlCommand",
|
|
131
|
+
"parameters": 2,
|
|
132
|
+
"lines": 5,
|
|
133
|
+
"complexity": 1
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"class_details": [
|
|
137
|
+
{
|
|
138
|
+
"name": "UserService",
|
|
139
|
+
"methods": 4,
|
|
140
|
+
"lines": 61
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"policy": {
|
|
144
|
+
"tiers": [
|
|
145
|
+
"built-in",
|
|
146
|
+
"review-policy.json"
|
|
147
|
+
],
|
|
148
|
+
"thresholds": {
|
|
149
|
+
"long_function_lines": 50,
|
|
150
|
+
"too_many_parameters": 5,
|
|
151
|
+
"high_complexity": 10,
|
|
152
|
+
"god_class_methods": 20,
|
|
153
|
+
"max_imports": 15,
|
|
154
|
+
"max_declarative_depth": 8
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file": "assets/sample_java_clean.java",
|
|
3
|
+
"language": "java",
|
|
4
|
+
"metrics": {
|
|
5
|
+
"lines": {
|
|
6
|
+
"total": 56,
|
|
7
|
+
"code": 33,
|
|
8
|
+
"blank": 9,
|
|
9
|
+
"comment": 14
|
|
10
|
+
},
|
|
11
|
+
"functions": 3,
|
|
12
|
+
"classes": 1,
|
|
13
|
+
"avg_complexity": 1.7
|
|
14
|
+
},
|
|
15
|
+
"quality_score": 100,
|
|
16
|
+
"grade": "A",
|
|
17
|
+
"smells": [
|
|
18
|
+
{
|
|
19
|
+
"type": "magic_number",
|
|
20
|
+
"severity": "low",
|
|
21
|
+
"message": "Magic number 1000 should be a named constant",
|
|
22
|
+
"location": "line 49"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"solid_violations": [],
|
|
26
|
+
"function_details": [
|
|
27
|
+
{
|
|
28
|
+
"name": "UserService",
|
|
29
|
+
"parameters": 1,
|
|
30
|
+
"lines": 3,
|
|
31
|
+
"complexity": 1
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "getName",
|
|
35
|
+
"parameters": 2,
|
|
36
|
+
"lines": 15,
|
|
37
|
+
"complexity": 2
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "process",
|
|
41
|
+
"parameters": 0,
|
|
42
|
+
"lines": 9,
|
|
43
|
+
"complexity": 2
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"class_details": [
|
|
47
|
+
{
|
|
48
|
+
"name": "UserService",
|
|
49
|
+
"methods": 3,
|
|
50
|
+
"lines": 38
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"policy": {
|
|
54
|
+
"tiers": [
|
|
55
|
+
"built-in",
|
|
56
|
+
"review-policy.json"
|
|
57
|
+
],
|
|
58
|
+
"thresholds": {
|
|
59
|
+
"long_function_lines": 50,
|
|
60
|
+
"too_many_parameters": 5,
|
|
61
|
+
"high_complexity": 10,
|
|
62
|
+
"god_class_methods": 20,
|
|
63
|
+
"max_imports": 15,
|
|
64
|
+
"max_declarative_depth": 8
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file": "assets/sample_java_smells.java",
|
|
3
|
+
"language": "java",
|
|
4
|
+
"metrics": {
|
|
5
|
+
"lines": {
|
|
6
|
+
"total": 57,
|
|
7
|
+
"code": 29,
|
|
8
|
+
"blank": 10,
|
|
9
|
+
"comment": 18
|
|
10
|
+
},
|
|
11
|
+
"functions": 3,
|
|
12
|
+
"classes": 1,
|
|
13
|
+
"avg_complexity": 1.7
|
|
14
|
+
},
|
|
15
|
+
"quality_score": 68,
|
|
16
|
+
"grade": "D",
|
|
17
|
+
"smells": [
|
|
18
|
+
{
|
|
19
|
+
"type": "magic_number",
|
|
20
|
+
"severity": "low",
|
|
21
|
+
"message": "Magic number 1000 should be a named constant",
|
|
22
|
+
"location": "line 44"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "java_empty_catch",
|
|
26
|
+
"severity": "high",
|
|
27
|
+
"message": "Empty catch block swallows exceptions silently",
|
|
28
|
+
"location": "offset 684"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "java_print_stack_trace",
|
|
32
|
+
"severity": "medium",
|
|
33
|
+
"message": "'printStackTrace()' is not real error handling \u2014 log via a proper logger or rethrow with context",
|
|
34
|
+
"location": "offset 913"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "java_swallowed_interrupt",
|
|
38
|
+
"severity": "high",
|
|
39
|
+
"message": "InterruptedException caught without 'Thread.currentThread().interrupt()' \u2014 breaks cooperative cancellation",
|
|
40
|
+
"location": "offset 841"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "java_unclosed_resource",
|
|
44
|
+
"severity": "medium",
|
|
45
|
+
"message": "'FileInputStream' looks like an AutoCloseable but is not in a try-with-resources statement",
|
|
46
|
+
"location": "offset 366"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "java_per_use_heavy_object",
|
|
50
|
+
"severity": "medium",
|
|
51
|
+
"message": "'new ObjectMapper()' is expensive \u2014 share a singleton instance instead of constructing per call",
|
|
52
|
+
"location": "offset 451"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"solid_violations": [],
|
|
56
|
+
"function_details": [
|
|
57
|
+
{
|
|
58
|
+
"name": "getName",
|
|
59
|
+
"parameters": 2,
|
|
60
|
+
"lines": 16,
|
|
61
|
+
"complexity": 2
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "process",
|
|
65
|
+
"parameters": 0,
|
|
66
|
+
"lines": 9,
|
|
67
|
+
"complexity": 2
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "log",
|
|
71
|
+
"parameters": 1,
|
|
72
|
+
"lines": 5,
|
|
73
|
+
"complexity": 1
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"class_details": [
|
|
77
|
+
{
|
|
78
|
+
"name": "UserService",
|
|
79
|
+
"methods": 3,
|
|
80
|
+
"lines": 40
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"policy": {
|
|
84
|
+
"tiers": [
|
|
85
|
+
"built-in",
|
|
86
|
+
"review-policy.json"
|
|
87
|
+
],
|
|
88
|
+
"thresholds": {
|
|
89
|
+
"long_function_lines": 50,
|
|
90
|
+
"too_many_parameters": 5,
|
|
91
|
+
"high_complexity": 10,
|
|
92
|
+
"god_class_methods": 20,
|
|
93
|
+
"max_imports": 15,
|
|
94
|
+
"max_declarative_depth": 8
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|