주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

Polyspace Access 웹 인터페이스에서 Code Prover 결과 해석

이 주제는 Polyspace Access 웹 인터페이스에서 Code Prover 결과를 검토하는 방법을 보여줍니다. Polyspace 데스크톱 제품의 사용자 인터페이스에서 유사한 워크플로를 보려면 Interpret Code Prover Results in Polyspace Desktop User Interface (Polyspace Code Prover).를 참조하십시오.

Polyspace® Code Prover™ 분석 결과를 열면 Results List 창에 목록이 표시됩니다. 이 목록은 실행 시간 검사, 코딩 규칙 위반, 코드 메트릭 및 전역 변수 사용으로 구성됩니다.

먼저 리뷰의 초점을 좁힐 수 있습니다.

  • 툴스트립의 필터를 사용하여 목록을 좁히세요. 예를 들어, 큰 영향을 미치는 결함에 집중할 수 있습니다.

  • Results List의 열 머리글을 클릭하면 해당 열의 내용에 따라 목록이 정렬됩니다. 예를 들어 Group 또는 File로 정렬할 수 있습니다.

    Code Prover 실행 시간 검사의 결과는 이전 검사 결과에 의존하므로, 함수의 시작부터 끝까지 실행 시간 검사를 순차적으로 수행하는 것이 도움이 됩니다.

Polyspace Access 웹 인터페이스에서 결과 필터링 및 정렬 항목도 참조하십시오. 목록을 좁히면 개별 결과를 검토하기 시작할 수 있습니다. 이 주제에서는 결과를 검토하는 방법을 설명합니다.

리뷰를 시작하려면 목록에서 결과를 선택하세요.

결과 해석

메시지 해석

첫 번째 단계는 문제가 무엇인지 이해하는 것입니다. Result Details 패널의 메시지와 Source 패널의 관련 코드 줄을 읽어라.

이 시점에서, 문제를 해결할지 여부를 결정할 준비가 되었을 수 있습니다.

이 메시지는 여러 부분으로 구성됩니다:

  • 색상과 아이콘 확인: Code Prover Result and Source Code Colors (Polyspace Code Prover) 참조. 실행 시 오류에 대한 검사 시:

    • : 빨간색은 확실한 오류를 나타냅니다.

    • : 주황색은 오류 가능성을 나타냅니다.

    • : 회색은 실행 불가능한 코드를 나타냅니다.

    • : 녹색은 특정 오류가 발생할 수 없음을 나타냅니다.

  • 실행 시 검사 설명.

    앞서 제시된 예시에서, 이 검사는 배열 인덱스가 배열 경계를 벗어나는지 여부를 판단합니다.

  • 실행 시 검사와 관련된 값들.

    이 예시에서 메시지는 배열 크기(127), 배열 경계(0..126), 그리고 해당 코드 지점에서 배열 인덱스 변수가 취할 수 있는 값의 범위(0..555)를 명시합니다.

  • 오렌지색 체크에 대한 부정확성의 관련 원인들.

    이 예시에서 메시지는 두 개의 휘발성 변수가 해당 검사의 원인이 될 수 있다고 명시합니다.

소스 코드 툴팁에서 변수 범위 보기

Source 패널에서 변수와 연산은 툴팁이 있는 경우 밑줄이 그어져 있습니다.

이 예시에서 툴팁은 다음에 나타납니다:

  • s8_ret: + 연산 전에 그 데이터 유형과 값의 범위를 확인할 수 있습니다.

    + 연산 중에 데이터 유형 변환이 발생하면, 툴팁에서도 이 변환을 확인할 수 있습니다.

  • +: 왼쪽과 오른쪽 피연산자의 값과 결과를 볼 수 있습니다.

  • =: 할당 과정에서 발생하는 모든 데이터 유형 변환과 그 결과를 확인할 수 있습니다.

추가 도움 받기

때로는 특정 결과를 얻으려면 추가적인 도움이 필요할 수 있습니다. 선택한 결과에 대한 도움말 페이지를 열려면 아이콘을 클릭하세요. 결과를 보여주는 코드 예제를 참조하십시오.

결과의 근본 원인 찾기

때로는 근본 원인이 결과가 표시되는 실제 위치와 멀리 떨어져 있을 수 있습니다. 예를 들어, 읽은 변수는 초기화에 도달할 수 없기 때문에 초기화되지 않을 수 있습니다. 변수를 읽을 때 결함이 나타나지만, 근본 원인은 항상 거짓인 이전의 if 또는 while 상태일 가능성이 있습니다.

소스 코드에서 탐색하기

때로는 Result Details 패널이 결과로 이어지는 일련의 사건들을 보여줍니다. 그러나 대부분의 경우, 코드 속에서 스스로 길을 찾아야 합니다. 변수에 대한 툴팁을 사용하여 코드를 탐색하면서 변수 범위의 전파를 추적하십시오.

int func (int var) { /* Initial range of var */
     … 
     var -= get ();  /* New range of var */
     …
     set(&var);     /* New range of var */
}

사용자 인터페이스에서 다음과 같은 빠른 탐색 경로를 사용하십시오:

  • 변수에 대한 모든 참조를 검색하고 살펴보세요.

    Source Code 패널에서 변수 이름을 마우스 오른쪽 버튼으로 클릭하고 Search For All References를 선택하십시오. 또는 변수를 두 번 클릭하십시오. 이러한 옵션들은 단순한 문자열 일치 이상의 작업을 수행합니다. 옵션은 특정 변수의 인스턴스만 표시하며, 다른 범위에서 동일한 이름을 가진 다른 변수는 표시하지 않습니다.

  • 함수 호출에서 해당 정의로 이동합니다.

    Source Code 창에서 함수 이름을 마우스 오른쪽 버튼으로 클릭하십시오. Go To Definition를 선택하십시오.

  • 함수에서 호출자와 피호출자로 이동합니다.

    Result Details 창에서 아이콘을 클릭하세요. 결과를 포함하는 함수와 그 호출자 및 피호출자를 볼 수 있습니다. 발신자 또는 수신자 이름을 클릭하면 통화 사이트로 이동합니다. 이름을 더블클릭하면 정의로 이동합니다.

    또는 아이콘을 클릭하면 결과에 이르는 호출 순서를 그래픽으로 확인할 수 있습니다. 이 순서대로 함수로 이동하려면 그래프의 노드를 클릭하세요.

  • 함수 호출 또는 루프 키워드에서 해당 함수 또는 루프 본문의 오류로 이동합니다.

    오류가 특정 함수 호출이나 특정 루프 반복에서만 발생하는 경우, 해당 함수 호출이나 루프 반복이 빨간색으로 강조 표시됩니다. 빨간색 함수 호출 또는 루프 키워드를 마우스 오른쪽 버튼으로 클릭하세요. 해당 옵션이 사용 가능한 경우 Go To Cause를 선택하십시오.

  • 전역 변수의 모든 인스턴스를 탐색합니다.

    Result Details 창에서 아이콘을 클릭하세요. 결과 내의 모든 전역 변수를 확인하고 해당 변수에 대한 읽기/쓰기 작업을 수행합니다.

코드 내 경로를 탐색하기 전에, 무엇을 찾고 있는지 결정하고 적절한 탐색 도구를 선택하십시오. 예를 들면 다음과 같습니다.

  • Non-initialized variable 검사를 조사하려면 해당 변수가 전혀 초기화되지 않았는지 확인하는 것이 좋습니다. 해당 변수의 이전 인스턴스를 찾아 초기화되었는지 확인하십시오.

  • MISRA C:2012 Rule 17.7 위반 사항을 조사하려면:

    The value returned by a function having non-void return type shall be used.
    함수 호출에서 함수 정의로 이동하고 싶을 수도 있습니다.

찾아야 할 다른 예시들은 Reviewing Code Prover Run-Time Checks (Polyspace Code Prover)를 참조하십시오. 현재 결과에서 벗어나면, Result Details 창에 있는 아이콘을 사용하여 해당 결과로 돌아가십시오.

결과를 포함하는 소스 코드 토큰을 클릭하면, Results List 패널의 이전 결과 선택과 Result Details 패널의 세부 정보는 변경되지 않습니다. 결과 목록과 결과 세부 정보를 고정된 상태로 유지하면서 소스 코드를 탐색할 수 있습니다. 때로는 토큰과 연관된 결과를 확인하고 싶을 수 있습니다. 결과 선택 및 세부 정보를 업데이트하려면, Ctrl 키를 누른 채 토큰을 클릭하거나 마우스 오른쪽 버튼을 클릭한 후 Select Results At This Location를 선택하십시오.

새 창에서 열기

결과를 검토하는 데 소스 코드 내 심층 탐색이 필요한 경우, 원본 소스 코드 창에서 탐색하는 동안 결과에 집중할 수 있는 중복 소스 코드 창을 생성할 수 있습니다.

Source Code 패널에서 마우스 오른쪽 버튼을 클릭하고 Create Duplicate Code Window를 선택하십시오. 중복 파일 이름(-spawn 1로 끝나는)이 표시된 탭을 마우스 오른쪽 버튼으로 클릭하고 New Vertical Group를 선택하십시오.

원본 파일 창에 결함이 여전히 표시되는 동안 중복 파일 창에서 탐색 단계를 수행하십시오. 조사가 완료된 후 중복 창을 닫으십시오.

참고 항목

도움말 항목