Key Takeaways 부근의 호텔
- 개발자는 AI 생성 코드를 넘어보기 시작하고 더 큰 질문을하고 있습니다 :이 도구는 이미 작성 된 것에 의미를 부여하는 데 도움이 될 수 있습니까?
- 일부 언어 모델은 잘 구조화되고 신뢰할 수 있는 코드에서 보통 나타나는 패턴의 종류를 인식하는 법을 배우고 있습니다.
- LLM의 컨텐츠 순위가 어떻게되는지 이해하는 것은 혼란스러운 코드, 기술 빚 또는 충분히 합쳐지지 않는 논리를 표시하는 더 똑똑한 시스템을 구축하는 열쇠가 될 수 있습니다.
- AI는 팀에게 구조적으로 약한 코드를 강조하거나 표면 수준의 스타일링에 의해 방해받지 않고 더 깊은 문제의 징후를 표시함으로써 더 명확한 출발점을 제공 할 수 있습니다.
- 이러한 시스템은 의도를 잘못 읽거나, 중요한 맥락을 무시하거나, 실제로 존재하지 않는 표면 문제를 해결할 수 있습니다.
손상되지 않은 코드의 숨겨진 비용
당신은 성장하는 코드베이스, 모든 방향에서 날아 다니는 약속, 그리고 "아마도 청소해야 할 것들로 가득 찬 백고를 가지고 있습니다."하지만 어디서부터 시작해야하는지, 또는 코드의 어떤 부분이 조용히 문제가되는지 아무도 알지 못합니다.
우리는 Copilot와 같은 도구가 실시간으로 코드를 제안할 수 있으며, 더 새로운 플랫폼은 의도에 근거한 기능을 생성하는 데 점점 더 똑똑해지고 있습니다.
순위 시스템은 전체 코드베이스를 스캔하고 시간이 지남에 따라 문제를 일으킬 가능성이 높은 파일을 식별함으로써 모든 것을 의미있게 할 수 있습니다.It is not just based on formatting or syntax, but about spotting fragile logic, inconsistent patterns, and areas where things are starting to slip.
ChatGPT와 같은 대규모 언어 모델은 코드 품질의 신호를 식별하는 데 진정한 잠재력을 나타내기 시작하고 있으며, 이는 높은 영향을 미치는 문제를 표면화하고 더 집중적이고 효율적인 개발 워크플로스를 지원하는 도구에 문을 열어줍니다.
코드 워크플로우에서 AI의 진화
오래 전에 autocomplete는 변수를 제안하고, 함수 이름을 채우고, 개발자가 입력했을 때 구문을 부드럽게합니다.하지만 편리함으로 시작한 것이 빠르게 훨씬 더 큰 무언가로 변했습니다.AI는 더 이상 코딩 프로세스의 측면에 앉아 있지 않지만 실시간으로 개발자와 함께 작동합니다.
GitHub Copilot, Tabnine 및 Sourcegraph Cody와 같은 AI 코딩 보조사들은 개발자가 코드와 상호 작용하는 방식을 변화시키고 있습니다.OpenAI의 Codex 모델을 기반으로 한 Copilot은 천연 언어 입력에서 전체 코드 블록을 생성하여 공공 코드 수십억 줄에서 배운 패턴을 사용합니다.Tabnine는 지역 또는 개인 환경에서 실행되는 작고 정교한 모델을 사용하여 엄격한 데이터 정책을 가진 팀에 더 적합한 옵션입니다.
Sourcegraph의 Cody는 또한 다른 일을합니다. 일반적인 교육 데이터를 추출하는 대신 문서, 기능, 역사와 같은 코드베이스에 이미있는 것과 함께 작동합니다.이 맥락은 제안을 템플릿처럼 느끼지 않고 실제 도움이되는 것처럼 느끼게합니다.그것은 당신이 무엇을 구축하고 어떻게 그것을 구축했는지 알고 있으며, 이는 그것이 제공하는 권장 사항이 실제로 필요한 것에 더 가까워지는 것을 의미합니다.
이와 같은 도구는 프로세스에 통합되기 시작하고 있습니다. 그들은 VS 코드와 JetBrains와 같은 친숙한 편집기 내부에 살고 있으며 코드가 쓰일 때 지원을 제공합니다. 짧은 스크립트 또는 전체 규모의 기능이든, 이러한 도구는 작성 프로세스 내내 활성화됩니다. 그러나 작업을 검토하고 안정적이고 위험을 초래할 수있는 것을 평가할 때 그들은 개입하지 않습니다.
코드 검토는 매우 상세한 작업이기 때문에 시간이 소요되며, 좋은 습관이 있더라도 사물은 놓치게됩니다.스테틱 분석 도구는 명백한 문제를 캡처하지만 항상 우선 순위에 도움이되지 않습니다.
AI로 코드 품질을 순위화하는 것이 왜 관심을 얻는가
코드베이스에서 집중할 곳을 파악하는 것은 항상 명백하지 않습니다.기능 업데이트, 버그 수정 및 수년간의 축적 된 짧은 단계 사이에서 실제 문제는 명백한 시야에서 숨길 수 있습니다.평가는 종종 습관에서 이루어지며, 동일한 영역을보고, 동일한 파일을 만지기보다는 위험이나 불안정성의 실제 신호를 기반으로합니다.
이것은 특히 오래된 시스템에서 사실입니다. 시간이 지남에 따라 복잡성이 형성됩니다.사람들은 떠나고, 맥락은 손실되고, 원래 아키텍처는 항상 제품이 어떻게 진화했는지 일치하지 않습니다.이 경우, 경험이 풍부한 팀조차도 무엇이 물건을 함께 잡고 무엇이 조용히 그것을 분리시키는지 파악하기 위해 어려움을 겪을 수 있습니다.
이것은 순위 시스템이 진정한 가치를 제공 할 수있는 곳입니다. AI는 실제로 필요한 곳에주의를 집중하는 데 도움이 될 수 있습니다.이것은 더 이상 견딜 수없는 논리, 따라하기 어려운 구조 또는 시스템이 어떻게 행동해야하는지에서 천천히 흐르는 섹션 일 수 있습니다.이 목표는 인간의 판단을 대체하는 것이 아니라 그 판단이 적용되는 곳을 가볍게합니다.
그러나 그것이 작동하려면 AI는 스타일 규칙이나 토큰 계산을 넘어 품질을 평가할 수있는 방법이 필요합니다. 그것은 의미있는 신호를 표면화하는 방식으로 구조, 논리 및 역사적 사용을 균형 잡아야합니다. 이는 ChatGPT의 순위, 어떻게 대형 언어 모델이 구조, 맥락 및 관련성을 기반으로 무엇을 결정하는지 이해함으로써 시작됩니다. 80% 이상의 조직은 이제 AI 기반 순위를 사용하여 콘텐츠를 우선화합니다.이 시스템이 가장 관련된 것을 표면화하는 데 얼마나 효과적일 수 있는지 말합니다. 코드는 유사한 패턴을 따릅니다.
이러한 시스템이 처리 할 수있는 컨텍스트가 더 많을수록 출력은 특히 너무 많은 코드가 있고 수동으로 모든 것을 검토 할 시간이 부족할 때 더 유용합니다.
코드를 분석할 때 LLM이 실제로 "보는"것
LLM은 인간처럼 코드를 이해하지 않으며 토큰, 삽입 및 패턴의 시퀀스를 볼 수 있습니다.
Tokenization, Structure, and Embeddings 부근의 호텔
모델에 코드를 공급할 때, 그것을 인식할 수 있는 단위, 또는 토큰으로 분해할 필요가 있습니다.이것들은 키워드 (이 경우, 동안), 점수 ({, };), 또는 식별자의 일부 일 수 있습니다.Modern LLM tokenizers use approaches such as byte-pair encoding or subword tokenization to manage variable names and custom identifiers efficiently.
코드가 토큰화되면, 이들은 각 조각의 구조, 의미 및 주변 맥락을 캡처합니다.그래서 두 기능이 표면에서 다르게 보일지라도, 예를 들어, def add(a, b): return a + b 및 def sum(x, y): return x + y - 모델은 동일한 행동을 인식할 수 있습니다.
LLM은 무엇을 픽업하고 그들이하지 않는지
이러한 모델은 반복적 인 구조와 스타일리스트 패턴, 루프 구조, 둥근 조건, 모듈 조직을 탐지하는 데 매우 좋습니다.They can generalize across codebases and detect anomalies where patterns deviate.
그러나 LLM은 근본적인 비즈니스 논리, 의도 또는 깊은 건축 추론을 신뢰할 수 없습니다; 기능이 보안 보증을 구현하도록 설계되면 그 뉘앙스는 모델에서 벗어날 수 있습니다.
Mapping Insights Into Ranking에 대한 리뷰 보기
모델이 코드가 드라이브하기 시작하는 곳을 잡을 수 있다면, 더 높은 복잡성, 혼란스러운 의존성, 또는 단순히 맞지 않는 패턴이든, 그 영역에 더 많은 무게를 부여하는 데 도움이 될 수 있습니다.
GALLa (Graph-Aligned Language Models for Code)와 같은 연구는 AST 경로 또는 제어 흐름 차트와 같은 구조적 맥락을 삽입하면 모델이 코드 문제를 감지하는 방법을 향상시킬 수 있음을 보여줍니다.
Code Scoring 를 향해 움직이는 도구
여러 도구는 이미 정적 분석, AI 및 실시간 피드백의 혼합을 사용하여 코드 품질을 평가하는 방법을 실험하고 있지만 대부분은 "코드 점수"라는 용어를 명시적으로 사용하지 않지만 개발자가 올바른 문제를 더 빨리 해결하고 프로세스에서 소음을 줄이는 데 도움이함으로써 그 방향으로 이동하고 있습니다.
Mutable AI는 예를 들어 실시간 코드 생성과 컨텍스트 이해를 결합하여 작성하는 동안 코드를 재현하거나 청소하는 것을 목표로합니다.이 제안은 읽기와 유지 가능성을 향상시키기 위해 설계되었으며 단지 구문을 수정하지 않습니다.
Codacy는 더 전통적인 접근 방식을 취하지만 자동화의 층을 추가합니다. 그것은 다양한 언어에 걸쳐 정적 코드 분석을 실행하여 문제를 심각하게 강조하고 팀이 정의 한 표준과 일치합니다.그러나 언어 모델에 직접 의존하지는 않지만 성능, 보안 또는 읽기능에 가장 영향을 미칠 가능성이있는 것을 표시함으로써 피드백을 우선시합니다.
또한, Sourcegraph의 Cody는 컨텍스트 인식 제안을 더 멀리 가져옵니다.Cody는 저장소의 기존 코드, 문서 및 사용 패턴을 추출함으로써 구체적인 프로젝트에 대한 피드백을 조정합니다.그것은 특히 큰 코드베이스에서 우선 순위가 파일과 팀에 따라 다르며, 코드베이스 인식 AI가 왜 그렇게 강력한지에 대한 유용한 단계입니다.
함께,이 도구는 가능한 것에 대한 힌트 : AI가 단순히 코드를 쓰거나 링크 할뿐만 아니라 팀이 관심을 필요로하는 것과 언제 결정하는 데 도움이되는 미래.
자동화된 코드 판단(Automating Code Judgment)
AI는 유용한 신호를 제공 할 수 있지만 코드 품질을 판단하는 데 사용하면 위험이 있습니다.대형 언어 모델은 패턴에 대해 훈련되며, 반드시 의도하지 않으므로 유효한 코드를 문제로 표시하는 것은 단순히 그들이 가장 자주 본 스타일과 일치하지 않기 때문에 드문 일이 아닙니다.
환각은 또 다른 우려입니다. LLM은 첫눈에 견고하게 보이는 코드를 제안하는 것으로 알려져 있지만 항상 예상대로 작동하지 않습니다. 문제는 종종 미묘합니다. 어쩌면 조건이 종료되거나 작은 가장자리 케이스가 놓칠 수 있습니다. 코드가 올바르게 보이기 때문에 세부 사항을 벗어나기 쉽습니다. 신중한 검토없이 이러한 종류의 오류는 생산에 묻혀 나중에 추적하는 데 시간이 걸릴 수 있습니다.
설명 가능성도 제한적이며, 모델이 기능을 나쁘게 평가하면 개발자가 이유를 알아야 하지만 대부분의 시스템은 그 점수를 결정하는 방법에 대한 투명성을 제공하지 않으며, 피드백을 신뢰하거나 행동하기가 더 어렵습니다.
과도한 의존의 위험
정적 분석은 이제 LLM 기반 통찰력으로 보완 될 수 있지만, 이러한 통찰력은 어리석은 것이 아닙니다.최근의 연구는 신중하게 권장 할 때에도 모델은 여전히 오프-비-온 오류 또는 잘못 조정 된 조건과 같은 기본적인 논리와 싸우고 있음을 보여줍니다.
이러한 도구는 프로세스를 지원할 수 있지만 아직 그것을 대체 할 준비가되어 있지 않습니다.
생산적인 Feedback Loop 만들기
AI는 실제 상호 작용에서 배울 때 더 가치가 있습니다.가장 풍부한 피드백 소스 중 하나는 데이터 개발자가 이미 버전 기록을 생성하고 요청 코멘트를 끌고 결과를 검토하는 것입니다.
오픈소스 프로젝트는 리뷰가 수락하거나 변경하거나 거부하는 것에 대한 상세한 신호를 저장합니다.Mining that data helps a model understand which code gets approved and why.Signals like inline comments, approval rates, or request-for-changes notes become training cues.
사용자 피드백을 통해 배우는 AI 시스템에 대한 연구는 이러한 신호를 깨끗하게 캡처하는 최선의 관행을 강조하며, 소음으로 개발자를 압도하지 않도록합니다.당신의 팀이 지속적으로 기능을 조정하여 읽기능을 향상시킵니다.모델이 수십 또는 수백 개의 변경을 통해 그 패턴을 인식하면 구문 규칙보다 읽기능을 높이기 시작합니다.그것은 그 순위를 더 의미 있고 코드베이스에 맞게 만듭니다.
개선에 대한 통찰력에서부터
Open-Source AI 코드 도구에 대한 Graphite 가이드는 분석 모델이 이미 진화하는 프로젝트 표준에 어떻게 적응하고 있는지 보여줍니다.Teams using these tools report better code consistency and reduced review fatigue, thanks to smarter, context-aware suggestions.
루프는 다음과 같습니다 : 모델은 → 개발자 리뷰 또는 무시 → 모델 레코드 결과 → 모델은 출력을 정밀화합니다.이 루프는 시간이 지남에 따라 일반적인 점수를 팀의 스타일과 우선 순위를 이해하고 혼란을 줄이고 관심을 집중시키는 협력자로 변환합니다.
집중하는 더 나은 방법
AI는 유용하게 검토 프로세스를 수행 할 필요가 없으며 개발자가 집중하는 데 도움이 필요합니다.대부분의 팀은 반드시 데이터 부족으로 어려움을 겪고 있지 않으며 어디에서 시작해야하는지에 대해 어려움을 겪고 있습니다.모델이 코드베이스의 올바른 부분을 표면 할 수있을 때, 스트레스를 나타내는 부분 또는 시스템이 어떻게 행동해야하는지에서 드라이브 할 수있을 때 팀에게 우선 순위를 설정하는 더 나은 방법을 제공합니다.
이것은 모델이 올바른 신호에 대해 훈련받는 경우에만 작동합니다.단지 구문 패턴뿐만 아니라 실제 피드백 : 승인 된 것이 무엇인지, 재작업 된 것이 무엇인지, 리뷰가 반복적으로 표시하는 것이 무엇인지.이 유형의 루프는 시간이 지남에 따라 AI가 특정 팀의 맥락에서 깨끗하고 신뢰할 수있는 코드가 무엇인지 이해하는 데 도움이 될 수 있습니다.
이것이 일상적인 작업 흐름의 일부가 될 수있는 공간이 있습니다. CI 파이프 라인, 내부 대시보드 또는 코드 검토 흐름이든 팀이 이미 사용하는 도구로 구축되면 순위가 배경에서 결정을 안내하는 데 도움이 될 수 있습니다.
목표는 자동화가 아니라 단순한 명확성이며, 개발자가 더 빨리, 더 자신감을 갖고, 실제로 중요한 것에 시간을 투자할 수 있도록 도와줍니다.