{"id":"https://openalex.org/W4411450256","doi":"https://doi.org/10.1145/3729395","title":"DyLin: A Dynamic Linter for Python","display_name":"DyLin: A Dynamic Linter for Python","publication_year":2025,"publication_date":"2025-06-19","ids":{"openalex":"https://openalex.org/W4411450256","doi":"https://doi.org/10.1145/3729395"},"language":"en","primary_location":{"id":"doi:10.1145/3729395","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3729395","pdf_url":null,"source":{"id":"https://openalex.org/S4404663975","display_name":"Proceedings of the ACM on software engineering.","issn_l":"2994-970X","issn":["2994-970X"],"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Software Engineering","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5002459483","display_name":"Aryaz Eghbali","orcid":"https://orcid.org/0000-0001-9763-8147"},"institutions":[{"id":"https://openalex.org/I100066346","display_name":"University of Stuttgart","ror":"https://ror.org/04vnq7t77","country_code":"DE","type":"education","lineage":["https://openalex.org/I100066346"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Aryaz Eghbali","raw_affiliation_strings":["University of Stuttgart, Stuttgart, Germany"],"raw_orcid":"https://orcid.org/0000-0001-9763-8147","affiliations":[{"raw_affiliation_string":"University of Stuttgart, Stuttgart, Germany","institution_ids":["https://openalex.org/I100066346"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5118337530","display_name":"Felix Burk","orcid":null},"institutions":[{"id":"https://openalex.org/I100066346","display_name":"University of Stuttgart","ror":"https://ror.org/04vnq7t77","country_code":"DE","type":"education","lineage":["https://openalex.org/I100066346"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Felix Burk","raw_affiliation_strings":["University of Stuttgart, Stuttgart, Germany"],"raw_orcid":"https://orcid.org/0009-0002-4561-1174","affiliations":[{"raw_affiliation_string":"University of Stuttgart, Stuttgart, Germany","institution_ids":["https://openalex.org/I100066346"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5013438083","display_name":"Michael Pradel","orcid":"https://orcid.org/0000-0003-1623-498X"},"institutions":[{"id":"https://openalex.org/I100066346","display_name":"University of Stuttgart","ror":"https://ror.org/04vnq7t77","country_code":"DE","type":"education","lineage":["https://openalex.org/I100066346"]}],"countries":["DE"],"is_corresponding":false,"raw_author_name":"Michael Pradel","raw_affiliation_strings":["University of Stuttgart, Stuttgart, Germany"],"raw_orcid":"https://orcid.org/0000-0003-1623-498X","affiliations":[{"raw_affiliation_string":"University of Stuttgart, Stuttgart, Germany","institution_ids":["https://openalex.org/I100066346"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I100066346"],"apc_list":null,"apc_paid":null,"fwci":2.3545,"has_fulltext":false,"cited_by_count":2,"citation_normalized_percentile":{"value":0.8884866,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":91,"max":97},"biblio":{"volume":"2","issue":"FSE","first_page":"2828","last_page":"2849"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9983000159263611,"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9983000159263611,"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.9973000288009644,"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"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9932000041007996,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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 (programming language)","score":0.9602935314178467},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8080549240112305},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7239899635314941},{"id":"https://openalex.org/keywords/false-positive-paradox","display_name":"False positive paradox","score":0.543980598449707},{"id":"https://openalex.org/keywords/source-code","display_name":"Source code","score":0.4794663190841675},{"id":"https://openalex.org/keywords/open-source","display_name":"Open source","score":0.44803357124328613},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.27882927656173706},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.2583872079849243}],"concepts":[{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.9602935314178467},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8080549240112305},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7239899635314941},{"id":"https://openalex.org/C64869954","wikidata":"https://www.wikidata.org/wiki/Q1859747","display_name":"False positive paradox","level":2,"score":0.543980598449707},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.4794663190841675},{"id":"https://openalex.org/C3018397939","wikidata":"https://www.wikidata.org/wiki/Q3644502","display_name":"Open source","level":3,"score":0.44803357124328613},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.27882927656173706},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.2583872079849243}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3729395","is_oa":false,"landing_page_url":"https://doi.org/10.1145/3729395","pdf_url":null,"source":{"id":"https://openalex.org/S4404663975","display_name":"Proceedings of the ACM on software engineering.","issn_l":"2994-970X","issn":["2994-970X"],"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Software Engineering","raw_type":"journal-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":57,"referenced_works":["https://openalex.org/W1543330234","https://openalex.org/W1660714679","https://openalex.org/W1972544179","https://openalex.org/W1987647365","https://openalex.org/W2036639103","https://openalex.org/W2038461625","https://openalex.org/W2089745089","https://openalex.org/W2093721629","https://openalex.org/W2100148636","https://openalex.org/W2127989655","https://openalex.org/W2131954495","https://openalex.org/W2136646111","https://openalex.org/W2153919898","https://openalex.org/W2156858199","https://openalex.org/W2161992906","https://openalex.org/W2164726441","https://openalex.org/W2353739181","https://openalex.org/W2514578992","https://openalex.org/W2543953340","https://openalex.org/W2548165777","https://openalex.org/W2549033012","https://openalex.org/W2560583759","https://openalex.org/W2604348044","https://openalex.org/W2888822874","https://openalex.org/W2889849786","https://openalex.org/W2894732341","https://openalex.org/W2911282308","https://openalex.org/W2997840096","https://openalex.org/W3000500663","https://openalex.org/W3100869085","https://openalex.org/W3105735055","https://openalex.org/W3109537811","https://openalex.org/W3110358918","https://openalex.org/W3192140144","https://openalex.org/W4205239483","https://openalex.org/W4220988989","https://openalex.org/W4233410239","https://openalex.org/W4233497262","https://openalex.org/W4234815652","https://openalex.org/W4238623774","https://openalex.org/W4241122238","https://openalex.org/W4253778559","https://openalex.org/W4253813365","https://openalex.org/W4284698653","https://openalex.org/W4285490400","https://openalex.org/W4285490437","https://openalex.org/W4308642593","https://openalex.org/W4308643019","https://openalex.org/W4308643048","https://openalex.org/W4313563767","https://openalex.org/W4384304713","https://openalex.org/W4384304859","https://openalex.org/W4384337832","https://openalex.org/W4384345655","https://openalex.org/W4389162118","https://openalex.org/W4392425548","https://openalex.org/W6912112696"],"related_works":["https://openalex.org/W2207495067","https://openalex.org/W1906486629","https://openalex.org/W4401741136","https://openalex.org/W2557718140","https://openalex.org/W4386470600","https://openalex.org/W4399490472","https://openalex.org/W4308823623","https://openalex.org/W2789551765","https://openalex.org/W2113128227","https://openalex.org/W2019168903"],"abstract_inverted_index":{"Python":[0,53,146,167],"is":[1,113],"a":[2,79,114,152,172,186,267],"dynamic":[3,50,73,129],"language":[4],"with":[5,132,262],"applications":[6],"in":[7,17,92,236],"many":[8],"domains,":[9],"and":[10,35,48,150,217,266],"one":[11],"of":[12,45,52,88,110,116,154,166,174,178,188,228,287],"the":[13,32,42,49,71,82,102,215,225,247,250,257,291],"most":[14],"popular":[15,144,263],"languages":[16],"recent":[18],"years.":[19],"To":[20],"increase":[21],"code":[22,34,155,252],"quality,":[23],"developers":[24],"have":[25,295],"turned":[26],"to":[27,63,78,123,128,135,142,151,157,224,290],"\u201clinters\u201d":[28],"that":[29,120,195,212,249,271,279],"statically":[30,125],"analyze":[31],"source":[33],"warn":[36],"about":[37],"potential":[38],"programming":[39,98],"problems.":[40,66],"However,":[41],"inherent":[43],"limitations":[44],"static":[46,61,264],"analysis":[47],"nature":[51],"make":[54],"it":[55,105],"difficult":[56],"or":[57],"even":[58],"impossible":[59],"for":[60,75,96,239],"linters":[62,265],"detect":[64,136],"some":[65],"This":[67],"paper":[68,112],"presents":[69],"DyLin,":[70],"first":[72],"linter":[74],"Python.":[76],"Similar":[77],"traditional":[80,93],"linter,":[81],"approach":[83,170],"has":[84,253],"an":[85],"extensible":[86],"set":[87,115],"checkers,":[89],"which,":[90],"unlike":[91],"linters,":[94],"search":[95],"specific":[97],"anti-patterns":[99,119],"by":[100,256,276],"analyzing":[101],"program":[103],"as":[104,200],"executes.":[106],"A":[107,260],"key":[108],"contribution":[109],"this":[111],"15":[117],"Python-specific":[118],"are":[121,180,280],"hard":[122],"find":[124],"but":[126],"amenable":[127],"analysis,":[130],"along":[131],"corresponding":[133,251],"checkers":[134],"them.":[137],"Our":[138],"evaluation":[139],"applies":[140],"DyLin":[141,272],"37":[143],"open-source":[145],"projects":[147],"on":[148,207,244,284],"GitHub":[149],"dataset":[153],"submitted":[156],"Kaggle":[158],"machine":[159,229],"learning":[160,230],"competitions,":[161],"totaling":[162],"over":[163],"683k":[164],"lines":[165],"code.":[168],"The":[169,190],"reports":[171],"total":[173],"68":[175],"problems,":[176],"48":[177],"which":[179],"previously":[181],"unknown":[182],"true":[183],"positives,":[184],"i.e.,":[185],"precision":[187],"70.6%.":[189],"detected":[191],"problems":[192,278],"include":[193],"bugs":[194],"cause":[196],"incorrect":[197,202],"values,":[198],"such":[199],"inf,":[201],"behavior,":[203],"e.g.,":[204],"missing":[205],"out":[206],"relevant":[208],"events,":[209],"unnecessary":[210],"computations":[211],"slow":[213],"down":[214],"program,":[216],"unintended":[218],"data":[219,223],"leakage":[220],"from":[221],"test":[222],"training":[226],"phase":[227],"pipelines.":[231],"These":[232],"issues":[233,289,294],"remained":[234],"unnoticed":[235],"public":[237],"repositories":[238],"more":[240],"than":[241],"3.5":[242],"years,":[243],"average,":[245],"despite":[246],"fact":[248],"been":[254,298],"exercised":[255],"developer-written":[258],"tests.":[259],"comparison":[261],"type":[268],"checker":[269],"shows":[270],"complements":[273],"these":[274],"tools":[275],"detecting":[277],"missed":[281],"statically.":[282],"Based":[283],"our":[285],"reporting":[286],"42":[288],"developers,":[292],"31":[293],"so":[296],"far":[297],"fixed.":[299]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":1}],"updated_date":"2026-07-18T07:39:51.176621","created_date":"2025-10-10T00:00:00"}
