Introducción al uso de Copilot

Compartir video

GitHub Copilot es una herramienta de finalización de código basada en aprendizaje automático que ayuda a escribir código más rápido y mejora la eficiencia de codificación.

Capacidades de Copilot Labs

CapacidadDescripciónComentarioejemplo
ExplainGenerar explicaciones para fragmentos de códigoOpciones avanzadas para personalizar indicaciones, explicar requisitos de manera más clarapicture 1
Show example codeGenerar código de ejemplo para fragmentos de códigoOpciones avanzadas para personalizarpicture 2
Language TranslationGenerar traducciones para fragmentos de códigoEsta traducción es basada en lenguajes de programación, por ejemplo C++ -> Pythonpicture 3
ReadableMejorar la legibilidad de un fragmento de códigoNo es simplemente formatear, es una mejora real de la legibilidadpicture 4
Add TypesInferencia de tiposConvertir variables de tipo automático a tipos explícitospicture 5
Fix bugCorregir erroresCorregir algunos errores comunespicture 6
DebugHacer que el código sea más fácil de depurarAumentar impresiones de registro o añadir variables temporales para puntos de interrupciónpicture 7
CleanLimpiar códigoEliminar partes innecesarias del código, comentarios/impresiones/código obsoleto, etc.picture 8
List stepsEnumerar los pasos del códigoAlgunos códigos dependen estrictamente del orden de ejecución, es necesario comentar claramente este ordenpicture 9
Make robustHacer el código más robustoConsiderar límites/hilos múltiples/reingreso, etc.picture 10
ChunkDividir el código en bloquesGeneralmente se espera que las líneas efectivas de una función sean <=50, anidación <=4, fan-out <=7, complejidad ciclomática <=20picture 11
DocumentGenerar documentación del códigoGenerar código mediante comentarios, también se puede generar comentarios y documentación mediante códigopicture 12
CustomOperaciones personalizadasDecirle a copilot cómo operar tu códigopicture 13

Qué es Copilot

La presentación en el sitio oficial es simple y clara: Tu programador en pareja — Tu programador en pareja

Programación en pareja: es un método de desarrollo ágil de software donde dos programadores trabajan en la misma computadora: uno escribe el código y el otro revisa cada línea. Los roles cambian frecuentemente para asegurar una lógica rigurosa y prevenir problemas.

Copilot participa en el trabajo de codificación mediante las siguientes formas, realizando el papel de programador en pareja.

Comprensión

Copilot es un gran modelo de lenguaje, no puede comprender nuestro código, tampoco podemos entender el modelo de Copilot, aquí la comprensión es la comprensión mutua entre un programador y un grupo de programadores. Basados en algunos consensos, todos trabajan juntos en el código.

picture 14

Copilot recopila información para comprender el contexto, la información incluye:

  • Código que se está editando
  • Archivos relacionados
  • Archivos abiertos en el IDE
  • Dirección de la biblioteca
  • Ruta del archivo

Copilot no solo comprende mediante un comentario, recopila suficiente información contextual para entender qué se hará a continuación.

Sugerencias

Sugerencia completaSugerencia inline
picture 15picture 16

Como es bien sabido, la forma más común de obtener sugerencias es mediante comentarios descriptivos en lugar de escribir código directamente, guiando así a GitHub Copilot para que dé sugerencias completas. Sin embargo, esto puede causar redundancia de comentarios, los comentarios no son mejores cuanto más haya, los comentarios ayudan a la comprensión, pero no son el cuerpo principal del código. Un buen código es claro sin comentarios, dependiendo de nombres apropiados, diseño razonable y lógica clara. Cuando se utilizan sugerencias inline, basta con dar nombres de variables/funciones/clases adecuados, Copilot siempre puede ofrecer sugerencias adecuadas.

Además de una entrada externa adecuada, Copilot también admite sugerencias basadas en fragmentos de código existentes, Copilot Labs->Show example code puede ayudar a generar código de ejemplo para funciones específicas, solo necesita seleccionar el código y hacer clic en Show example code.

Ctrl+Enter, siempre puede brindar mucha inspiración, creé tres archivos, un main.cpp vacío, un calculator.h vacío, en calculator.cpp implementé “suma” y “resta”, Copilot dio las siguientes sugerencias:

  1. Agregar implementaciones de “multiplicación” y “división”
  2. Llamar a “suma, resta, multiplicación y división” en main
  3. Creación y uso de bibliotecas estáticas de calculadora
  4. Resultado de ejecución de la función main, y el resultado es correcto
  5. Contenido sugerido para el encabezado calculator.h
  6. Comando de compilación g++
  7. Caso de prueba gtest
  8. Contenido de CMakeLists.txt, incluyendo pruebas
  9. objdump -d main > main.s para ver el código ensamblador, y muestra el código ensamblador
  10. ar para ver el contenido de la biblioteca estática, y muestra el contenido de la biblioteca estática

Con la configuración predeterminada, el contenido mostrado cada vez que se pulsa Ctrl+Enter varía mucho, no se puede repasar el contenido generado la última vez, si se necesita un contenido generado más estable, se puede configurar el valor de temperature [0, 1]. Cuanto menor sea el valor, más estable será el contenido generado; cuanto mayor sea el valor, más inesperado será el contenido generado. El contenido sugerido anterior supera con creces el contenido sugerido generalmente en el uso diario, posiblemente debido a que el proyecto es demasiado simple, una vez que se escriben los archivos de compilación y encabezado, las sugerencias no serán tantas, pero todavía a menudo tiene una buena inspiración.

Atajos de teclado para usar sugerencias de Copilot atajos de teclado

AcciónAtajoNombre del comando
Aceptar sugerencia inlineTabeditor.action.inlineSuggest.commit
Ignorar sugerenciaEsceditor.action.inlineSuggest.hide
Mostrar siguiente sugerencia inlineAlt+]editor.action.inlineSuggest.showNext
Mostrar sugerencia inline anteriorAlt+[editor.action.inlineSuggest.showPrevious
Desencadenar sugerencia inlineAlt+\editor.action.inlineSuggest.trigger
Mostrar más sugerencias en panel separadoCtrl+Entergithub.copilot.generate

Depuración

Generalmente hay dos métodos de depuración, impresión y punto de interrupción.

  • Copilot puede ayudar a generar automáticamente código de impresión, utilizando según el contexto el formato de impresión o registro.
  • Copilot puede ayudar a modificar la estructura del código existente, proporcionando una ubicación de punto de interrupción conveniente. Algunos códigos con estilo anidado son difíciles de interrumpir, Copilot puede modificarlos directamente.

Copilot Labs tiene las siguientes funciones preestablecidas:

  • Debug, generar código de depuración, por ejemplo impresión, punto de interrupción, y otro código de depuración.

Revisión

La revisión es mutua, nosotros y copilot necesitamos revisarnos frecuentemente, no confíes ciegamente en el código generado rápidamente.

Copilot Labs tiene las siguientes funciones preestablecidas:

  • Fix bug, arreglar directamente el bug que detecta, es necesario guardar primero tu código, revisar cuidadosamente la modificación de Copilot.
  • Make robust, hacer que el código sea más robusto, Copilot detectará situaciones no manejadas, generará código de mejora, deberíamos estar inspirados por esto, pensar más meticulosamente.

Refactorización

Copilot Labs tiene las siguientes funciones preestablecidas:

  • Readable, mejorar la legibilidad, una mejora real de la legibilidad, no simplemente formatear, pero hay que tener mucho cuidado al revisar la modificación de Copilot.
  • Clean, hacer que el código sea más limpio, eliminar código innecesario.
  • Chunk, hacer que el código sea más fácil de entender, dividir el código en bloques, dividir una gran función en varias funciones pequeñas.

Documentación

Copilot Labs tiene las siguientes funciones preestablecidas:

  • Document, generar documentación, por ejemplo comentarios de funciones, y otra documentación.

Uso de Custom para ampliar los límites de Copilot

Custom no es muy llamativo, pero hace que Copilot tenga infinitas posibilidades. Podemos entenderlo como un nuevo lenguaje de programación, este lenguaje de programación es inglés o chino.

Puedes usar Custom para ingresar

  • Eliminar código comentado picture 17

  • Aumentar la capacidad de multiplicación y división picture 18

  • Reescribir en go picture 19

  • Agregar cálculo de funciones trigonométricas picture 20

  • Agregar cálculo de diferencial, aquí el chino no funciona bien, usar support calculate differential, en modo de baja temperatura, no hay respuestas confiables, en modo de alta temperatura, hay algunas respuestas extravagantes.

En el trabajo diario, puedes proponer tus propias necesidades a Copilot en cualquier momento, a través de la capacidad de Custom, puedes hacer que Copilot te ayude a completar muchas operaciones que deseas.

Algunos ejemplos:

promptsDescripción
generate the cmake fileGenerar archivo cmake
generate 10 test cases for tan()Generar 10 casos de prueba para tan()
format like google styleFormatear como estilo google
considerar casos límiteConsiderar casos límite
confirmar liberación de memoriaConfirmar liberación de memoria

El uso de Custom está lleno de imaginación, pero a veces no es tan confiable, se recomienda guardar el código antes de usarlo, luego revisar cuidadosamente los cambios que realiza.

Obtener sugerencias más profesionales

Cuanto más clara sea la sugerencia para Copilot, más precisa será su recomendación, sugerencias profesionales pueden obtener recomendaciones más profesionales. Muchos códigos inadecuados no afectan la compilación del código ni el funcionamiento del negocio, pero afectan la legibilidad, mantenibilidad, extensibilidad, reutilización, estas características también son muy importantes, si se desea obtener sugerencias más profesionales, es mejor conocer algunos nombres en inglés de las mejores prácticas.

  • Primero usa inglés comprensible, puedes aprender inglés viendo proyectos de código abierto.
  • Convenciones de nombres, el nombrado es la definición más básica de conceptos, un buen nombrado puede evitar ambigüedades, evitar que el lector se sumerja en los detalles del negocio, mejorando así la legibilidad del código, también es una de las mejores prácticas.
    • Normalmente solo se necesita un nombre de variable razonable, Copilot puede dar sugerencias completas.
  • Lista de patrones de diseño, los patrones de diseño son una plantilla para resolver problemas, tomando decisiones razonables sobre los principios de diseño SOLID para diferentes problemas, ahorrando tiempo de diseño de soluciones, mejorando la calidad del código.
    • Solo necesita escribir el nombre del patrón deseado, Copilot puede generar fragmentos de código completos.
  • Lista de algoritmos, buenos algoritmos son cristales de alta sabiduría para resolver una categoría de problemas, los desarrolladores deben abstraer el problema específico, abstraer los datos y luego ingresarlos al algoritmo.
    • El código de algoritmo generalmente es universal, solo necesita escribir el nombre del algoritmo, Copilot puede generar fragmentos de código de algoritmo, y Copilot siempre puede ingeniosamente aplicar la estructura de datos del contexto a los algoritmos.

Sugerencias de texto plano

enzh
GitHub Copilot utiliza OpenAI Codex para sugerir código y funciones completas en tiempo real, directamente desde tu editor.GitHub Copilot utiliza OpenAI Codex para sugerir código y funciones completas en tiempo real, directamente desde tu editor.
Entrenado con miles de millones de líneas de código, GitHub Copilot convierte indicaciones de lenguaje natural en sugerencias de codificación en docenas de idiomas.Entrenado con miles de millones de líneas de código, GitHub Copilot convierte indicaciones de lenguaje natural en sugerencias de codificación en docenas de idiomas.
No vueles solo. Los desarrolladores de todo el mundo utilizan GitHub Copilot para codificar más rápido, centrarse en la lógica de negocio en lugar de código repetitivo, y hacer lo que más importa: construir un gran software.No vueles solo. Los desarrolladores de todo el mundo utilizan GitHub Copilot para codificar más rápido, centrarse en la lógica de negocio en lugar de código repetitivo, y hacer lo que más importa: construir un gran software.
Concéntrate en resolver problemas más grandes. Dedica menos tiempo a crear código repetitivo y patrones de código repetitivos, y más tiempo a lo que importa: construir un gran software. Escribe un comentario describiendo la lógica que deseas y GitHub Copilot sugerirá inmediatamente código para implementar la solución.Concéntrate en resolver problemas más grandes. Dedica menos tiempo a crear código repetitivo y patrones de código repetitivos, y más tiempo a lo que importa: construir un gran software. Escribe un comentario describiendo la lógica que deseas y GitHub Copilot sugerirá inmediatamente código para implementar la solución.
Obtén sugerencias basadas en IA, solo para ti. GitHub Copilot comparte recomendaciones basadas en el contexto y las convenciones de estilo del proyecto. Recorre rápidamente líneas de código, completa sugerencias de funciones y decide cuál aceptar, rechazar o editar.Obtén sugerencias basadas en IA, solo para ti. GitHub Copilot comparte recomendaciones basadas en el contexto y las convenciones de estilo del proyecto. Recorre rápidamente líneas de código, completa sugerencias de funciones y decide cuál aceptar, rechazar o editar.
Codifica con confianza en territorios desconocidos. Ya sea que estés trabajando en un nuevo lenguaje o framework, o simplemente aprendiendo a codificar, GitHub Copilot puede ayudarte a encontrar tu camino. Aborda un error, o aprende a usar un nuevo framework sin pasar la mayor parte de tu tiempo explorando documentos o buscando en la web.Codifica con confianza en territorios desconocidos. Ya sea que estés trabajando en un nuevo lenguaje o framework, o simplemente aprendiendo a codificar, GitHub Copilot puede ayudarte a encontrar tu camino. Aborda un error, o aprende a usar un nuevo framework sin pasar la mayor parte de tu tiempo explorando documentos o buscando en la web.

Estas traducciones son generadas por Copilot, no se puede determinar si estas sugerencias se basan en la generación de modelos o en la generación de comportamiento de traducción. De hecho, cualquier contenido en inglés que escribas en la columna en de la tabla puede ser traducido (generado) por Copilot al contenido en la columna zh.

picture 21

Opciones de configuración

Opciones de configuración del cliente

Opción de configuraciónDescripciónComentario
temperatureTemperatura de muestreo0.0 - 1.0, 0.0 genera fragmentos de código más comunes, 1.0 genera fragmentos de código más inusuales y aleatorios
lengthLongitud máxima de sugerencias de código generadasPor defecto 500
inlineSuggestCountCantidad de sugerencias en línea generadasPor defecto 3
listCountCantidad de sugerencias generadasPor defecto 10
top_pPriorizar mostrar las sugerencias de los N primeros por probabilidadPor defecto mostrar todas las sugerencias posibles

Configuración de cuenta personal tiene dos configuraciones, una relacionada con derechos de autor y otra con privacidad.

  • Si se utiliza código abierto para proporcionar sugerencias, principalmente para evitar problemas de derechos de autor en fragmentos de código generados por Copilot, evitando limitaciones de licencia de código abierto.
  • Si se permite usar fragmentos de código personales para mejorar el producto, evitando riesgos de filtración de privacidad.

Seguridad de datos

Recopilación de información de Copilot

  • Versión comercial
    • Información de uso de funciones, posiblemente contenga información personal
    • Recopila fragmentos de código, los descarta inmediatamente después de proporcionar sugerencias, no retiene ningún fragmento de código
    • Compartición de datos, GitHub, Microsoft, OpenAI
  • Versión personal
    • Información de uso de funciones, posiblemente contenga información personal
    • Recopila fragmentos de código, según la configuración de telemetría personal, los retiene o descarta después de proporcionar sugerencias
    • Fragmentos de código incluyen: código que se está editando, archivos relacionados, archivos abiertos en el IDE, direcciones de bibliotecas, rutas de archivos
    • Compartición de datos, GitHub, Microsoft, OpenAI
    • Protección de datos de código: 1. Cifrado. 2. Parte del personal de GitHub/OpenAI relacionado con el equipo de Copilot puede ver. 3. Control de acceso basado en roles y verificación multifactor al acceder
    • Evitar que los fragmentos de código sean utilizados (retenidos o entrenados), 1. Configuración 2. Contactar al equipo de Copilot
    • ¿Se utilizará código privado? No.
    • ¿Se generará información personal (nombre, fecha de nacimiento, etc.)? Raro, sigue mejorando.
  • Declaración de privacidad detallada

Preguntas frecuentes

  • Datos de entrenamiento de Copilot, provienen de repositorios públicos de Github.
  • ¿El código escrito por Copilot es perfecto? No necesariamente.
  • ¿Se puede escribir código para una nueva plataforma? La capacidad actual es limitada.
  • ¿Cómo usar mejor Copilot? Dividir el código en funciones pequeñas, describir la función de la función en lenguaje natural, así como entrada y salida, usar nombres de variables y funciones con significado específico.
  • ¿El código generado por Copilot tendrá errores? Por supuesto que no se puede evitar.
  • ¿El código generado por Copilot se puede usar directamente? No necesariamente, a veces se necesita modificar.
  • ¿El código generado por Copilot se puede usar en proyectos comerciales? Sí.
    • ¿El código generado por Copilot pertenece a la propiedad intelectual de Copilot? No.
    • ¿Copilot copia código del conjunto de entrenamiento? Copilot no copia código, es extremadamente improbable que más de 150 líneas de código coincidan con el conjunto de entrenamiento, esto ocurre en las siguientes dos situaciones
      • Cuando la información contextual es muy escasa
      • Es una solución para problemas generales
    • ¿Cómo evitar la repetición con código público? Configurar filter picture 22
  • ¿Cómo usar correctamente el código generado por Copilot? 1. Probar/inspeccionar el código generado por ti mismo; 2. No compilar o ejecutar automáticamente el código generado antes de la inspección.
  • ¿Copilot tiene el mismo rendimiento en cada idioma natural? El mejor rendimiento es en inglés.
  • ¿Copilot generará contenido ofensivo? Ya tiene filtros, pero no se descarta la posibilidad de aparición.