Какие ваши доказательства? Объясняем разработчику отчёты SCA на пальцах. Часть 2
{
"graph": {
"nodes": [
{
"id": 42,
"label": "LITERAL",
"name": "",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "\"http://example.com/\"",
"typeFullName": "ANY",
"parentMethodName": "main.py:.run",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 6,
"columnNumber": 18,
"tags": ""
},
{
"id": 17,
"label": "IDENTIFIER",
"name": "req",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "req",
"typeFullName": "requests.py:",
"parentMethodName": "main.py:",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 1,
"columnNumber": 1,
"tags": ""
},
{
"id": 19,
"label": "LITERAL",
"name": "",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "requests",
"typeFullName": "ANY",
"parentMethodName": "main.py:",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 1,
"columnNumber": 1,
"tags": ""
},
{
"id": 31,
"label": "CALL",
"name": "input",
"fullName": "__builtin.input",
"signature": "",
"isExternal": true,
"code": "input()",
"typeFullName": "ANY",
"parentMethodName": "main.py:.run",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 4,
"columnNumber": 8,
"tags": ""
},
{
"id": 59,
"label": "CALL",
"name": "run",
"fullName": "main.py:.run",
"signature": "",
"isExternal": false,
"code": "run()",
"typeFullName": "ANY",
"parentMethodName": "main.py:",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 9,
"columnNumber": 7,
"tags": ""
},
{
"id": 32,
"label": "IDENTIFIER",
"name": "url",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "url",
"typeFullName": "ANY",
"parentMethodName": "main.py:.run",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 4,
"columnNumber": 2,
"tags": ""
},
{
"id": 46,
"label": "IDENTIFIER",
"name": "req",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "req",
"typeFullName": "requests.py:",
"parentMethodName": "main.py:.run",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 6,
"columnNumber": 9,
"tags": ""
},
{
"id": 20,
"label": "LITERAL",
"name": "",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "req",
"typeFullName": "ANY",
"parentMethodName": "main.py:",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 1,
"columnNumber": 1,
"tags": ""
},
{
"id": 38,
"label": "IDENTIFIER",
"name": "req",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "req",
"typeFullName": "requests.py:",
"parentMethodName": "main.py:.run",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 5,
"columnNumber": 13,
"tags": ""
},
{
"id": 18,
"label": "LITERAL",
"name": "",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "",
"typeFullName": "ANY",
"parentMethodName": "main.py:",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 1,
"columnNumber": 1,
"tags": ""
},
{
"id": 22,
"label": "CALL",
"name": "import",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "import(, requests, req)",
"typeFullName": "ANY",
"parentMethodName": "main.py:",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 1,
"columnNumber": 1,
"tags": "UNKNOWN_IMPORT"
},
{
"id": 34,
"label": "IDENTIFIER",
"name": "url",
"fullName": "",
"signature": "",
"isExternal": false,
"code": "url",
"typeFullName": "ANY",
"parentMethodName": "main.py:.run",
"parentMethodSignature": "",
"parentFileName": "main.py",
"parentPackageName": "",
"parentClassName": "",
"lineNumber": 5,
"columnNumber": 21,
"tags": ""
}
],
"edges": [
{
"src": 38,
"dst": 46,
"label": "REACHING_DEF"
},
{
"src": 20,
"dst": 22,
"label": "DOMINATE"
},
{
"src": 17,
"dst": 46,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 20,
"label": "ARGUMENT"
},
{
"src": 34,
"dst": 38,
"label": "POST_DOMINATE"
},
{
"src": 17,
"dst": 38,
"label": "REACHING_DEF"
},
{
"src": 19,
"dst": 20,
"label": "DOMINATE"
},
{
"src": 46,
"dst": 42,
"label": "CFG"
},
{
"src": 20,
"dst": 22,
"label": "REACHING_DEF"
},
{
"src": 19,
"dst": 20,
"label": "CFG"
},
{
"src": 46,
"dst": 42,
"label": "DOMINATE"
},
{
"src": 18,
"dst": 22,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 19,
"label": "AST"
},
{
"src": 42,
"dst": 46,
"label": "POST_DOMINATE"
},
{
"src": 34,
"dst": 38,
"label": "REACHING_DEF"
},
{
"src": 19,
"dst": 22,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 17,
"label": "REACHING_DEF"
},
{
"src": 20,
"dst": 22,
"label": "CFG"
},
{
"src": 20,
"dst": 19,
"label": "POST_DOMINATE"
},
{
"src": 22,
"dst": 19,
"label": "ARGUMENT"
},
{
"src": 32,
"dst": 34,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 18,
"label": "AST"
},
{
"src": 31,
"dst": 32,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 20,
"label": "AST"
},
{
"src": 38,
"dst": 34,
"label": "CFG"
},
{
"src": 38,
"dst": 34,
"label": "DOMINATE"
},
{
"src": 42,
"dst": 46,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 20,
"label": "POST_DOMINATE"
},
{
"src": 18,
"dst": 19,
"label": "CFG"
},
{
"src": 18,
"dst": 19,
"label": "DOMINATE"
},
{
"src": 19,
"dst": 18,
"label": "POST_DOMINATE"
},
{
"src": 38,
"dst": 34,
"label": "REACHING_DEF"
},
{
"src": 22,
"dst": 18,
"label": "ARGUMENT"
}
]
},
"paths": [
[
31,
32,
34,
38,
46
],
[
20,
22,
17,
38,
34
],
[
20,
22,
17,
46
],
[
18,
22,
17,
38,
34
],
[
22,
17,
38,
46
],
[
42,
46
],
[
19,
22,
17,
38,
34
],
[
18,
22,
17,
46
],
[
19,
22,
17,
46
]
]
}