\n \n \n
\n
\n\n \n \n Mazinanian, D.; and Tsantalis, N.\n\n\n \n \n \n \n \n Migrating Cascading Style Sheets to Preprocessors by Introducing Mixins.\n \n \n \n \n\n\n \n\n\n\n In
Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, pages 672–683, New York, NY, USA, 2016. ACM\n
\n\n
Invited to Special Issue of the Automated Software Engineering Journal\n\n
\n\n
\n\n \n \n paper\n \n \n \n link\n \n \n\n \n \n doi\n \n \n\n \n link\n \n \n\n bibtex\n \n\n \n \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n
\n
@inproceedings{Mazinanian:ASE:2016,\r\n\tauthor = {Mazinanian, Davood and Tsantalis, Nikolaos},\r\n\ttitle = {Migrating Cascading Style Sheets to Preprocessors by Introducing Mixins},\r\n\tbooktitle = {Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering},\r\n\t--series = {ASE 2016},\r\n\tyear = {2016},\r\n\tisbn = {978-1-4503-3845-5},\r\n\tlocation = {Singapore, Singapore},\r\n\tpages = {672--683},\r\n\tnumpages = {12},\r\n\t--url = {http://doi.acm.org/10.1145/2970276.2970348},\r\n\tdoi = {10.1145/2970276.2970348},\r\n\tacmid = {2970348},\r\n\tpublisher = {ACM},\r\n\taddress = {New York, NY, USA},\r\n\tkeywords = {Cascading style sheets, duplication, migration, refactoring},\r\n\turl_Paper = {https://users.encs.concordia.ca/~nikolaos/publications/ASE_2016.pdf},\r\n\turl_link = {http://dmazinanian.me/publications/ASE'16/},\r\n\tabstract = {Cascading Style Sheets (CSS) is the standard language for styling web documents and is extensively used in the industry. However, CSS lacks constructs that would allow code reuse (e.g., functions). Consequently, maintaining CSS code is often a cumbersome and error-prone task. Preprocessors (e.g., Less and Sass) have been introduced to fill this gap, by extending CSS with the missing constructs. Despite the clear maintainability benefits coming from the use of prepro-cessors, there is currently no support for migrating legacy CSS code to preprocessors. In this paper, we propose a technique for automatically detecting duplicated style declarations in CSS code that can be migrated to preproces-sor functions (i.e., mixins). Our technique can parameter-ize differences in the style values of duplicated declarations, and ensure that the migration will not change the presentation semantics of the web documents. The evaluation has shown that our technique is able to detect 98% of the mix-ins that professional developers introduced in websites and Style Sheet libraries, and can safely migrate real CSS code.},\r\n\tbibbase_note = {<span style="color: blue"><strong>Invited to Special Issue of the Automated Software Engineering Journal</strong></span>},\r\n}\r\n\r\n
\n
\n\n\n
\n Cascading Style Sheets (CSS) is the standard language for styling web documents and is extensively used in the industry. However, CSS lacks constructs that would allow code reuse (e.g., functions). Consequently, maintaining CSS code is often a cumbersome and error-prone task. Preprocessors (e.g., Less and Sass) have been introduced to fill this gap, by extending CSS with the missing constructs. Despite the clear maintainability benefits coming from the use of prepro-cessors, there is currently no support for migrating legacy CSS code to preprocessors. In this paper, we propose a technique for automatically detecting duplicated style declarations in CSS code that can be migrated to preproces-sor functions (i.e., mixins). Our technique can parameter-ize differences in the style values of duplicated declarations, and ensure that the migration will not change the presentation semantics of the web documents. The evaluation has shown that our technique is able to detect 98% of the mix-ins that professional developers introduced in websites and Style Sheet libraries, and can safely migrate real CSS code.\n
\n\n\n
\n\n\n
\n
\n\n \n \n Silva, D.; Tsantalis, N.; and Valente, M. T.\n\n\n \n \n \n \n \n Why We Refactor? Confessions of GitHub Contributors.\n \n \n \n \n\n\n \n\n\n\n In
Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 858–870, New York, NY, USA, 2016. ACM\n
\n\n
ACM SIGSOFT Distinguished Paper Award and ACM SIGSOFT Distinguished Artifact Award\n\n
\n\n
\n\n \n \n paper\n \n \n \n link\n \n \n\n \n \n doi\n \n \n\n \n link\n \n \n\n bibtex\n \n\n \n \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n
\n
@inproceedings{Silva:FSE:2016,\r\n\tauthor = {Silva, Danilo and Tsantalis, Nikolaos and Valente, Marco Tulio},\r\n\ttitle = {Why We Refactor? Confessions of GitHub Contributors},\r\n\tbooktitle = {Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering},\r\n\t--series = {FSE 2016},\r\n\tyear = {2016},\r\n\tisbn = {978-1-4503-4218-6},\r\n\tlocation = {Seattle, WA, USA},\r\n\tpages = {858--870},\r\n\tnumpages = {13},\r\n\t--url = {http://doi.acm.org/10.1145/2950290.2950305},\r\n\tdoi = {10.1145/2950290.2950305},\r\n\tacmid = {2950305},\r\n\tpublisher = {ACM},\r\n\taddress = {New York, NY, USA},\r\n\tkeywords = {GitHub, Refactoring, code smells, software evolution},\r\n\turl_Paper = {https://users.encs.concordia.ca/~nikolaos/publications/FSE_2016.pdf},\r\n\turl_Link = {http://aserg-ufmg.github.io/why-we-refactor},\r\n\tbibbase_note = {<span style="color: blue"><strong>ACM SIGSOFT Distinguished Paper Award</strong></span> and <span style="color: blue"><strong>ACM SIGSOFT Distinguished Artifact Award</strong></span>},\r\n\tabstract = {Refactoring is a widespread practice that helps developers to improve the maintainability and readability of their code. However, there is a limited number of studies empirically investigating the actual motivations behind specific refactoring operations applied by developers. To fill this gap, we monitored Java projects hosted on GitHub to detect recently applied refactorings, and asked the developers to explain the reasons behind their decision to refactor the code. By applying thematic analysis on the collected responses, we compiled a catalogue of 44 distinct motivations for 12 well-known refactoring types. We found that refactoring activity is mainly driven by changes in the requirements and much less by code smells. Extract Method is the most versatile refactoring operation serving 11 different purposes. Finally, we found evidence that the IDE used by the developers affects the adoption of automated refactoring tools.},\r\n}\r\n\r\n
\n
\n\n\n
\n Refactoring is a widespread practice that helps developers to improve the maintainability and readability of their code. However, there is a limited number of studies empirically investigating the actual motivations behind specific refactoring operations applied by developers. To fill this gap, we monitored Java projects hosted on GitHub to detect recently applied refactorings, and asked the developers to explain the reasons behind their decision to refactor the code. By applying thematic analysis on the collected responses, we compiled a catalogue of 44 distinct motivations for 12 well-known refactoring types. We found that refactoring activity is mainly driven by changes in the requirements and much less by code smells. Extract Method is the most versatile refactoring operation serving 11 different purposes. Finally, we found evidence that the IDE used by the developers affects the adoption of automated refactoring tools.\n
\n\n\n
\n\n\n
\n
\n\n \n \n Mazinanian, D.; and Tsantalis, N.\n\n\n \n \n \n \n \n An empirical study on the use of CSS preprocessors.\n \n \n \n \n\n\n \n\n\n\n In
Proceedings of the 23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering, pages 168–178, 2016. \n
\n\n
Best Paper Candidate Award\n\n
\n\n
\n\n \n \n paper\n \n \n \n slides\n \n \n\n \n \n doi\n \n \n\n \n link\n \n \n\n bibtex\n \n\n \n \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n\n\n\n
\n
@inproceedings{Mazinanian:SANER:2016,\r\n\tauthor = {Mazinanian, Davood and Tsantalis, Nikolaos},\r\n\ttitle = {An empirical study on the use of CSS preprocessors},\r\n\tbooktitle = {Proceedings of the 23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering},\r\n\t--series = {SANER '16},\r\n\tyear = {2016},\r\n\tlocation = {Osaka, Japan},\r\n\tpages = {168--178},\r\n\tnumpages = {11},\r\n\t--url = {http://dx.doi.org/10.1109/SANER.2016.18},\r\n\tdoi = {10.1109/SANER.2016.18},\r\n\turl_Paper = {https://users.encs.concordia.ca/~nikolaos/publications/SANER_2016.pdf},\r\n\turl_Slides = {http://www.slideshare.net/tsantalis/an-empirical-study-on-the-use-of-css-preprocessors},\r\n\tbibbase_note = {<span style="color: blue"><strong>Best Paper Candidate Award</strong></span>},\r\n\tabstract = {Cascading Style Sheets (CSS) is the standard language for styling structured documents, such as HTML. However, CSS lacks most of the traditional programming constructs, including variables and functions, which enable code reuse and structured programming. Alternatively, CSS Preprocessors (e.g., LESS, SASS) have been introduced as superset languages to extend CSS by supporting those missing constructs. While these languages are being widely used by developers, we do not have sufficient knowledge about how developers take advantage of the features they provide. Gaining this knowledge is crucial for providing better tool support to the developer community by devising techniques for the automatic migration of existing CSS code to take advantage of CSS Preprocessor language features, designing refactoring recommendation systems for existing Preprocessor code, and giving insights to the Preprocessor language designers for improving language usability. In this paper, we have empirically investigated the CSS Preprocessor codebase of 150 websites regarding four preprocessor features, namely variables, nested selectors, mixins and extend constructs, and report the discovered usage patterns for each feature. We also discuss how the gained knowledge can be put into practice towards improving the development and maintenance of CSS preprocessor code.},\r\n}\r\n\r\n
\n
\n\n\n
\n Cascading Style Sheets (CSS) is the standard language for styling structured documents, such as HTML. However, CSS lacks most of the traditional programming constructs, including variables and functions, which enable code reuse and structured programming. Alternatively, CSS Preprocessors (e.g., LESS, SASS) have been introduced as superset languages to extend CSS by supporting those missing constructs. While these languages are being widely used by developers, we do not have sufficient knowledge about how developers take advantage of the features they provide. Gaining this knowledge is crucial for providing better tool support to the developer community by devising techniques for the automatic migration of existing CSS code to take advantage of CSS Preprocessor language features, designing refactoring recommendation systems for existing Preprocessor code, and giving insights to the Preprocessor language designers for improving language usability. In this paper, we have empirically investigated the CSS Preprocessor codebase of 150 websites regarding four preprocessor features, namely variables, nested selectors, mixins and extend constructs, and report the discovered usage patterns for each feature. We also discuss how the gained knowledge can be put into practice towards improving the development and maintenance of CSS preprocessor code.\n
\n\n\n
\n\n\n
\n
\n\n \n \n Rostami, S.; Eshkevari, L.; Mazinanian, D.; and Tsantalis, N.\n\n\n \n \n \n \n \n Detecting Function Constructors in JavaScript.\n \n \n \n \n\n\n \n\n\n\n In
Proceedings of the 32nd IEEE International Conference on Software Maintenance and Evolution, pages 488-492, 2016. \n
\n\n
\n\n
\n\n
\n\n \n \n paper\n \n \n \n link\n \n \n\n \n \n doi\n \n \n\n \n link\n \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n\n\n\n
\n
@inproceedings{Rostami:ICSME:2016,\r\n\tauthor = {Rostami, Shahriar and Eshkevari, Laleh and Mazinanian, Davood and Tsantalis, Nikolaos},\r\n\ttitle = {Detecting Function Constructors in JavaScript},\r\n\tbooktitle = {Proceedings of the 32nd IEEE International Conference on Software Maintenance and Evolution},\r\n\t--series = {ICSME '16},\r\n\tyear = {2016},\r\n\tpages = {488-492},\r\n\tdoi = {10.1109/ICSME.2016.29},\r\n\tlocation = {Raleigh, North Carolina, USA},\r\n\turl_Paper ={https://users.encs.concordia.ca/~nikolaos/publications/ICSME_2016.pdf},\r\n\turl_Link = {https://github.com/sshishe/jsdeodorant},\r\n}\r\n\r\n
\n
\n\n\n\n
\n\n\n
\n
\n\n \n \n Mazinanian, D.; Tsantalis, N.; Stein, R.; and Valenta, Z.\n\n\n \n \n \n \n \n JDeodorant: Clone Refactoring.\n \n \n \n \n\n\n \n\n\n\n In
Proceedings of the 38th International Conference on Software Engineering Companion, pages 613–616, New York, NY, USA, 2016. ACM\n
\n\n
\n\n
\n\n
\n\n \n \n paper\n \n \n \n link\n \n \n\n \n \n doi\n \n \n\n \n link\n \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n\n\n
\n
@inproceedings{Mazinanian:2016:JCR:2889160.2889168,\r\n\tauthor = {Mazinanian, Davood and Tsantalis, Nikolaos and Stein, Raphael and Valenta, Zackary},\r\n\ttitle = {JDeodorant: Clone Refactoring},\r\n\tbooktitle = {Proceedings of the 38th International Conference on Software Engineering Companion},\r\n\t--series = {ICSE '16},\r\n\tyear = {2016},\r\n\tisbn = {978-1-4503-4205-6},\r\n\tlocation = {Austin, Texas},\r\n\tpages = {613--616},\r\n\tnumpages = {4},\r\n\t--url = {http://doi.acm.org/10.1145/2889160.2889168},\r\n\tdoi = {10.1145/2889160.2889168},\r\n\tacmid = {2889168},\r\n\tpublisher = {ACM},\r\n\taddress = {New York, NY, USA},\r\n\tkeywords = {code duplication, refactorability analysis, refactoring},\r\n\turl_Paper = {https://users.encs.concordia.ca/~nikolaos/publications/ICSE_2016.pdf},\r\n\turl_Link = {https://www.youtube.com/watch?v=K_xAEqIEJ-4},\r\n}\r\n\r\n
\n
\n\n\n\n
\n\n\n\n\n\n