ArchLintor: detecting architectural violations in TypeScript systems

  • Matheus Resende UFAL
  • Rafael Durelli UFAL
  • Ricardo Terra UFAL

Resumo


Maintaining architectural integrity is challenging in fast-paced development environments, especially in TypeScript systems where architectural analysis is hindered by language complexity. This paper introduces ArchLintor, a static analysis tool for architecture conformance checking in TypeScript projects. By allowing architects to define rules over module interactions, ArchLintor detects architectural violations, classifies them (e.g., divergences, absences, alerts), and produces detailed reports and visualizations through graphs and dependency structure matrices (DSM). The tool supports CI/CD integration, serving as a quality gate to prevent architectural erosion before code is merged. Entirely built from scratch using widely adopted JavaScript ecosystem tools, ArchLintor offers developers a practical solution to monitor and enforce architectural rules continuously. Demo video: https://doi.org/10.6084/m9.figshare.29123549

Palavras-chave: Architecture conformance checking, TypeScript, Static Analysis

Referências

2020. Visualises JavaScript, TypeScript and Flow codebases as meaningful and committable architecture diagrams. [link]

2021. What is the Language Server Protocol? [link]

2022. Introduzindo JSX. [link]

2022. Langserver.org: A community-driven source of knowledge for Language Server Protocol implementations. [link]

2022. Modules. [link]

2022. Prettier: Code style options. [link]

2022. Source code hierarchy. [link]

2022. Using the compiler API. [link]

2022. What is DevOps? [link]

2022. Yargs. [link]

2023. Clean code for teams and enterprises with SonarQube. [link]

2023. Find and fix problems in your JavaScript code. [link]

2023. Flow for VSCode. [link]

2023. Prettier code formatting. [link]

2023. Quick Lint JS. [link]

2023. Tplant. [link]

2023. TypeScript Language Server. [link]

2024. GraphViz. [link]

David Binkley. 2007. Source Code Analysis: A Road Map. In 2007 Future of Software Engineering (FOSE). 104–119.

Bill Brykczynski, Reginald Meeson, and David A Wheeler. 1994. Software inspection: Eliminating software defects. Institute for Defense Analyses, Alexandria.

Eduardo F de Lima and Ricardo Terra. 2020. ArchPython: architecture conformance checking for Python systems. In 34th Brazilian Symposium on Software Engineering (SBES). 772–777.

JohnWEssam and Michael E Fisher. 1970. Some basic definitions in graph theory. Reviews of Modern Physics 42, 2 (1970), 271.

Martin Fowler and Matthew Foemmel. 2006. Continuous integration. [link]

Wallace Jackson. 2016. JSON quick syntax reference. Apress.

Ruiyin Li, Peng Liang, Mohamed Soliman, and Paris Avgeriou. 2022. Understanding Software Architecture Erosion: A Systematic Mapping Study. Journal of Software: Evolution and Process 34 (2022), e2423.

Sergio Miranda, Marco Tulio Valente, and Ricardo Terra. 2015. ArchRuby: Conformidade e Visualização Arquitetural em Linguagens Dinâmicas. In VI Brazilian Conference on Software: Theory and Practice (CBSoft), Tools Session. 17–24.

Gail Murphy, David Notkin, and Kevin Sullivan. 1995. Software Reflexion Models: Bridging the Gap Between Source and High-Level Models. In 3rd Symposium on Foundations of Software Engineering (FSE). 18–28.

Dewayne E. Perry and Alexander L. Wolf. 1992. Foundations for the Study of Software Architecture. Software Engineering Notes 17, 4 (1992), 40–52.

S Shylesh. 2017. A study of software development life cycle process models. 14th National Conference on Reinventing Opportunities in Management, IT, and Social Sciences (MANEGMA), 534–541.

Kevin J. Sullivan, William G. Griswold, Yuanfang Cai, and Ben Hallen. 2001. The Structure and Value of Modularity in Software Design. Software Engineering Notes 26, 5 (2001), 99–108.

Ricardo Terra and Marco Tulio Valente. 2008. Towards a Dependency Constraint Language to Manage Software Architectures. In 2nd European Conference on Software Architecture (ECSA). 256–263.

Ricardo Terra, Marco Tulio Valente, and Luis Fernando Miranda. 2012. Conformação Arquitetural com DCLcheck. MundoJ X, 55 (2012), 44–49.

Carlo Zaponi. 2022. GitHut 2.0. GitHub. [link]
Publicado
22/09/2025
RESENDE, Matheus; DURELLI, Rafael; TERRA, Ricardo. ArchLintor: detecting architectural violations in TypeScript systems. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 39. , 2025, Recife/PE. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2025 . p. 900-906. ISSN 2833-0633. DOI: https://doi.org/10.5753/sbes.2025.11075.