리포트
주요 LLM의 코딩 성격 내부 – Sonar State of Code 보고서의 통찰력

2025년 8월, Sonar는 최신 State of Code 연구, 주요 LLM의 코딩 성격 – State of Code 보고서를 발표했다. 이 연구는 정확도 점수만을 넘어서서 대규모 언어 모델이 실제로 코드를 작성하는 방식을 조사하고 각 모델에 대한 고유한 “코딩 성격”을 밝혀냈다.
이 연구는 Claude Sonnet 4, Claude 3.7 Sonnet, GPT-4o, Llama 3.2 90B, OpenCoder-8B를 대상으로 Sonar의 정적 분석 엔진을 사용하여 4,400개 이상의 Java 과제를 평가했다.
공통된 강점
모든 5개의 모델은 강한 구문 신뢰성을 보여주었으며, 생성된 코드가 대부분의 경우에 성공적으로 컴파일되고 실행되었다. 이는 HumanEval 점수에서 반영되었으며, 모델이 코딩 문제를 해결하고 그 해법이 자동으로 검증되는 벤치마크 테스트이다. Claude Sonnet 4는 95.57%의 HumanEval 점수와 77.04%의 가중 Pass@1 비율을 기록했다. Claude 3.7 Sonnet는 72.46%, GPT-4o는 69.67%, Llama 3.2는 61.47%, OpenCoder-8B는 60.43%를 기록했다.
이 성능은 다양한 프로그래밍 언어에서 일관되게 유지되었으며, 이러한 모델이 구문만을 기억하는 것이 아니라 문제를 해결하는 논리를 사용하고 있음을 보여주었다.
공통된 약점
가장 경각심을 일으키는 공통된 약점은 보안 위생이 좋지 않다는 것이었다. Sonar는 블로커 수준의 취약점을 측정했으며, 이는 가장 심각한 유형의 결함이다. 이는 코드가 임의의 파일 액세스, SQL 또는 명령어 삽입, 하드코딩된 암호, 잘못된 암호화 설정, 또는 신뢰할 수 없는 인증서를 허용할 수 있는 보안 문제를 일으킬 수 있다. 이러한 취약점은 너무 빈번했다. Claude Sonnet 4는 59.57%의 취약점이 이 수준에 속했으며, GPT-4o는 62.5%, Llama 3.2는 70.73%를 기록했다.
보고서에서는 또한 반복되는 리소스 누수를 언급했으며, 이는 코드가 리소스를 열었지만 정상적으로 닫지 못하는 유형의 버그이다. 시간이 지남에 따라 이러한 누수는 시스템 리소스를 소진시켜 성능 문제나 충돌을 일으킬 수 있다. Claude Sonnet 4는 54개의 그러한 위반을 기록했으며, Llama 3.2는 50개, GPT-4o는 25개를 기록했다.
유지 보수성에 대해 대부분의 문제는 코드 냄새였다. 즉, 프로그램을 즉시 중단시키지는 않지만 유지 보수하기 어렵고 미래의 버그에 취약한 패턴이다. 90% 이상의 모든 확인된 문제가 이 범주에 속했으며, 종종 사용되지 않은 코드, 나쁨 이름, 과도한 복잡성 또는 디자인 최선의 관행 위반을 포함했다.
고유한 성격
강점과 약점의 혼합에서 Sonar는 명확한 “성격” 프로필을 식별했다.
Claude Sonnet 4는 “시니어 아키텍트”라는 제목을 얻었다. 이는 가장 장황한 코드를 작성했으며, 370,816 줄의 코드를 테스트 세트에 걸쳐 작성했다. 또한 높은 인지적 복잡성을 가지고 있으며, 이는 논리 경로가 더 따라가기 어렵다는 것을 의미한다. 이는 잘 수행하지만, 리소스 누수 및 동시성 오류와 같은 복잡한 버그에 취약하다.
OpenCoder-8B는 “급한 프로토타이퍼”였다. 이는 짧고 집중적인 코드를 생성했으며, 총 120,288 줄의 코드를 생성했지만, 가장 높은 문제 밀도를 가지고 있었다. 이는 빠르고 간결한 코드를 생성하지만, 프로덕션 환경에서 사용하기에는 위험할 수 있다.
Llama 3.2 90B는 “미완성 약속”이었다. 이는 중간적인 결과를 보여주었지만, 가장 나쁨의 보안 태도를 가지고 있었다. 70% 이상의 취약점이 블로커 수준으로 분류되었다.
GPT-4o는 “효율적인 일반화”였다. 이는 기능과 복잡성을 균형 있게 유지했지만, 종종 제어 흐름 오류를 범했습니다. 논리 연산 순서의 오류로 인해 잘못된 결과가 나오거나 코드가 누락될 수 있습니다.
Claude 3.7 Sonnet은 “균형 있는 전임자”였다. 이는 이전 버전보다 덜 장황한 코드를 생성했지만, 16.4%의 주석 밀도를 가지고 있었다. 이는 논리를 더 잘 설명했지만, 여전히 높은 심각도의 취약점을 가지고 있었다.
가장 놀라운 발견은 Claude Sonnet 4와 Claude 3.7을 비교한 결과였다. Sonnet 4는 통과율을 6.3% 개선했지만, 버그의 13.71%가 블로커 수준으로 분류되었다. 이는 성능 개선이 안전성을 희생하는 경우가 있음을 보여주었다.
결론
Sonar의 주요 LLM의 코딩 성격 – State of Code 보고서는 벤치마크 정확도만으로는 충분하지 않음을 보여주었다. 보안 위험, 유지 보수성, 코딩 스타일을 이해하는 것이 모델이 “정확하게” 작동하는지 알고 있는 것만큼 중요하다.
각 성격 – 아키텍트, 프로토타이퍼, 일반화, 균형 있는 전임자 – 는 강점과 약점을 가지고 있다. 개발자와 조직은 “신뢰하지만 검증”하는 접근 방식을 취해야 하며, AI 코딩 지원을 인간의 감독, 철저한 코드 검토, 엄격한 보안 검사와 결합하여 속도와 편의성이 안전성이나 장기적인 안정성을 손상하지 않도록 해야 한다.












