브라우니 GUI
브라우니에는 테스트 커버리지 데이터를 볼 수 있고 컴파일 된 계약 바이트 코드를 분석할 수 있는 GUI가 포함되어 있습니다.
이 섹션의 일부는 EVM 바이트 코드에 대한 이해 수준을 전제로 합니다. 이 주제에 대해 더 알고 싶다면 OpenZeppelin의 Alejandro Santander가 훌륭한 가이드를 작성했습니다. - Solidity 컨트랙트 해체.
시작하기
GUI를 열려면 프로젝트 폴더 내에서 다음 명령을 실행하십시오.
$ brownie gui
또는 콘솔에서:
>>> Gui()
로드된 후에는 먼저 볼 계약을 선택해야합니다. 이를 위해 오른쪽 상단에있는 "계약 선택"이라는 드롭 다운 목록을 클릭하십시오. 프로젝트 내에서 배포 가능한 모든 계약의 목록이 표시됩니다.
선택한 계약이 있으면 주 창에 계약 소스 코드가 표시되고 오른쪽에는 오프코드와 프로그램 카운터 목록이 표시됩니다. 계약이 여러 소스 파일에서 상속되는 경우 소스 간에 전환할 수있는 탭이 제공됩니다. 예를 들어 아래 이미지에서 "Token" 계약에는 "Token.sol"과 "SafeMath.sol"이 모두 포함됩니다.

Opcodes로 작업하기
Opcodes 매핑
코드 섹션을 강조하면 해당 섹션과 연관된 명령어도 강조됩니다. 마찬가지로, 명령어를 선택하면 관련 소스가 강조됩니다.
왼쪽 상단의 Scope
버튼(또는 S
키)을 클릭하여 강조된 소스에 포함된 명령어만 표시되도록 명령어 목록을 필터링합니다.
참고
어두운 배경으로 표시된 Opcodes는 어떤 소스에도 매핑되지 않거나 전체 계약 소스에 매핑되는 경우가 많습니다. 이것들은 일반적으로 컴파일러 최적화의 결과 또는 초기 함수 선택기의 일부입니다.

점프 명령어
왼쪽 상단의 Console
버튼을 클릭하거나 (또는 C
키를 누름) 콘솔을 확장해보세요. 하이라이트된 명령어에 대한 자세한 정보를 볼 수 있습니다.
JUMP 또는 JUMPI 명령어를 선택하면 콘솔에는 관련 JUMPDEST의 프로그램 카운터가 포함된 "대상:" 필드가 표시됩니다. 관련 JUMPDEST는 또한 녹색으로 강조됩니다. J 키를 눌러 명령어를 표시하세요. JUMPDEST 명령어를 선택하면 콘솔에는 하이라이트된 명령어를 가리키는 프로그램 카운터 목록을 제공하는 "점프:" 필드가 포함됩니다. 각 관련 JUMP/JUMPI도 녹색으로 강조됩니다.

기타 • 명령어를 마우스 오른쪽 클릭하면 해당 opcode 유형의 모든 명령어에 노란색 하이라이트가 적용됩니다. • 모든 REVERT
opcode에 대한 하이라이트를 전환하려면 R
키를 누르십시오.
보고서 보기
커버리지 평가 및 보안 분석과 같은 작업은 프로젝트의 reports/
디렉터리에 보고서 파일을 생성합니다. 보고서를 검토하려면:
우측 상단의 드롭다운 목록을 클릭하여 "보고서 선택"을 선택하십시오.보고서 파일을 선택하십시오.새로운 드롭다운 목록이 나타나고 표시할 보고서를 선택할 수 있습니다.
일부 보고서에는 관련 섹션 위에 마우스를 올리면 GUI 콘솔에 표시되는 추가 정보가 포함됩니다.
다음은 커버리지 분석 보고서의 예입니다:

보고서 JSON 형식
제3자 도구는 브라우니 GUI에서 표시할 보고서를 생성할 수 있습니다. 보고서는 프로젝트의 reports/
디렉토리에 저장해야 합니다. 브라우니는 보고서가 JSON 인코딩되어 있으며 다음 구조를 사용하도록 예상합니다.
{
"highlights": {
// this name is shown in the report type drop-down menu
"<Report Type>": {
"ContractName": {
"path/to/sourceFile.sol": [
// start offset, stop offset, color, optional message
[123, 440, "green", ""],
[502, 510, "red", ""],
]
}
}
},
"sha1": {} // optional, not yet implemented
}
각 하이라이트 오프셋의 마지막 항목은 표시할 선택적 메시지입니다. 포함된 경우 여기에 주어진 텍스트는 사용자가 하이라이트 위로 마우스를 올릴 때 GUI 콘솔에 표시됩니다. 메시지를 표시하지 않으려면, ""
또는 null
로 설정하십시오.
'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글
[브라우니 (Brownie)] 10. 컨트랙트로 작업하기 (0) | 2023.06.16 |
---|---|
[브라우니 (Brownie)] 9. 계정으로 작업하기 (0) | 2023.06.16 |
[브라우니 (Brownie)] 7. 브라우니 패키지 관리자 (0) | 2023.06.16 |
[브라우니 (Brownie)] 6. 컨트랙트와 상호작용하기 (0) | 2023.06.16 |
[브라우니 (Brownie)] 5. 컨트랙트 컴파일하기 (0) | 2023.06.16 |