find-complexity

Trouve les fonctions et méthodes avec une complexité cyclomatique élevée, une longueur excessive ou trop de paramètres. À utiliser lorsque l'utilisateur demande de trouver du code complexe, de la complexité…

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

Find Complexity Hotspots

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

Rules

  • Report findings, do not refactor. Refactoring is a separate task.
  • Focus on production code (ols/). 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 ols/ directory.

For branch mode:

git diff --name-only origin/main -- 'ols/' | grep '\.py$'

Step 2: Cyclomatic Complexity

uvx radon cc <target> -s -n C -a

This shows functions with complexity grade C or worse (threshold: 11+).

Grades: A (1-5), B (6-10), C (11-15), D (16-20), E (21-25), F (26+).

Step 3: Maintainability Index

uvx radon mi <target> -s -n B

This shows files with maintainability grade B or worse.

Grades: A (20+, good), B (10-19, medium), C (0-9, poor).

Step 4: Cognitive Complexity

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

uvx --with flake8-cognitive-complexity flake8 --select=CCR001 --max-cognitive-complexity=10 <target>

Step 5: Function Length

Find long functions (30+ lines of logic, excluding docstrings and blank lines):

uvx radon raw <target> -s

Also use pylint for method length:

uv run pylint --disable=all --enable=too-many-statements,too-many-branches,too-many-return-statements,too-many-arguments,too-many-locals <target>

Step 6: File Size

Find large files (500+ lines):

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

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

Step 7: Classify Findings

For each function found, classify:

CategoryCriteriaAction
SplitHigh complexity + long bodyBreak into smaller functions
SimplifyHigh complexity + short bodyReduce branching (early returns, lookup tables)
ParameterizeToo many arguments (6+)Group into config/dataclass
MonitorGrade C, not growingNote it, revisit if it gets worse
Split fileFile over 500 linesBreak into focused modules

Step 8: Report

For each finding:

  1. File, function name, line number
  2. Complexity grade and score
  3. Number of statements / arguments
  4. Classification (split / simplify / parameterize / monitor)
  5. Brief suggestion

Summary: total hotspots by grade, top 5 worst offenders.

Plus de skills de openshift

openshift-expert
openshift
Expert de la plateforme OpenShift et de Kubernetes avec une connaissance approfondie de l'architecture des clusters, des opérateurs, du réseau, du stockage, du dépannage et des pipelines CI/CD. Utilisez…
official
find-token
openshift
Trouvez le jeton de vérification caché. Exécutez le script find-token pour récupérer un jeton unique.
official
code-review
openshift
Examiner une demande de tirage pour la qualité du code, l'exactitude et les conventions du projet. Utiliser lorsque l'utilisateur demande de réviser une PR, une revue de code, ou d'examiner des modifications sur une…
official
css-review
openshift
Examiner le CSS pour le style de codage, l'utilisation des tokens PatternFly et les bonnes pratiques. Utiliser lorsque l'utilisateur demande de réviser du CSS, vérifier des styles ou auditer des fichiers CSS.
official
review-readmes
openshift
Examiner tous les fichiers README.md du dépôt pour détecter les fautes de frappe, erreurs et informations obsolètes. Utiliser lorsque l'utilisateur demande de vérifier les README, de contrôler l'exactitude de la documentation, ou…
official
review-skills
openshift
Examiner les compétences IA du projet pour détecter les doublons, les références obsolètes, les erreurs et les problèmes structurels. Utiliser lorsque l'utilisateur demande de réviser les compétences, d'auditer les compétences, de vérifier…
official
test
openshift
Exécute des tests de bout en bout filtrés par balise. À utiliser lorsque l'utilisateur demande d'exécuter des tests, de lancer Playwright, ou de tester une balise de fonctionnalité spécifique comme @core ou @attach.
official
unused-exports
openshift
Trouve les symboles exportés qui ne sont jamais importés par un autre fichier. À utiliser lorsque l'utilisateur dit "vérifier les exports", "exports inutilisés" ou demande de nettoyer les exports.
official