Какие ваши доказательства? Объясняем разработчику отчёты SCA на пальцах. Часть 2

7b90ebd004e16ec6f5fb7af5a0b62dab.jpg
{
    "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
        ]
    ]
}

© Habrahabr.ru