find-complexity

द्वारा openshift

उच्च चक्रीय जटिलता, अत्यधिक लंबाई या बहुत अधिक पैरामीटर वाले फ़ंक्शन खोजें। उपयोग तब करें जब उपयोगकर्ता जटिल कोड, जटिलता हॉटस्पॉट खोजने के लिए कहे,…

npx skills add https://github.com/openshift/lightspeed-operator --skill find-complexity

Find Complexity Hotspots

Identify Go functions that are hard to review, test, and maintain.

Rules

  • Report findings, do not refactor. Refactoring is a separate task.
  • Focus on production code (internal/, api/, cmd/). Skip tests unless explicitly asked.
  • Rank by severity: highest complexity first.

Step 1: Determine Scope

Ask the user:

  • Branch mode: only files changed in the current branch vs main.
  • Full mode: scan the entire codebase.

For branch mode:

git diff --name-only upstream/main -- 'internal/' 'api/' 'cmd/' | grep '\.go$' | grep -v '_test\.go$'

Step 2: Install Prerequisites

Install gocyclo and gocognit if not available:

go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
go install github.com/uudashr/gocognit/cmd/gocognit@latest

Step 3: Cyclomatic Complexity

gocyclo -over 10 <target>

This shows functions with cyclomatic complexity over 10.

Thresholds: 1-10 (simple), 11-20 (moderate), 21-50 (complex), 51+ (untestable).

Step 4: Cognitive Complexity

Cognitive complexity weights nesting depth — a 5-deep if scores much higher than 5 sequential ifs.

gocognit -over 15 <target>

This shows functions with cognitive complexity over 15.

Step 5: Function Length

Find long functions (50+ lines of code, excluding comments and blank lines):

for file in $(find <target> -name '*.go' -not -name '*_test.go'); do
    awk '/^func / {start=NR; func=$0} 
         /^}/ && start {
           len=NR-start; 
           if(len>50) print FILENAME":"start": "func" ("len" lines)"
         }' "$file"
done

Step 6: Parameter Count

Find functions with too many parameters (6+):

rg "^func.*\([^)]{60,}\)" <target> -A 0

Functions with 6+ parameters are candidates for parameter objects or config structs.

Step 7: File Size

Find large files (500+ lines):

wc -l $(find <target> -name '*.go' -not -name '*_test.go') | sort -rn | head -20

Files over 500 lines are candidates for splitting into focused packages.

Step 8: Classify Findings

For each function found, classify:

CategoryCriteriaAction
SplitHigh complexity + long bodyBreak into smaller functions
SimplifyHigh complexity + short bodyReduce branching (early returns, switch statements)
ParameterizeToo many arguments (6+)Group into config struct
MonitorComplexity 11-15, not growingNote it, revisit if it gets worse
Split fileFile over 500 linesBreak into focused packages

Step 9: Report

For each finding:

  1. File, function name, line number
  2. Cyclomatic/cognitive complexity score
  3. Lines of code / parameter count
  4. Classification (split / simplify / parameterize / monitor)
  5. Brief suggestion

Summary: total hotspots, top 5 worst offenders, estimated refactoring effort.

openshift की और Skills

openshift-docs
openshift
मार्कडाउन प्रारूप में OpenShift Container Platform दस्तावेज़ खोजें और पढ़ें। उपयोग तब करें जब उपयोगकर्ता OpenShift सुविधाओं, कॉन्फ़िगरेशन, इंस्टॉलेशन आदि के बारे में पूछता है।
triage-leaked-infra
openshift
मूल्यांकन करें कि क्या AWS VPC या HyperShift CI से इंफ्रा सेट हटाना सुरक्षित है। उपयोग करें जब उपयोगकर्ता cleanleaked आउटपुट पेस्ट करता है और पूछता है 'क्या मैं इसे हटा सकता हूँ?', 'क्या…
openshift-expert
openshift
OpenShift प्लेटफ़ॉर्म और Kubernetes विशेषज्ञ जिसे क्लस्टर आर्किटेक्चर, ऑपरेटर, नेटवर्किंग, स्टोरेज, समस्या निवारण और CI/CD पाइपलाइनों का गहन ज्ञान है। उपयोग करें…
Konflux Archived PipelineRuns
openshift
KubeArchive के माध्यम से संग्रहीत Konflux PipelineRuns, TaskRuns और पॉड लॉग तक पहुँचता है। Konflux PipelineRun परिणामों की जाँच करते समय, जाँच करते समय स्वचालित रूप से लागू होता है…
backport
openshift
मुख्य शाखा से रिलीज़ शाखा में कमिट या PR को बैकपोर्ट करें। जब उपयोगकर्ता बैकपोर्ट, चेरी-पिक, या शाखाओं के बीच परिवर्तन पोर्ट करने के लिए कहे, या समाधान करते समय उपयोग करें…
rebase
openshift
वर्तमान शाखा को उसकी आधार शाखा पर रीबेस करें, सभी विरोधों को हल करें, और लिंट, i18n, और बिल्ड पास होने की पुष्टि करें। उपयोग तब करें जब उपयोगकर्ता रीबेस, अपडेट या सिंक करने के लिए कहे…
Build CPO Image
openshift
कंट्रोल-प्लेन-ऑपरेटर कंटेनर इमेज बनाएँ और पुश करें। CPO परिवर्तनों का परीक्षण करते समय जिन्हें लाइव क्लस्टर पर तैनात करने की आवश्यकता होती है, स्वचालित रूप से लागू होता है।
find-complexity
openshift
उच्च चक्रीय जटिलता, अत्यधिक लंबाई या बहुत अधिक पैरामीटर वाले फंक्शन और मेथड खोजें। उपयोग तब करें जब उपयोगकर्ता जटिल कोड, जटिलता खोजने के लिए कहे…