개요

Static Analysis는 비공개 베타 버전이며 Python 언어만 지원합니다. 액세스를 요청하려면 지원팀에 문의하세요.

사이트에서는 Static Analysis를 사용할 수 없습니다.

Datadog Static Analysis는 코드 리뷰에서 CI/CD 파이프라인의 위반 사항을 감지하고, 버그, 보안, 유지 관리 문제를 식별하는데 도움이 되는 즉시 사용 가능한 규칙을 제공합니다. 자세한 정보는 Static Analysis 설명서를 참조하세요.

규칙

모범 사례를 따라 Python 코드 작성하기

규칙 세트 ID: python-best-practices

효율적이고 버그 없는 코드를 작성하기 위한 Python 모범 사례.

읽을 수 있는 클래스 이름 정하기AMBIGUOUS-CLASS-NAME more more 읽을 수 있는 함수 이름 정하기AMBIGUOUS-FUNCTION-NAME more more 읽을 수 있는 변수 이름 정하기AMBIGUOUS-VARIABLE-NAME more more any 유형 사용하지 않기ANY-TYPE-DISALLOW more more 같은 이름의 인수가 없도록 하기ARGUMENT-SAME-NAME more more assertraises는 특정 예외를 확인해야 함ASSERTRAISES-SPECIFIC-EXCEPTION more more 사전에서 중복 키 피하기AVOID-DUPLICATE-KEYS more more 문자열 연결 피하기AVOID-STRING-CONCAT more more 클래스 메서드는 self를 사용할 수 없음CLASS-METHODS-USE-SELF more more 반복하는 동안 사전 수정하지 않기COLLECTION-WHILE-ITERATING more more todo 및 fixme 코멘트는 소유권이 있어야 함COMMENT-FIXME-TODO-OWNERSHIP more more 비교에서 변수는 그대로 두어야 함COMPARISON-CONSTANT-LEFT more more if 조건은 다른 코드 블록이어야 함CONDITION-SIMILAR-BLOCK more more __exit__와 __enter__가 모두 정의되었는지 확인CTX-MANAGER-ENTER-EXIT-DEFINED more more 데이터 클래스에 특수 메서드 사용하지 않기DATACLASS-SPECIAL-METHODS more more check equal은 일관된 기본 유형에 사용됨EQUAL-BASIC-TYPES more more 예외가 기본 예외를 상속하는지 확인EXCEPTION-INHERIT more more finally 블록에서 break나 continue 사용하지 않기FINALLY-NO-BREAK-CONTINUE-RETURN more more 함수는 한 번만 정의해야 함FUNCTION-ALREADY-EXISTS more more 함수 인수에 할당하지 않아야 함FUNCTION-VARIABLE-ARGUMENT-NAME more more 제네릭 예외를 사용하는 경우 마지막에 두어야 함GENERIC-EXCEPTION-LAST more more getter/setter는 각각 한 개 또는 두 개의 인수를 가져야 함GET-SET-ARGUMENTS more more if 조건이 값을 반환하는 경우 else는 필요하지 않음IF-RETURN-NO-ELSE more more 모듈을 두 번 가져옴IMPORT-MODULES-TWICE more more import statement 당 하나의 모듈만 가져옴IMPORT-SINGLE-MODULE more more super()를 사용하여 상위 생성자 호출하기INIT-CALL-PARENT more more 클래스에 __init__ 메서드가 있는지 확인하기INIT-METHOD-REQUIRED more more __init__ 함수로 반환하지 않음INIT-NO-RETURN-VALUE more more strip() 인수에 중복 문자가 없어야 함INVALID-STRIP-CALL more more 로깅 함수에 형식 문자열 사용하지 않기LOGGING-NO-FORMAT more more 메서드가 속성과 같은 이름을 가짐METHOD-HIDDEN more more 너무 많은 중첩된 블록을 갖지 않기NESTED-BLOCKS more more 프로덕션 코드에 assert 사용하지 않기NO-ASSERT more more 튜플에 assert 사용하지 않기NO-ASSERT-ON-TUPLES more more bare except 사용하지 않기NO-BARE-EXCEPT more more 특별한 예외가 없는 한 raise 스테이트먼트는 사용하지 않기NO-BARE-RAISE more more 기본 예외를 발생시키지 않기NO-BASE-EXCEPTION more more datetime.today() 사용하지 않기NO-DATETIME-TODAY more more 이중 부정 사용하지 않기NO-DOUBLE-NOT more more 연산자 --와 ++ 사용하지 않기NO-DOUBLE-UNARY-OPERATOR more more 기본 클래스는 한 번만 사용하기NO-DUPLICATE-BASE-CLASS more more 연산자 =+와 =- 사용하지 않기NO-EQUAL-UNARY more more exit() 사용하지 않기NO-EXIT more more 제네릭 예외 사용하지 않기NO-GENERIC-EXCEPTION more more 조건에서 true와 비교하지 않기NO-IF-TRUE more more range(len(<array>))에서 for i 사용하지 않기NO-RANGE-LOOP-WITH-LEN more more 패스 스테이트먼트가 있는 예외 무시하지 않기NO-SILENT-EXCEPTION more more 읽기 전용에서는 오픈 플래그 정의하지 않기OPEN-ADD-FLAG more more os.environ에 할당해도 환경은 지워지지 않음OS-ENVIRON-NO-ASSIGN more more notimplemented를 발생시키지 말 것 - 존재하지 않음RAISING-NOT-IMPLEMENTED more more __bytes__ 메서드는 문자열이 아니라 바이트를 반환해야 함RETURN-BYTES-NOT-STRING more more 함수 외부로 반환하지 않기RETURN-OUTSIDE-FUNCTION more more 자신에게 할당하지 않기SELF-ASSIGNMENT more more __slots__가 단일 문자열이어서는 안 됨SLOTS-NO-SINGLE-STRING more more 특수 메서드에 올바른 인수가 있는지 확인하기SPECIAL-METHODS-ARGUMENTS more more 정적 메서드에 파라미터로 self 사용하지 않기STATIC-METHOD-NO-SELF more more 중첩된 if 조건을 너무 많이 사용하지 않기TOO-MANY-NESTED-IF more more 중첩된 루프 및 조건을 너무 많이 사용하지 않기TOO-MANY-WHILE more more type 대신 isinstance 사용하기TYPE-CHECK-ISINSTANCE more more 도달할 수 없는 코드 피하기UNREACHABLE-CODE more more 값이 호출 가능한지 알아보기 위해 hasattr 사용하지 않기USE-CALLABLE-NOT-HASATTR more more

Python 코드 스타일 적용

규칙 세트 ID: python-code-style

Python 코드 스타일을 적용하는 규칙


Python 프로그램 구조 확인

규칙 세트 ID: python-design

중첩된 루프를 포함한 Python 프로그램의 구조 확인을 위한 규칙.


Django 모범 사례 및 보안 확인

규칙 세트 ID: python-django

Django 모범 사례와 보안을 위한 규칙.


Flask 모범 사례 및 보안 확인

규칙 세트 ID: python-flask

Flask 모범 사례와 보안을 위한 규칙.


Python 코드에 표현 문제가 있는지 확인

규칙 세트 ID: python-inclusive

Python의 코드와 주석에서 부적절한 표현을 피하기 위한 규칙.


pandas를 사용한 데이터 과학 모범 사례

규칙 세트 ID: python-pandas

pandas 코드가 적절하게 사용되었는지 확인하기 위한 일련의 규칙입니다.

  • import 선언이 다음 코딩 가이드라인을 따르도록 합니다.
  • 더 이상 사용되지 않는 코드와 메서드를 피하세요.
  • 가능한 한 비효율적인 코드를 피하세요.

참고 자료

Additional helpful documentation, links, and articles: