{"id":"https://openalex.org/W3134894818","doi":"https://doi.org/10.1109/icse43902.2021.00146","title":"PyCG: Practical Call Graph Generation in Python","display_name":"PyCG: Practical Call Graph Generation in Python","publication_year":2021,"publication_date":"2021-05-01","ids":{"openalex":"https://openalex.org/W3134894818","doi":"https://doi.org/10.1109/icse43902.2021.00146","mag":"3134894818"},"language":"en","primary_location":{"id":"doi:10.1109/icse43902.2021.00146","doi":"https://doi.org/10.1109/icse43902.2021.00146","is_oa":false,"landing_page_url":"https://doi.org/10.1109/icse43902.2021.00146","pdf_url":null,"source":{"id":"https://openalex.org/S4210203175","display_name":"ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","issn_l":"0270-5257","issn":["0270-5257","1558-1225"],"is_oa":false,"is_in_doaj":false,"is_core":true,"listed_in":["cwts-core","norway-2"],"host_organization":"https://openalex.org/P4310319808","host_organization_name":"Institute of Electrical and Electronics Engineers","host_organization_lineage":["https://openalex.org/P4310319808"],"host_organization_lineage_names":["Institute of Electrical and Electronics Engineers"],"type":"conference"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)","raw_type":"proceedings-article"},"volume":null,"type":"conference-paper","is_traditional":true,"indexed_in":["arxiv","crossref","datacite"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://arxiv.org/pdf/2103.00587","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5045533144","display_name":"Vitalis Salis","orcid":null,"observed_orcids":[]},"institutions":[{"id":"https://openalex.org/I174458059","display_name":"National Technical University of Athens","ror":"https://ror.org/03cx6bg69","country_code":"GR","type":"education","lineage":["https://openalex.org/I174458059"]},{"id":"https://openalex.org/I73142707","display_name":"Athens University of Economics and Business","ror":"https://ror.org/03s262162","country_code":"GR","type":"education","lineage":["https://openalex.org/I73142707"]}],"countries":["GR"],"is_corresponding":false,"raw_author_name":"Vitalis Salis","raw_affiliation_strings":["Athens University of Economics and Business; National Technical University of Athens","Athens University of Economics and Business and National Technical University of Athens"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Athens University of Economics and Business; National Technical University of Athens","institution_ids":["https://openalex.org/I174458059","https://openalex.org/I73142707"]},{"raw_affiliation_string":"Athens University of Economics and Business and National Technical University of Athens","institution_ids":["https://openalex.org/I174458059","https://openalex.org/I73142707"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5090354733","display_name":"Thodoris Sotiropoulos","orcid":"https://orcid.org/0000-0002-9906-3073","observed_orcids":["https://orcid.org/0000-0002-9906-3073"]},"institutions":[{"id":"https://openalex.org/I73142707","display_name":"Athens University of Economics and Business","ror":"https://ror.org/03s262162","country_code":"GR","type":"education","lineage":["https://openalex.org/I73142707"]}],"countries":["GR"],"is_corresponding":false,"raw_author_name":"Thodoris Sotiropoulos","raw_affiliation_strings":["Athens University of Economics and Business","<sup>*</sup> Athens University of Economics and Business"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Athens University of Economics and Business","institution_ids":["https://openalex.org/I73142707"]},{"raw_affiliation_string":"<sup>*</sup> Athens University of Economics and Business","institution_ids":["https://openalex.org/I73142707"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5065365299","display_name":"\u03a0\u03ac\u03bd\u03bf\u03c2 \u039b\u03bf\u03c5\u03c1\u03af\u03b4\u03b1\u03c2","orcid":"https://orcid.org/0000-0002-3971-4612","observed_orcids":["https://orcid.org/0000-0002-3971-4612"]},"institutions":[{"id":"https://openalex.org/I73142707","display_name":"Athens University of Economics and Business","ror":"https://ror.org/03s262162","country_code":"GR","type":"education","lineage":["https://openalex.org/I73142707"]}],"countries":["GR"],"is_corresponding":false,"raw_author_name":"Panos Louridas","raw_affiliation_strings":["Athens University of Economics and Business","<sup>*</sup> Athens University of Economics and Business"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Athens University of Economics and Business","institution_ids":["https://openalex.org/I73142707"]},{"raw_affiliation_string":"<sup>*</sup> Athens University of Economics and Business","institution_ids":["https://openalex.org/I73142707"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5021948425","display_name":"Diomidis D. Spinellis","orcid":"https://orcid.org/0000-0003-4231-1897","observed_orcids":["https://orcid.org/0000-0003-4231-1897"]},"institutions":[{"id":"https://openalex.org/I73142707","display_name":"Athens University of Economics and Business","ror":"https://ror.org/03s262162","country_code":"GR","type":"education","lineage":["https://openalex.org/I73142707"]}],"countries":["GR"],"is_corresponding":false,"raw_author_name":"Diomidis Spinellis","raw_affiliation_strings":["Athens University of Economics and Business","<sup>*</sup> Athens University of Economics and Business"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Athens University of Economics and Business","institution_ids":["https://openalex.org/I73142707"]},{"raw_affiliation_string":"<sup>*</sup> Athens University of Economics and Business","institution_ids":["https://openalex.org/I73142707"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5021658848","display_name":"Dimitris Mitropoulos","orcid":"https://orcid.org/0000-0002-5061-9018","observed_orcids":["https://orcid.org/0000-0002-5061-9018"]},"institutions":[{"id":"https://openalex.org/I63843962","display_name":"National Infrastructures for Research and Technology -  GRNET S.A","ror":"https://ror.org/05tcasm11","country_code":"GR","type":"company","lineage":["https://openalex.org/I63843962"]},{"id":"https://openalex.org/I73142707","display_name":"Athens University of Economics and Business","ror":"https://ror.org/03s262162","country_code":"GR","type":"education","lineage":["https://openalex.org/I73142707"]}],"countries":["GR"],"is_corresponding":false,"raw_author_name":"Dimitris Mitropoulos","raw_affiliation_strings":["Athens University of Economics and Business; National Infrastructures for Research and Technology - GRNET","Athens University of Economics and Business and National Infrastructures for Research and Technology - GRNET"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Athens University of Economics and Business; National Infrastructures for Research and Technology - GRNET","institution_ids":["https://openalex.org/I63843962","https://openalex.org/I73142707"]},{"raw_affiliation_string":"Athens University of Economics and Business and National Infrastructures for Research and Technology - GRNET","institution_ids":["https://openalex.org/I63843962","https://openalex.org/I73142707"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":12.0389,"has_fulltext":true,"cited_by_count":114,"citation_normalized_percentile":{"value":0.99486521,"is_in_top_1_percent":true,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":97,"max":100},"biblio":{"volume":null,"issue":null,"first_page":"1646","last_page":"1657"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.5609999895095825,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.5609999895095825,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.219200000166893,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.16689999401569366,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/python","display_name":"Python","score":0.718999981880188},{"id":"https://openalex.org/keywords/static-analysis","display_name":"static analysis","score":0.6209999918937683},{"id":"https://openalex.org/keywords/interprocedural-analysis","display_name":"interprocedural analysis","score":0.9549999833106995},{"id":"https://openalex.org/keywords/electric-generators","display_name":"generators","score":0.5450000166893005},{"id":"https://openalex.org/keywords/multiple-inheritance","display_name":"multiple inheritance","score":0.9909999966621399},{"id":"https://openalex.org/keywords/vulnerability-propagation","display_name":"vulnerability propagation","score":0.8700000047683716},{"id":"https://openalex.org/keywords/security-advisories","display_name":"security advisories","score":0.6259999871253967}],"concepts":[{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.8593885898590088},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8055692911148071},{"id":"https://openalex.org/C102379954","wikidata":"https://www.wikidata.org/wiki/Q2589940","display_name":"Call graph","level":2,"score":0.660667896270752},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6145589351654053},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4947216212749481},{"id":"https://openalex.org/C48044578","wikidata":"https://www.wikidata.org/wiki/Q727490","display_name":"Scalability","level":2,"score":0.49387413263320923},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.17339572310447693}],"mesh":[],"locations_count":4,"locations":[{"id":"doi:10.1109/icse43902.2021.00146","doi":"https://doi.org/10.1109/icse43902.2021.00146","is_oa":false,"landing_page_url":"https://doi.org/10.1109/icse43902.2021.00146","pdf_url":null,"source":{"id":"https://openalex.org/S4210203175","display_name":"ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)","issn_l":"0270-5257","issn":["0270-5257","1558-1225"],"is_oa":false,"is_in_doaj":false,"is_core":true,"listed_in":["cwts-core","norway-2"],"host_organization":"https://openalex.org/P4310319808","host_organization_name":"Institute of Electrical and Electronics Engineers","host_organization_lineage":["https://openalex.org/P4310319808"],"host_organization_lineage_names":["Institute of Electrical and Electronics Engineers"],"type":"conference"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)","raw_type":"proceedings-article"},{"id":"pmh:oai:arXiv.org:2103.00587","doi":null,"is_oa":true,"landing_page_url":"http://arxiv.org/abs/2103.00587","pdf_url":"https://arxiv.org/pdf/2103.00587","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by-sa","license_id":"https://openalex.org/licenses/cc-by-sa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"mag:3134894818","doi":null,"is_oa":true,"landing_page_url":"https://arxiv.org/pdf/2103.00587","pdf_url":null,"source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"arXiv (Cornell University)","raw_type":null},{"id":"doi:10.48550/arxiv.2103.00587","doi":"https://doi.org/10.48550/arxiv.2103.00587","is_oa":true,"landing_page_url":"https://doi.org/10.48550/arxiv.2103.00587","pdf_url":null,"source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by-sa","license_id":"https://openalex.org/licenses/cc-by-sa","version":null,"is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"Preprint"}],"best_oa_location":{"id":"pmh:oai:arXiv.org:2103.00587","doi":null,"is_oa":true,"landing_page_url":"http://arxiv.org/abs/2103.00587","pdf_url":"https://arxiv.org/pdf/2103.00587","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by-sa","license_id":"https://openalex.org/licenses/cc-by-sa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},"sustainable_development_goals":[],"study_designs":[],"awards":[{"id":"https://openalex.org/G3231584680","display_name":"Fine-Grained Analysis of Software Ecosystems as Networks","funder_award_id":"825328","funder_id":"https://openalex.org/F4320320300","funder_display_name":"European Commission"},{"id":"https://openalex.org/G434337789","display_name":null,"funder_award_id":"HORIZON2020","funder_id":"https://openalex.org/F4320320300","funder_display_name":"European Commission"}],"funders":[{"id":"https://openalex.org/F4320320300","display_name":"European Commission","ror":"https://ror.org/00k4n6c32"}],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3134894818.pdf","grobid_xml":"https://content.openalex.org/works/W3134894818.grobid-xml"},"referenced_works_count":38,"referenced_works":["https://openalex.org/W202191487","https://openalex.org/W1518650316","https://openalex.org/W1536098516","https://openalex.org/W1959797194","https://openalex.org/W1966862293","https://openalex.org/W1987035533","https://openalex.org/W1989147905","https://openalex.org/W2024818492","https://openalex.org/W2027625187","https://openalex.org/W2048899404","https://openalex.org/W2075309900","https://openalex.org/W2080696000","https://openalex.org/W2109427294","https://openalex.org/W2115588821","https://openalex.org/W2132733485","https://openalex.org/W2140792139","https://openalex.org/W2151562310","https://openalex.org/W2247217208","https://openalex.org/W2247976907","https://openalex.org/W2591793539","https://openalex.org/W2727046775","https://openalex.org/W2733373979","https://openalex.org/W2761428514","https://openalex.org/W2761442781","https://openalex.org/W2769507270","https://openalex.org/W2791942415","https://openalex.org/W2808651716","https://openalex.org/W2888012902","https://openalex.org/W2897025578","https://openalex.org/W2909327301","https://openalex.org/W2910217074","https://openalex.org/W2915022622","https://openalex.org/W2937057045","https://openalex.org/W2955656327","https://openalex.org/W2959352824","https://openalex.org/W2997903896","https://openalex.org/W3003638206","https://openalex.org/W4247387602"],"related_works":["https://openalex.org/W4308643026","https://openalex.org/W3153075140","https://openalex.org/W7134192905","https://openalex.org/W4376167049","https://openalex.org/W3161739412","https://openalex.org/W4393096117","https://openalex.org/W2999495113","https://openalex.org/W7212312374","https://openalex.org/W2888012902","https://openalex.org/W4228996428"],"abstract_inverted_index":{"Call":[0],"graphs":[1,18,58],"play":[2],"an":[3,20,104],"important":[4],"role":[5],"in":[6,19,74,87,194,213],"different":[7],"contexts,":[8],"such":[9,141],"as":[10,142],"profiling":[11],"and":[12,37,41,101,135,147,170,216,225],"vulnerability":[13],"propagation":[14],"analysis.":[15,106],"Generating":[16],"call":[17,57,84,116,158],"efficient":[21,134],"manner":[22],"can":[23,186,234],"be":[24,133],"a":[25,79,163,171,197,241,251],"challenging":[26],"task":[27],"when":[28],"it":[29,207],"comes":[30],"to":[31,55,122,132,244],"high-level":[32],"languages":[33],"that":[34,70,184],"are":[35],"modular":[36],"incorporate":[38],"dynamic":[39],"features":[40],"higher-order":[42],"functions.":[43,125],"Despite":[44],"the":[45,114,127,209],"language's":[46],"popularity,":[47],"there":[48],"have":[49,151],"been":[50],"very":[51],"few":[52],"tools":[53,64],"aiming":[54],"generate":[56],"for":[59,83,201,211],"Python":[60,139,168,179,212],"programs.":[61,76],"Worse,":[62],"these":[63,109],"suffer":[65],"from":[66],"several":[67,138,176],"effectiveness":[68],"issues":[69],"limit":[71],"their":[72],"practicality":[73],"realistic":[75],"We":[77,89,150],"propose":[78],"pragmatic,":[80],"static":[81],"approach":[82],"graph":[85,117],"generation":[86],"Python.":[88],"compute":[90],"all":[91,120],"assignment":[92,110],"relations":[93],"between":[94],"program":[95],"identifiers":[96],"of":[97,173,190,192,222],"functions,":[98],"variables,":[99],"classes,":[100],"modules":[102],"through":[103],"inter-procedural":[105],"Based":[107],"on":[108,204],"relations,":[111],"we":[112,157,230],"produce":[113],"resulting":[115],"by":[118,239],"resolving":[119],"calls":[121],"potentially":[123],"invoked":[124],"Notably,":[126],"underlying":[128],"analysis":[129,238],"is":[130],"designed":[131],"scalable,":[136],"handling":[137],"features,":[140],"modules,":[143],"generators,":[144],"function":[145],"closures,":[146],"multiple":[148],"inheritance.":[149],"evaluated":[152],"our":[153],"prototype":[154],"implementation,":[155],"which":[156],"PyCG,":[159],"using":[160,250],"two":[161],"benchmarks:":[162],"micro-benchmark":[164],"suite":[165],"containing":[166],"small":[167],"programs":[169],"set":[172],"macro-benchmarks":[174],"with":[175],"popular":[177],"real-world":[178,252],"packages.":[180],"Our":[181],"results":[182],"indicate":[183],"PyCG":[185,218,233],"efficiently":[187],"handle":[188],"thousands":[189],"lines":[191],"code":[193],"less":[195],"than":[196],"second":[198],"(0.38":[199],"seconds":[200],"1k":[202],"LoC":[203],"average).":[205],"Further,":[206],"outperforms":[208],"state-of-the-art":[210],"both":[214],"precision":[215,223],"recall:":[217],"achieves":[219],"high":[220],"rates":[221],"~99.2%":[224],"adequate":[226],"recall":[227],"~69.9%.":[228],"Finally,":[229],"demonstrate":[231],"how":[232],"aid":[235],"dependency":[236],"impact":[237],"showcasing":[240],"potential":[242],"enhancement":[243],"GitHub's":[245],"\"security":[246],"advisory\"":[247],"notification":[248],"service":[249],"example.":[253]},"counts_by_year":[{"year":2026,"cited_by_count":30},{"year":2025,"cited_by_count":17},{"year":2024,"cited_by_count":26},{"year":2023,"cited_by_count":21},{"year":2022,"cited_by_count":15},{"year":2021,"cited_by_count":5}],"updated_date":"2026-11-13T13:42:25.865203","created_date":"2021-03-15T00:00:00"}
