Codex Exemples pratiques de la CLI

Cette section présente divers scénarios d'utilisation de Codex CLI à travers des exemples pratiques, vous aidant à maîtriser rapidement son application dans le développement réel.


Écriture de code

Exemple 1 : Création d'une nouvelle fonctionnalité

Laissez Codex créer un module de fonctionnalité complet pour vous :

Tâche

Créez une fonction Python qui accepte une liste de chaînes de caractères et renvoie la chaîne la plus longue et sa position d'index

Codex générera un code semblable à ce qui suit :

Code généré

def find_longest_string(strings):
    """
Trouvez la chaîne la plus longue dans une liste de chaînes de caractères et sa position d'index.

    Arguments :
strings : liste de chaînes de caractères

    Retourne :
tuple : (chaîne la plus longue, position d'index)
Si la liste est vide, retourner (None, -1)
    """

    if not strings:
        return None, -1

    longest = max(strings, key=len)
    index = strings.index(longest)

    return longest, index


# Exemple de test
if __name__ == "__main__":
    test_list = ["apple", "banana", "cherry", "dragonfruit"]
    result, idx = find_longest_string(test_list)
    print(f"Chaîne la plus longue: {result}, indice: {idx}")
    # Sortie: Chaîne la plus longue: dragonfruit, indice: 3
Le code généré par Codex comprend des docstrings détaillées et des exemples de test, et peut être utilisé directement.

Exemple 2 : Refactorisation du code

Demandez à Codex de refactoriser le code existant :

Tâche

Refactorisez cette fonction pour utiliser un générateur :
def get_squares(n):
    result = []
    for i in range(n):
        result.append(i * i)
    return result

Codex fournira le code refactorisé :

Code refactorisé

def get_squares(n):
    """
Générez les nombres carrés de 0 à n-1.

    Arguments :
n : nombre de nombres carrés à générer

    Produit :
int: nombres carrés de 0 à n-1
    """

    for i in range(n):
        yield i * i


# Exemple d'utilisation
for square in get_squares(5):
    print(square)
# Sortie : 0, 1, 4, 9, 16

Revue de code

Exemple 1 : Examiner les problèmes de code

Demandez à Codex d'examiner le code et de suggérer des améliorations :

Tâche

Examinez les problèmes dans le code suivant :
def process_data(data):
    result = []
    for item in data:
        if item['type'] == 'a':
            result.append(item['value'] * 2)
        elif item['type'] == 'b':
            result.append(item['value'] + 10)
        elif item['type'] == 'c':
            result.append(item['value'])
    return result

Codex analysera et fournira un rapport de revue :

## 代码审查报告

### 问题
1. **缺少错误处理**:没有检查 item 是否包含必要的键
2. **类型不一致**:'c' 类型直接返回原值,而其他类型做了处理
3. **硬编码值**:乘数和加数应该作为参数或配置

### 改进建议
1. 添加默认字典或 try-except 处理
2. 统一处理逻辑
3. 将 magic numbers 提取为常量

Exemple 2 : Utilisation de la commande /review

Utilisez la commande de revue intégrée dans Codex :

Tâche

/review src/

Codex parcourra tout lesrc/répertoire et générera un rapport complet de revue de code.


Débogage et dépannage

Exemple 1 : Analyse des messages d'erreur

Fournissez le message d'erreur à Codex pour analyse :

Tâche

Aidez-moi à analyser cette erreur :
Traceback (appel le plus récent en dernier):
  Fichier "app.py", ligne 42, dans <module>
    main()
  Fichier "app.py", ligne 38, dans fetch_data()
  Fichier "app.py", ligne 25, dans fetch_data
    response = requests.get(url)
  Fichier "/usr/lib/python3.10/site-packages/requests/api.py", ligne 88, dans dans get
    return session.request(method='GET', url=url, **kwargs)
  requests.exceptions.ConnectionError: HTTPSConnectionPool(hôte='api.example.com', port=443): Nombre maximal de tentatives dépassé

Codex fournira une analyse et une solution :

## 错误分析

### 原因
网络连接问题 - 无法连接到 api.example.com

### 可能的原因
1. 网络不通
2. 域名解析失败
3. 服务器不可用
4. 防火墙阻止

### 建议的排查步骤
1. 检查网络连接:ping api.example.com
2. 验证域名解析:nslookup api.example.com
3. 检查端口是否开放:telnet api.example.com 443
4. 如果是本地开发,检查代理设置

Exemple 2 : Ajout de journaux de débogage

Demandez à Codex d'ajouter du code de débogage :

Tâche

Ajoutez des journaux de débogage à cette fonction :
def calculate(a, b):
    return a + b * (a - b)

Codex générera une version avec des journaux de débogage :

Ajouter des journaux de débogage

import logging

# Configurer la journalisation
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)


def calculate(a, b):
    """Fonction de calcul avec des journaux de débogage"""
    logger.debug(f"calculate appelé avec a={a}, b={b}")

    result = a + b * (a - b)

    logger.debug(f"a + b = {a} + {b} = {a + b}")
    logger.debug(f"a - b = {a} - {b} = {a - b}")
    logger.debug(f"b * (a - b) = {b} * {a - b} = {b * (a - b)}")
    logger.debug(f"résultat final : {result}")

    return result

Opérations sur les fichiers

Exemple 1 : Renommage par lots de fichiers

Tâche

Renommer tous les fichiers comme image_001.jpg dans le répertoire courant en image-001.jpg (remplacer les traits de soulignement par des traits d'union)

Exemple 2 : Création d'une structure de projet

Tâche

Créer une structure de répertoires standard pour un projet Flask, comprenant :
- fichier principal app.py
- fichier de configuration config.py
- requirements.txt
- répertoire de tests/directory
- répertoire static/et templates/directory

Codex créera la structure complète du projet et générera tous les fichiers nécessaires.

Codex listera d'abord les fichiers à créer, puis exécutera après confirmation.

Exécution de commande

Exemple 1 : Exécution des tests

Tâche

Exécuter les tests unitaires du projet

Codex détectera automatiquement le type de projet et exécutera la commande de test correspondante :

  • Projet Python : pytest ou unittest
  • Projet Node.js : npm test ou yarn test
  • Projet Rust : cargo test

Exemple 2 : Opérations Git

Tâche

Créer un commit Git qui inclut toutes les modifications et utilise un message de commit approprié

Codex analysera toutes les modifications non validées, puis exécutera :

  1. git status- Afficher les modifications
  2. git diff- Examiner des modifications spécifiques
  3. git add -A- Ajouter tous les fichiers
  4. git commit -m "..."- Créer un commit
Pour les opérations Git, Codex affichera d'abord les modifications, et n'exécutera qu'après confirmation.

Analyse du projet

Exemple 1 : Comprendre la structure du projet

Tâche

Analyser l'architecture et la stack technique de ce projet

Codex vérifiera les éléments suivants du projet :

  • Fichiers de configuration (package.json, Cargo.toml, requirements.txt, etc.)
  • Structure des répertoires
  • Fichiers sources principaux

Fournissez ensuite un rapport d'analyse détaillé.

Exemple 2 : Recherche des dépendances

Tâche

Trouvez les fichiers qui référencent le fichier auth.py

Mode plan

Utilisez la commande /plan pour planifier des tâches complexes :

Tâche

/Planifier l'ajout de l'authentification utilisateur à ce projet React, y compris la connexion, l'inscription et la vérification JWT

Codex affichera d'abord un plan d'implémentation détaillé :

## 实施计划:用户认证功能

### 步骤 1:准备
- 创建用户模型
- 安装认证依赖(jsonwebtoken, bcryptjs)

### 步骤 2:后端实现
- 创建 /api/auth/register 端点
- 创建 /api/auth/login 端点
- 实现 JWT 生成和验证中间件

### 步骤 3:前端实现
- 创建登录表单组件
- 创建注册表单组件
- 添加认证状态管理

### 步骤 4:测试
- 编写后端单元测试
- 测试前端表单交互

是否确认执行此计划?
[Y] 确认 [N] 取消 [M] 修改
Le mode Plan vous permet de comprendre l'approche complète de Codex avant l'exécution, ce qui évite des reprises inutiles.

Exemples complets

Un exemple complet de flux de travail :

Flux de travail complet

# 1. Démarrer une nouvelle session
/nouveau

# 2. Comprendre le projet
Quel framework ce projet utilise-t-il ? Quelles sont les principales fonctionnalités ?

# 3. Ajouter une nouvelle fonctionnalité
Dansusers, ajoutez une fonctionnalité pour envoyer des codes de vérification dans le module ; il faut prendre en compte :
- Génération de code de vérification (6chiffres)
- 60Impossible de renvoyer avant quelques secondes
- Code de vérification10valable pendant quelques minutes

# 4. Test
Exécuter les tests pertinents pour garantir que la fonctionnalité fonctionne correctement

# 5. Revue de code
/revue

Cet exemple illustre un flux de développement typique : comprendre le projet → implémenter la fonctionnalité → tester → revue.


Résumé rapide des opérations

ScénarioCommande à utiliser
Écrire une fonctionDécrivez simplement le besoin
Relire le code/review ou « aidez-moi à relire... »
Déboguer les problèmesCollez le message d'erreur et demandez une analyse
Exécutez la commandeCommencez par !
Planification de tâches complexes/plan + description de la tâche
Comprendre le code« Que fait cette fonction ? »
C'est en forgeant qu'on devient forgeron. Utiliser Codex plus souvent vous rendra plus compétent, et votre efficacité à écrire du code s'améliorera grandement.
autres extensions