Как разработчики борются с Copilot (и что исправлено GitHub)

Как разработчики борются с Copilot (и что исправлено GitHub)

4 июня 2025 г.

Аннотация и 1. Введение

2. Методология и 2.1. Исследовательские вопросы

2.2. Сбор данных

2.3. Маркировка данных

2.4. Извлечение данных

2.5. Анализ данных

3. Результаты и интерпретация и 3.1. Тип проблем (RQ1)

3.2. Тип причин (RQ2)

3.3. Тип решений (RQ3)

4. Последствия

4.1. Последствия для пользователей Copilot

4.2. Последствия для команды Copilot

4.3. Последствия для исследователей

5. Угрозы достоверности

6. Связанная работа

6.1. Оценка качества кода, генерируемого Copilot

6.2. Влияние Копилота на практическое развитие и 6.3. Окончательное резюме

7. Выводы, доступность данных, подтверждения, заявление о вкладе и ссылки на кредит

3. Результаты и интерпретация

В этом разделе мы сообщаем о результатах трех RQ и предоставляем их интерпретацию. Результаты задач использования Copilot представлены на два уровня: категории (например, проблема с содержанием предложений) и типы (например, менее эффективное предложение). Между тем, результаты по причинам и решениям организованы только как типы (например, ошибка сетевого соединения). Мы также предоставляем картирование взаимосвязи проблем, связанных с копировами, с их причинами и решениями. Как упомянуто в разделе 2.4.2, только причины, которые, как было доказано, приводят к проблемам и решениям, которые могли бы решить проблемы, были извлечены и предоставлены в результатах. Следовательно, не все проблемы имеют соответствующие причины и решения. Стоит отметить, что из -за быстрого обновления Copilot некоторые проблемы и запросы функций, поднятые пользователями, уже были рассмотрены в более новых выпусках Copilot. Мы определили эти два сценария отдельно как два типа решений, то есть ошибка, исправленная Copilot и функцией, реализованной Copilot. Однако из -за отсутствия информации о версии Copilot в наборе данных мы не могли тщательно рассмотреть информацию о версии в этом исследовании. Чтобы помочь понять таксономии проблем, причин и решений использования Copilot, мы приводим примеры с символом «#», который указывает на «Идентификатор выпуска Github», «идентификатор обсуждения Github» или «SO Post Id» в наборе набора данных (Zhou et al., 2024).

3.1. Type of Problems (RQ1)

На рис. 2 представлена ​​таксономия проблем, извлеченных из нашего набора данных. Мы определили в общей сложности 1355 задач, связанных с использованием массивота. Можно наблюдать, чтоОперация(57,5%) учитывают большинство проблем, с которыми сталкиваются пользователи Copilot. Кроме того, есть заметное количество пользователей, которые возразилиПроблема совместимости(15,6%) при использовании Copilot в разных средах, за которыми следуют пользователи, которые поднялиЗапрос функции(15,0%) на основе их пользовательского опыта и требований. Кроме того,Меньшие проценты были определены как проблема содержания предложений(4,4%),Проблема с пользователем(4,3%), иАвторские права и политическая проблема(3,3%).

3.1.1. Операция выпуска (57,5%)

Операция выпуска относится к категории препятствий, с которыми сталкивается пользователи при попытке использовать некоторые основные функции Copilot. Эта категория проблем разделена на шесть типов, которые разработаны ниже.

• Ошибка функциональности относится к ненормальности функций, связанных с генерацией кода, предоставляемых Copilot. Copilot предлагает различные интерактивные функции, чтобы лучше взаимодействовать с пользователями, такими как«Предыдущее/следующее предложение»В«Просмотр всех предложений», и«Конфигурация ярлыков клавиш для принятия предложений»Полем Пользователи могут столкнуться с исключениями при использовании этих функций. Например, пользователь сообщил, что «Копилот больше не предлагает на pycharmПосле периода этого не использовать его (обсуждение № 11199).

Figure 2: A taxonomy of problems when using GitHub Copilot

• Проблема запуска относится к ошибкам или неисправностям, с которыми сталкиваются пользователи, пытающиеся запустить Copilot. Эта проблема приводит к полной сбое выполнения Copilot и обычно сопровождается сообщениями об ошибках. Такие проблемы могут возникнуть либо во время первоначального использования пользователя, либо неожиданно после нескольких успешных пробежек. Например, пользователь не смог активировать Copilot после установки на VSCODE, и получил сообщение об ошибке, указанное«Не могу найти модуль»(Выпуск № 383).

• Ошибка аутентификации относится к вопросам, связанным с входом в систему пользователя и трудностями аутентификации при использовании Copilot. Копилот требует, чтобы пользователи вошли в свою учетную запись GitHub, прежде чем использовать службу. Только пользователи с разрешениями на доступ (включая оплачиваемые подписки, проверку личности учащихся и т. Д.) могут использовать службу генерации кода Copilot. В процессе аутентификации пользователи могут столкнуться с ошибкой аутентификации, что приведет к неспособности использовать копилот. Например, пользователь был неоднократно поощрен с сообщением«Ожидание аутентификации GitHub»в идее, и не смог войти в систему (так #72505280).

• Доступ к сбое относится к ситуации, когда пользователи не могут получить доступ к серверу Copilot, что часто включает ошибки, связанные с подключениями к серверу. Пользователь может встретить сообщение об ошибке, подобное«Github Copilot не мог подключиться к серверу»(Обсуждение № 11801).

• Проблема установки относится к проблемам, с которыми сталкиваются пользователи в процессе установки Copilot, включая ошибки установки, неспособность найти методы установки и другие связанные проблемы. Например, пользователь не смог установить Copilot на инсайдерах VSCODE, а журнал сервера показал«Ошибка при установке расширения»(Выпуск № 189).

• Проблема управления версиями относится к проблемам, с которыми сталкиваются пользователи при настройке версии Copilot или его среды выполнения (например, IDE), включая неспособность обновлять версию Copilot или ненормальные проблемы, такие как продолжение подсказования для обновлений даже после обновления. Например, пользователь сообщил, что«Плагин Copilot не обновляет»При использовании его в INTELLIJ IDEA (обсуждение № 17298).

Интерпретация: Мы определили операцию на различных этапах взаимодействия с пользователем с Copilot. Пользователи, как правило, сообщают об этих проблемах и обращаются за помощью, делая операцию наиболее распространенной категорией проблем, связанных с копированием. Отказ функциональности (226), сбой аутентификации (198) и проблема запуска (193) являются тремя лучшими типами таких проблем. Мы приписываем более высокую частоту первых двух типов с недостатками в дизайне и стабильности функций Copilot, на которые также влияют среды пользователей, в которых работает Copilot. Отказ аутентификации в основном связан с конкретными деталями, встречающимися во время процесса входа в систему, когда пользователям необходимо получить доступ к Copilot со своими учетными записями Github.

3.1.2. Проблема совместимости (15,6%)

Эта категория охватывает проблемы, возникающие в результате несоответствий между Copilot и его средой выполнения. Copilot работает как плагин в различных редакторах IDE и кода (например, VSCODE и INTELLIJ IDEA), а сложность COPILOT COPILOT может привести к увеличению количества проблем совместимости. Эти проблемы дополнительно классифицируются на три типа, которые разработаны ниже.

• Проблема совместимости редактора/IDE относится к вопросам, возникающим в результате несоответствий между Copilot и IDE или редактором. Эти проблемы, как правило, проявляются, поскольку копилот не может работать должным образом в определенной IDE или редакторе. Например, пользователь ранее обнаружил, что Copilot «не работает в Neovim» при написании программы Python, хотя статус Copilot показал, что «Copilot: включен и онлайн» (так #72174839).

• Проблема совместимости плагина относится к типу проблемы сопоставления, которая возникает, когда Copilot и другие плагины активируются и работают вместе одновременно. Такие проблемы могут вызвать частичные или полные неисправности копилота и других плагинов. Они обычно идентифицируются с помощью методов устранения неполадок, таких как отключение апопилота или других плагинов. Например, один пользователь сообщил, что «конфликт со сочетания клавиш с Эмметом» не позволил ему получить предложения кода, сгенерированные Copilot (выпуск № 47).

• Проблема совместимости клавиатуры относится к ситуации, когда функциональность Copilot не может использоваться в некоторых необычных макетах клавиатуры. Например, пользователь с немецкой макетой клавиатуры не мог использовать большинство функций Copilot, связанных с генерацией кода (обсуждение № 7094).

Интерпретация: Проблема совместимостивозникает из сложных сред, в которых пользователи используют копилот, а также устойчивость к совместимости самого копирота. В случае проблемы совместимости редактора/IDE (136), VSCODE, платформа, официально рекомендованная для использования Copilot, получила большее количество сообщенных проблем о совместимости. Мы также определили много проблем в других широко используемых IDE, таких как Visual Studio, Intellij Idea и Pycharm. Появление проблемы совместимости плагина (70) менее предсказуемо, что часто возникает при использовании Copilot с другими инструментами завершения кода.

3.1.3. Запрос на функцию (15,0%)

Запрос на функции относится к функциям, которые пользователи просят добавлять или улучшать, в зависимости от их опыта и фактических потребностей при использовании Copilot. Эти запросы функций не только помогают улучшить пользовательский опыт Copilot, но и способствовать изучению того, как инструменты генерации кодов AI, такие как Copilot, могут лучше взаимодействовать с разработчиками. Эта категория дополнительно разделена на четыре типа, как показано ниже.

• Запрос функции относится к запросам на разработку новых функций в Copilot, которые обычно возникают из -за подлинных потребностей пользователей и трудностей, возникающих при использовании инструмента. Например, пользователь попросил, чтобы Copilot был в состоянии«Посмотрите на контекст проекта с несколькими файлами”, А не генерировать предложения кода на основе контекста в одном файле (так #73848372).

• Запрос на интеграцию относится к типу запроса на то, чтобы Copilot был доступен на определенных платформах или для интеграции с другими плагинами. В основном это связано с желанием некоторых пользователей использовать копилот в средах, с которыми они знакомы. Например, пользователь призвал«Поддержка Intellij 2022.2 EAP Family»(Обсуждение № 17045). Запросы на интеграцию также в некоторой степени отражают популярность копилота среди разработчиков.

• Запрос пользовательского интерфейса относится к запросам, сделанным пользователями на изменения в пользовательском интерфейсе (пользовательский интерфейс) Copilot, такие как изменение появления значка Copilot. Эти запросы, как правило, направлены на улучшение визуальных эффектов и пользовательского опыта Copilot. Например, пользователь запросил добавление«Индикатор состояния»Чтобы предоставить информацию о текущем рабочем статусе Copilot (выпуск № 163).

• Профессиональная версия Copilot относится к запросам некоторых пользователей на профессиональную версию Copilot. Эти пользователи являются разработчиками от некоторых компаний, которые надеются получить более профессиональные и надежные услуги по созданию кодов в своей реальной работе. Они могут иметь более высокие требования для надежности и безопасности кода Copilot, а также сертификации команды и других аспектов. Например, пользователь попросил«Версия для компаний для покупки», чтобы они могли развернуть копилот в местной среде (обсуждение № 38858).

Интерпретация: Для запроса функции (115) мы заметили, что пользователи выразили стремление к большей гибкости в настройке копилота, чтобы более тесно соответствовать их привычкам разработки. Общие запросы включают в себя возможность принять предложения Copilot Word по слову и указать, где Copilot должен автоматически работать с точки зрения типов файлов или областей разработки кода. Более инновационные требования включают необходимость в Copilot для предоставления предложений в соответствии со всем проектом, а также такие функции, как объяснение кода и функциональность чата, которые были предоставлены в чате Github Copilot (Zhao, 2023). Запрос интеграции (72) отражает желание разработчиков использовать копилот в их знакомых средах. Это предъявляет более высокие требования в команде Copilot, так как мы определили значительное количествоПроблемы совместимостиПолем

3.1.4. Проблема с содержанием предложений (4,4%)

Эта категория проблем относится к вопросам, связанным с содержанием кода, сгенерированного Copilot. Генерация предложений кода является основной особенностью инструментов генерации кодов искусственного интеллекта, таких как Copilot, и качество предложений непосредственно определяет, будут ли пользователи принять их. Следовательно, содержание сгенерированного кода, естественно, является проблемой для пользователей, исследователей и команды Copilot. Эти проблемы дополнительно разделены на семь конкретных ситуаций, которые подробно описаны ниже.

• Низкое качество предложения относится к ситуациям, когда Copilot не может достаточного понимания контекста, чтобы создать полезный код. Такие предложения кода могут не иметь никаких синтаксических ошибок, но из -за их низкого качества они вряд ли будут приняты пользователями. Например, Copilot, однажды сгенерировал пустой метод, содержащий только оператор RETURN, без выполнения требований, указанных в коде пользователя (обсуждение № 6631).

• Бессмысленное предложение относится к предложениям кода, предоставленным Copilot, которые совершенно не относятся к потребностям пользователей. Такие предложения считаются почти непригодными для использования и обеспечивают небольшую эвристическую помощь пользователю. Например, пользователь когда -то получил недоступный поддельный URL -адрес, сгенерированный Copilot, который не помог с его задачей программирования (обсуждение № 14212).

• Предложение с ошибками относится к ситуации, когда Copilot может генерировать соответствующий код на основе контекста, но предлагаемый код содержит некоторые ошибки. Это может привести к тому, что программа может работать, но не в том, что задумал разработчик, или в некоторых случаях, это может вызвать ошибки или сбои. Например, пользователь сообщил, что Copilot предложил использовать «SetState (! State)» вместо «SetState (true)», что вызвало логическую ошибку в его коде (выпуск № 43).

• Неудача предложений относится к ситуации, когда Copilot предоставляет потенциально полезные предложения кода, но из -за сложности кода или отсутствия опыта пользователя они сочли сложности понять предлагаемый код и нуждаются в большем времени для проверки его правильности. Например, пользователь пожаловался, что«Мой github Copilot просто автоматически заполнил его для меня, а затем я искал интернет, пытаясь найти информацию, относящуюся к нему, но не смог»(Итак, #73075410).

• Предложение с недействительным синтаксисом относится к ситуации, когда предложения, полученные с помощью Copilot, могут содержать синтаксисные ошибки, которые предотвращают должным образом программу. Например, пользователь обнаружил, что предложения кода, предоставленные Copilot«Пропущенные кудривые кронштейны, что приводит к ошибочному коду при принятии предложения»(Обсуждение № 38941).

• Менее эффективное предложение относится к предложениям кода, сгенерированным Copilot, которые являются функционально правильными и соответствуют требованиям пользователей, но могут страдать от неоптимальной эффективности выполнения или запутанной логики, что потенциально влияет на общее качество кода. Например, когда пользователь запросил Copilot«Найдите чашку с наибольшим количеством воды»и«Найдите максимальное количество воды в любой чашке»Предлагаемый код выполнялся адекватно, но не был оптимизирован для эффективности (выпуск № 162).

• Небезопасное предложение относится к предложениям кода, сгенерированным Copilot, которые вводят уязвимости безопасности. Например, пользователь указал, что в предложении кода отсутствовала ответственность за чтение размеров (обсуждение № 6636).

Интерпретация: Качество предложений кода является критическим фактором при определении возможностей копирования для практического развития кода. Мы определили относительно небольшое количество проблем с содержанием предложений, возможно, указывая на то, что пользователи менее склонны сообщать о проблемах, связанных с предложенным кодом, по сравнению с проблемами, связанными с использованием. Среди этих задач низкое качество предложения (25), бессмысленное предположение (12) и предположение с ошибками (8) являются тремя наиболее часто сообщаемыми типами, в то время как небезопасное предположение (2) и менее эффективное предположение (2) менее распространены. Этот результат подразумевает, что основной задачей для пользователей может быть, может ли Copilot предоставлять код предложения, которые имеют значительную референциальную ценность.

3.1.5. Проблема с опытом работы с пользователем (4,3%)

Эта категория охватывает отзывы пользователей об их опыте использования Copilot. По сравнению с операцией, Copilot обычно работает и функционирует, как предполагалось, но пользовательский опыт является неоптимальным. Проблема с пользователем может дать представление о областях, в которых можно улучшить Copilot. Проблема с пользовательским опытом может быть дополнительно классифицирована на четыре типа, которые подробно описаны ниже.

• Плохой опыт функциональности относится к типу проблемы пользовательского опыта, где использование функциональности, связанных с генерацией кода, является неудовлетворительным. Когда возникают такие проблемы, функциональные возможности Copilot остаются в действии, что отличается от неудачи функциональности. Тем не менее, пользователи выразили недовольство своим опытом при использовании этих функций. Эти проблемы часто могут препятствовать координации между пользователями и копированием и даже снижать эффективность работы по разработке. Такие проблемы часто выделяют области, в которых Copilot может быть дополнительно улучшен и может потенциально мотивировать пользователей предлагать некоторые запросы функций. Например, пользователь почувствовал, что код сгенерировал и выскочил с помощью Copilot, был довольно шумным (выпуск № 97).

• Плохой опыт подписки относится к препятствиям, с которыми пользователи сталкиваются в процессе подписки на услуги Copilot. Copilot предлагает несколько методов подписки (например, проверка студентов, платная подписка), что приводит к некоторым неудобствам для пользователей в ходе этого процесса. Например, один пользователь чувствовал себя потерянным и не был уверен в том, что делать дальше после настройки счета (обсуждение № 19119).

• Плохая производительность относится к проблемам производительности, которые возникают при запуске Copilot, что напрямую влияет на пользовательский опыт. Эти проблемы включают высокое использование ЦП, длительное время отклика и чрезмерно частый доступ к серверу. Например, пользователь пожаловался, что Copilot взял«Около 1-2 минуты, чтобы показать одно предложение»на VSCODE, который был очень медленным (обсуждение № 19491).

• Плохой опыт аутентификации относится к неудобствам, с которыми сталкиваются пользователи при аутентификации своей личности перед использованием Copilot. В то время как пользователи успешно ориентируются на процедуру входа в систему, они могут испытать неоптимальный пользовательский опыт. Это может быть связано с такими факторами, как громоздкий поток процесса или отсутствие явных инструкций. Например, пользователь часто пожаловался на этот экземпляр часто«Приглашение, чтобы включить GitHub Copilot на каждом запуска VSCODE»который может быть важным источником разочарования (так #70065121).

Интерпретация: Проблемы с пользовательским опытом предоставляют ценную информацию о направлении для улучшения ропилота. Среди плохого опыта функциональности (24) наиболее часто сообщаемые проблемы включают в себя встроенные предложения Copilot, которые вызывают сбои в процессе кодирования пользователей (5) и неудобства о том, что они не могут принять определенные части предлагаемого кода (2). Эти проблемы соответствуют некоторым требованиям, упомянутым пользователями в запросе функции, например, настройки, когда Copilot может генерировать код и длину предложенного кода.

3.1.6. Авторские права и политическая проблема (3,3%)

Copilot обучается на большом корпусе открытого исходного кода и генерирует предложения кода на основе контекста кода пользователей. Способ, которым работает Copilot, вызывает опасения относительно потенциальных вопросов авторского права и политики, выраженных некоторыми пользователями. Эти проблемы разделены на три типа, как показано ниже.

• Проблема Code Copyright относится к проблемам, выраженным некоторыми авторами кода в отношении несанкционированного использования их кода с открытым исходным кодом с помощью Copilot для обучения модели. В настоящее время GitHub является одной из самых популярных платформ для хостинга в веб -базе, и после выпуска Copilot у некоторых авторов кода были подозрения, что их код, размещенный на Github, использовался для обучения без надлежащего рассмотрения их лицензии. Например, пользователь «начал миграцию» своих проектов на GitHub, потому что он беспокоился о том, что его код используется для обучения копированию без разрешения (выпуск № 150).

• Проблема с телеметрией кода относится к проблемам, выраженным пользователями, касающимися копирования, собирая свой код для создания предложений, что потенциально может привести к утечке конфиденциального кода. Некоторые пользователи также могут просто не желать иметь свой собственный код, а также код, сгенерированный для них Copilot, собранным для других целей. Например, пользователь обеспокоен тем, что использование Copilot может «раздать ключ API» в своем коде (поэтому #70559637).

• Нарушение рыночной политики - это конкретный случай, когда пользователь сообщил, что Copilot смог опубликовать на рынке VSCODE, несмотря на использование предлагаемых API, в то время как другие плагины были запрещены. Пользователь подозревал, что это поведение может нарушать политику рынка (выпуск № 3).

Интерпретация: ПоявлениеАвторские права и политическая проблемараскрывает проблемы пользователей по поводу того, как работает Copilot. Copilot обучается на многоязычном коде с открытым исходным кодом, а также необходимо собирать контекст кода пользователей во время его работы для создания предложений. Эти два факта заставили людей обратить больше внимания на проблемы с авторским правом и интеллектуальной собственности при использовании Copilot, особенно в развитии дома.

Авторы:

(1) Xiyu Zhou, Школа компьютерных наук, Университет Ухан, Ухан, Китай (xiyuzhou@whu.edu.cn);

(2) Пенг Лян (автор -корреспондент), Школа компьютерных наук, Университет Ухан, Ухан, Китай (liangp@whu.edu.cn);

(3) Beiqi Zhang, Школа компьютерных наук, Университет Ухан, Ухан, Китай (zhangbeiqi@whu.edu.cn);

(4) Зенгьян Ли, Школа компьютерных наук, Центральный Китайский Университет, Ухан, Китай (Zengyangli@ccnu.edu.cn);

(5) Аакаш Ахмад, Школа компьютеров и коммуникаций, Университет Ланкастера Лейпциг, Лейпциг, Германия (ahmad.aakash@gmail.com);

(6) Mojtaba Shahin, Школа компьютерных технологий, Университет RMIT, Мельбурн, Австралия (mojtaba.shahin@rmit.edu.au);

(7) Мухаммед Васим, факультет информационных технологий, Университет Цзиваскила, Jyväskylä, Финляндия (muhammad.m.waseem@jyu.fi).


Эта статья естьДоступно на ArxivПод CC по лицензии 4.0.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE