Visually Analyzing the Structure and Code Quality of Component-based Web Applications

Monitoring code quality and dependencies is an important task to keep software maintainable. While generally well researched, only little work on visually analyzing code quality of component-based front-end web applications exists that considers the specifics of such software systems. We propose an approach to visualize dependencies and code quality metrics of component-based JavaScript React applications. Our prototype implementation uses a node-link diagram for dependency visualization, tailored to the specific component structure of React applications and enriched with various visual cues. It is linked with different panels to show code quality and exact source code locations. Recommendations on how the quality of the system under analysis can be improved and refactored are provided. We evaluated our prototype in a small user study with four participants and found that it helped in program comprehension tasks and finding refactoring opportunities.

[1]  Fabian Beck,et al.  Computer-Aided Extraction of Software Components , 2010, 2010 17th Working Conference on Reverse Engineering.

[2]  Kim Marriott,et al.  IPSep-CoLa: An Incremental Procedure for Separation Constraint Layout of Graphs , 2006, IEEE Transactions on Visualization and Computer Graphics.

[3]  Feza Buzluca,et al.  E-Quality: A graph based object oriented software quality visualization tool , 2011, 2011 6th International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT).

[4]  Alexandre Bergel,et al.  Evaluating a Visual Approach for Understanding JavaScript Source Code , 2020, 2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC).

[5]  Fabian Beck,et al.  Visualizing Evolution and Performance Metrics on Method-Level as Multivariate Data , 2020, SATToSE.

[6]  Jean-Loup Guillaume,et al.  Fast unfolding of communities in large networks , 2008, 0803.0476.

[7]  Amin Milani Fard,et al.  JSNOSE: Detecting JavaScript Code Smells , 2013, 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[8]  Fabian Beck,et al.  Exploranative Code Quality Documents , 2019, IEEE Transactions on Visualization and Computer Graphics.

[9]  Andrew P. Black,et al.  An interactive ambient visualization for code smells , 2010, SOFTVIS '10.

[10]  Rabe Abdalkareem,et al.  Dependency Smells in JavaScript Projects , 2020, IEEE Transactions on Software Engineering.

[11]  Ivan Beschastnikh,et al.  Refactoring Asynchrony in JavaScript , 2017, 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[12]  Frank Tip,et al.  Tool-supported refactoring for JavaScript , 2011, OOPSLA '11.

[13]  Anders Møller,et al.  Semi-automatic rename refactoring for JavaScript , 2013, OOPSLA.

[14]  Leon Moonen,et al.  Java quality assurance by detecting code smells , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[15]  Doreen Seider,et al.  Visualizing Modules and Dependencies of OSGi-Based Applications , 2016, 2016 IEEE Working Conference on Software Visualization (VISSOFT).