{"id":"https://openalex.org/W4399631545","doi":"https://doi.org/10.1145/3643916.3644439","title":"TerraMetrics: An Open Source Tool for Infrastructure-as-Code (IaC) Quality Metrics in Terraform","display_name":"TerraMetrics: An Open Source Tool for Infrastructure-as-Code (IaC) Quality Metrics in Terraform","publication_year":2024,"publication_date":"2024-04-15","ids":{"openalex":"https://openalex.org/W4399631545","doi":"https://doi.org/10.1145/3643916.3644439"},"language":"en","primary_location":{"id":"doi:10.1145/3643916.3644439","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3643916.3644439","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3643916.3644439","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 32nd IEEE/ACM International Conference on Program Comprehension","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3643916.3644439","any_repository_has_fulltext":null},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5093221251","display_name":"Mahi Begoug","orcid":"https://orcid.org/0009-0007-5914-9968"},"institutions":[{"id":"https://openalex.org/I9736820","display_name":"\u00c9cole de Technologie Sup\u00e9rieure","ror":"https://ror.org/0020snb74","country_code":"CA","type":"education","lineage":["https://openalex.org/I49663120","https://openalex.org/I9736820"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Mahi Begoug","raw_affiliation_strings":["Ecole de technologie superieure (ETS), Montreal, Canada"],"raw_orcid":"https://orcid.org/0009-0007-5914-9968","affiliations":[{"raw_affiliation_string":"Ecole de technologie superieure (ETS), Montreal, Canada","institution_ids":["https://openalex.org/I9736820"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5081978873","display_name":"Moataz Chouchen","orcid":"https://orcid.org/0000-0002-1134-1324"},"institutions":[{"id":"https://openalex.org/I9736820","display_name":"\u00c9cole de Technologie Sup\u00e9rieure","ror":"https://ror.org/0020snb74","country_code":"CA","type":"education","lineage":["https://openalex.org/I49663120","https://openalex.org/I9736820"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Moataz Chouchen","raw_affiliation_strings":["Ecole de Technologie Superieure (ETS), Montreal, Canada"],"raw_orcid":"https://orcid.org/0000-0002-1134-1324","affiliations":[{"raw_affiliation_string":"Ecole de Technologie Superieure (ETS), Montreal, Canada","institution_ids":["https://openalex.org/I9736820"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5090942200","display_name":"Ali Ouni","orcid":"https://orcid.org/0000-0003-4708-0362"},"institutions":[{"id":"https://openalex.org/I9736820","display_name":"\u00c9cole de Technologie Sup\u00e9rieure","ror":"https://ror.org/0020snb74","country_code":"CA","type":"education","lineage":["https://openalex.org/I49663120","https://openalex.org/I9736820"]}],"countries":["CA"],"is_corresponding":false,"raw_author_name":"Ali Ouni","raw_affiliation_strings":["Ecole de Technologie Superieure (ETS), Montreal, Canada"],"raw_orcid":"https://orcid.org/0000-0003-4708-0362","affiliations":[{"raw_affiliation_string":"Ecole de Technologie Superieure (ETS), Montreal, Canada","institution_ids":["https://openalex.org/I9736820"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I9736820"],"apc_list":null,"apc_paid":null,"fwci":null,"has_fulltext":true,"cited_by_count":6,"citation_normalized_percentile":null,"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"450","last_page":"454"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9998000264167786,"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"}},"topics":[{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9998000264167786,"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/T12127","display_name":"Software System Performance and Reliability","score":0.9994999766349792,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"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.9965999722480774,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/devops","display_name":"DevOps","score":0.881602942943573},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8437337875366211},{"id":"https://openalex.org/keywords/source-code","display_name":"Source code","score":0.5839136838912964},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.5578678846359253},{"id":"https://openalex.org/keywords/json","display_name":"JSON","score":0.5332927703857422},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.4839768409729004},{"id":"https://openalex.org/keywords/quality-assurance","display_name":"Quality assurance","score":0.48260557651519775},{"id":"https://openalex.org/keywords/software-quality","display_name":"Software quality","score":0.47797343134880066},{"id":"https://openalex.org/keywords/javascript","display_name":"JavaScript","score":0.4679113030433655},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.46027374267578125},{"id":"https://openalex.org/keywords/abstract-syntax-tree","display_name":"Abstract syntax tree","score":0.4309570789337158},{"id":"https://openalex.org/keywords/interpreter","display_name":"Interpreter","score":0.4297364354133606},{"id":"https://openalex.org/keywords/quality","display_name":"Quality (philosophy)","score":0.42559289932250977},{"id":"https://openalex.org/keywords/metric","display_name":"Metric (unit)","score":0.4254709482192993},{"id":"https://openalex.org/keywords/software-quality-assurance","display_name":"Software quality assurance","score":0.41774463653564453},{"id":"https://openalex.org/keywords/software-deployment","display_name":"Software deployment","score":0.4164651930332184},{"id":"https://openalex.org/keywords/parsing","display_name":"Parsing","score":0.38618773221969604},{"id":"https://openalex.org/keywords/world-wide-web","display_name":"World Wide Web","score":0.3418129086494446},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.312943696975708},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.2988949418067932},{"id":"https://openalex.org/keywords/software-development","display_name":"Software development","score":0.2960990071296692},{"id":"https://openalex.org/keywords/service","display_name":"Service (business)","score":0.10928380489349365},{"id":"https://openalex.org/keywords/engineering","display_name":"Engineering","score":0.09045776724815369}],"concepts":[{"id":"https://openalex.org/C9903902","wikidata":"https://www.wikidata.org/wiki/Q3025536","display_name":"DevOps","level":3,"score":0.881602942943573},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8437337875366211},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.5839136838912964},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.5578678846359253},{"id":"https://openalex.org/C2780416260","wikidata":"https://www.wikidata.org/wiki/Q2063","display_name":"JSON","level":2,"score":0.5332927703857422},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.4839768409729004},{"id":"https://openalex.org/C106436119","wikidata":"https://www.wikidata.org/wiki/Q836575","display_name":"Quality assurance","level":3,"score":0.48260557651519775},{"id":"https://openalex.org/C117447612","wikidata":"https://www.wikidata.org/wiki/Q1412670","display_name":"Software quality","level":4,"score":0.47797343134880066},{"id":"https://openalex.org/C544833334","wikidata":"https://www.wikidata.org/wiki/Q2005","display_name":"JavaScript","level":2,"score":0.4679113030433655},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.46027374267578125},{"id":"https://openalex.org/C58646249","wikidata":"https://www.wikidata.org/wiki/Q127380","display_name":"Abstract syntax tree","level":3,"score":0.4309570789337158},{"id":"https://openalex.org/C122783720","wikidata":"https://www.wikidata.org/wiki/Q183065","display_name":"Interpreter","level":2,"score":0.4297364354133606},{"id":"https://openalex.org/C2779530757","wikidata":"https://www.wikidata.org/wiki/Q1207505","display_name":"Quality (philosophy)","level":2,"score":0.42559289932250977},{"id":"https://openalex.org/C176217482","wikidata":"https://www.wikidata.org/wiki/Q860554","display_name":"Metric (unit)","level":2,"score":0.4254709482192993},{"id":"https://openalex.org/C2776969324","wikidata":"https://www.wikidata.org/wiki/Q613918","display_name":"Software quality assurance","level":5,"score":0.41774463653564453},{"id":"https://openalex.org/C105339364","wikidata":"https://www.wikidata.org/wiki/Q2297740","display_name":"Software deployment","level":2,"score":0.4164651930332184},{"id":"https://openalex.org/C186644900","wikidata":"https://www.wikidata.org/wiki/Q194152","display_name":"Parsing","level":2,"score":0.38618773221969604},{"id":"https://openalex.org/C136764020","wikidata":"https://www.wikidata.org/wiki/Q466","display_name":"World Wide Web","level":1,"score":0.3418129086494446},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.312943696975708},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.2988949418067932},{"id":"https://openalex.org/C529173508","wikidata":"https://www.wikidata.org/wiki/Q638608","display_name":"Software development","level":3,"score":0.2960990071296692},{"id":"https://openalex.org/C2780378061","wikidata":"https://www.wikidata.org/wiki/Q25351891","display_name":"Service (business)","level":2,"score":0.10928380489349365},{"id":"https://openalex.org/C127413603","wikidata":"https://www.wikidata.org/wiki/Q11023","display_name":"Engineering","level":0,"score":0.09045776724815369},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0},{"id":"https://openalex.org/C111472728","wikidata":"https://www.wikidata.org/wiki/Q9471","display_name":"Epistemology","level":1,"score":0.0},{"id":"https://openalex.org/C136264566","wikidata":"https://www.wikidata.org/wiki/Q159810","display_name":"Economy","level":1,"score":0.0},{"id":"https://openalex.org/C21547014","wikidata":"https://www.wikidata.org/wiki/Q1423657","display_name":"Operations management","level":1,"score":0.0},{"id":"https://openalex.org/C162324750","wikidata":"https://www.wikidata.org/wiki/Q8134","display_name":"Economics","level":0,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3643916.3644439","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3643916.3644439","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3643916.3644439","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 32nd IEEE/ACM International Conference on Program Comprehension","raw_type":"proceedings-article"},{"id":"pmh:oai:espace2.etsmtl.ca:29038","is_oa":false,"landing_page_url":"https://espace2.etsmtl.ca/id/eprint/29038/","pdf_url":null,"source":{"id":"https://openalex.org/S4306402392","display_name":"Espace \u00c9TS (ETS)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1341030882","host_organization_name":"Educational Testing Service","host_organization_lineage":["https://openalex.org/I1341030882"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Compte rendu de conf\u00e9rence"}],"best_oa_location":{"id":"doi:10.1145/3643916.3644439","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3643916.3644439","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3643916.3644439","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 32nd IEEE/ACM International Conference on Program Comprehension","raw_type":"proceedings-article"},"sustainable_development_goals":[{"score":0.6499999761581421,"display_name":"Industry, innovation and infrastructure","id":"https://metadata.un.org/sdg/9"}],"awards":[],"funders":[{"id":"https://openalex.org/F4320334593","display_name":"Natural Sciences and Engineering Research Council of Canada","ror":"https://ror.org/01h531d29"}],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W4399631545.pdf","grobid_xml":"https://content.openalex.org/works/W4399631545.grobid-xml"},"referenced_works_count":10,"referenced_works":["https://openalex.org/W2402800985","https://openalex.org/W3041762618","https://openalex.org/W3106077701","https://openalex.org/W3109430751","https://openalex.org/W3123074563","https://openalex.org/W3154463436","https://openalex.org/W4252974250","https://openalex.org/W4384009698","https://openalex.org/W4386214431","https://openalex.org/W4388706046"],"related_works":["https://openalex.org/W2753132265","https://openalex.org/W4234766820","https://openalex.org/W4321232174","https://openalex.org/W4250821095","https://openalex.org/W4301217393","https://openalex.org/W2922064259","https://openalex.org/W3007497615","https://openalex.org/W3117929012","https://openalex.org/W2998205945","https://openalex.org/W3128187337"],"abstract_inverted_index":{"Infrastructure-as-Code":[0],"(IaC)":[1],"constitutes":[2],"a":[3,30,72,103,123,139,181],"pivotal":[4],"DevOps":[5,67],"methodology,":[6],"leading":[7],"edge":[8],"of":[9,29,98,105],"software":[10,31,54],"deployment":[11],"onto":[12],"cloud":[13],"platforms.":[14],"IaC":[15,35,50],"relies":[16],"on":[17,83],"source":[18],"code":[19,143],"files":[20,57],"rather":[21],"than":[22],"manual":[23],"configuration":[24,40],"to":[25,76,94,117,128,154],"manage":[26],"the":[27,96,111,119,151,156,163],"infrastructure":[28],"system.":[32],"Terraform,":[33],"an":[34,90,145,176],"tool":[36,75,92,133,171],"and":[37,64,158],"its":[38],"declarative":[39],"language":[41],"named":[42],"HCL,":[43],"has":[44],"recently":[45],"garnered":[46],"considerable":[47],"attention":[48],"among":[49],"practitioners.":[51],"Like":[52],"other":[53],"artefacts,":[55],"Terraform":[56,99,112],"could":[58],"be":[59],"affected":[60],"by":[61,101],"misconfigurations,":[62],"faults,":[63],"smells.":[65],"Therefore,":[66],"practitioners":[68],"might":[69],"benefit":[70],"from":[71],"quality":[73,80,97,107],"assurance":[74,81],"help":[77],"them":[78],"perform":[79],"activities":[82],"Terrafrom":[84],"artefacts.":[85],"This":[86,132],"paper":[87],"introduces":[88],"TerraMetrics,":[89],"open-source":[91],"designed":[93],"characterize":[95],"artefacts":[100],"providing":[102],"catalogue":[104],"40":[106],"metrics.":[108],"TerraMetrics":[109,170],"leverages":[110],"Abstract":[113],"Syntax":[114],"Tree":[115],"(AST)":[116],"extract":[118,155],"metric":[120],"list,":[121],"offering":[122],"potentially":[124],"enduring":[125],"solution":[126],"compared":[127],"conventional":[129],"regular":[130],"expressions.":[131],"comprises":[134],"three":[135],"main":[136],"components:":[137],"(i)":[138],"parser":[140],"transforming":[141],"HCL":[142],"into":[144],"AST,":[146],"(ii)":[147],"visitors":[148],"that":[149],"traverse":[150],"AST":[152],"nodes":[153],"metrics,":[157],"(iii)":[159],"collectors":[160],"for":[161],"storing":[162],"collected":[164],"metrics":[165],"in":[166],"JSON":[167],"format.":[168],"The":[169],"is":[172],"publicly":[173],"available":[174],"as":[175],"Open":[177],"Source":[178],"tool,":[179],"with":[180],"demo":[182],"video,":[183],"at:":[184],"https://github.com/stilab-ets/terametrics.":[185]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":3},{"year":2024,"cited_by_count":2}],"updated_date":"2026-07-14T23:27:15.235271","created_date":"2025-10-10T00:00:00"}
