AWS

AWS Codeguru review

뚜봄뚜봄 2024. 3. 3. 13:04

AWS에 머신러닝을 통해 코드에 대한 리뷰를 해주는 솔루션이 나왔다.
공식 페이지 (https://aws.amazon.com/ko/codeguru/)

 

현재 코드진단을 사용할 때 Sonarqube를 사용하고 있는데 뭔가 코드 취약점에 대한 부분 보다는 코드 퀄리티?를 보는데 더 중점적인 툴 같아서 codeguru를 테스트해보려고 한다.

 

환경

1. AWS 도쿄리전 (Codeguru 서울리전 지원안함)

2. django 프로젝트 (java, python만 현재 지원하고 있음)

3. AWS codecommit 사용

 

Architecture

이왕 사용하는거 aws native 솔루션으로 다 만들었다. 이름이 직관적이라 이해가 쉽다.
codecommit - code 저장소

codeBuild - code 빌드 솔루션

codeDeploy - code 배포 솔루션

codeguru는 codecommit에 PR 시 실행된다.

 

Codeguru 설정

매우 간단하다. Codecommit 에서 레포 생성 시 아래있는 옵션을 활성화 해주면 PR시 자동으로 리뷰해준다.

 

결과

1. 우선 단순 테스트를 위해 fastapi로 만든 앱을 돌려봤다. 한 30줄짜리...? 근데 이거는 너무 적어서 그런지 리뷰가 불가능했다... 왜...? 이해가 안간다. fastapi가 main.py 하나로만 이루어져 있어서 뭔가 못알아먹나? 싶어서 django 프로젝트도 만들어서 view.py에 아래와 비슷한 내용의 취약한 코드를 일부러 삽입했는데 그것도 분석이 불가능했다. 그래서 생각보다는 꾸짐..... (sonarqube 에서는 결과값 나왔음...)

from fastapi import FastAPI
import subprocess

app = FastAPI()

@app.get("/execute_command/")
async def execute_command(command: str):
    try:
        # 명령어 실행
        result = subprocess.check_output(command, shell=True, encoding='utf-8')
        return {"result": result}
    except Exception as e:
        # 명령어 실행 중 오류가 발생한 경우
        return {"error": str(e)}

@app.get("/fetch_url/")
async def fetch_url_content(url: str):
    try:
        # URL로부터 내용을 가져옵니다.
        response = requests.get(url)
        if response.status_code == 200:
            # 가져온 내용을 반환합니다.
            return {"content": response.text}
        else:
            return {"error": f"Failed to fetch URL. Status code: {response.status_code}"}
    except Exception as e:
        # URL 가져오기 중 오류가 발생한 경우
        return {"error": str(e)}

 

2. 그래서 이전에 개인 프로젝트용으로 만들었던 django 프로젝트를 그냥 돌렸다.

결과값은 나왔는데... 뭐 겁나 불친절하다 ㅋㅋㅋ 아직 다른 SAST에 비하면 추가되야할 기능이 많아보인다. 이걸 따로 파싱을 해서 써야하는건지 아니면 뭐 어떻게 검색해서 쓰라는건지 -_-;  code quality에 관한 내용인지 보안에 관한건지 따로 보는건지 뭐 이런저런 불편함이 많다. 설명도 불친절하고...아직까지는 sonarqube에서 갈아탈일은 없어보인다...