skip to main content
10.1145/3468264.3468535acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

IDE support for cloud-based static analyses

Published:18 August 2021Publication History

ABSTRACT

Integrating static analyses into continuous integration (CI) or continuous delivery (CD) has become the best practice for assuring code quality and security. Static Application Security Testing (SAST) tools fit well into CI/CD, because CI/CD allows time for deep static analyses on large code bases and prevents vulnerabilities in the early stages of the development lifecycle. In CI/CD, the SAST tools usually run in the cloud and provide findings via a web interface. Recent studies show that developers prefer seeing the findings of these tools directly in their IDEs. Most tools with IDE integration run lightweight static analyses and can give feedback at coding time, but SAST tools used in CI/CD take longer to run and usually are not able to do so. Can developers interact directly with a cloud-based SAST tool that is typically used in CI/CD through their IDE? We investigated if such a mechanism can integrate cloud-based SAST tools better into a developers’ workflow than web-based solutions. We interviewed developers to understand their expectations from an IDE solution. Guided by these interviews, we implemented an IDE prototype for an existing cloud-based SAST tool. With a usability test using this prototype, we found that the IDE solution promoted more frequent tool interactions. In particular, developers performed code scans three times more often. This indicates better integration of the cloud-based SAST tool into developers’ workflow. Furthermore, while our study did not show statistically significant improvement on developers’ code-fixing performance, it did show a promising reduction in time for fixing vulnerable code.

References

  1. Atlassian. 2021. Gitflow Workflow. https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflowGoogle ScholarGoogle Scholar
  2. AWS. 2019. CodeGuru Reviewer. https://aws.amazon.com/codeguruGoogle ScholarGoogle Scholar
  3. Moritz Beller, Radjino Bholanath, Shane McIntosh, and Andy Zaidman. 2016. Analyzing the State of Static Analysis: A Large-Scale Evaluation in Open Source Software. In IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering, SANER 2016, Suita, Osaka, Japan, March 14-18, 2016 - Volume 1. IEEE Computer Society, 470–481. https://doi.org/10.1109/SANER.2016.105 Google ScholarGoogle ScholarCross RefCross Ref
  4. Claude Bolduc. 2016. Lessons learned: Using a static analysis tool within a continuous integration system. In 2016 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW). 37–40. https://doi.org/10.1109/ISSREW.2016.48 Google ScholarGoogle ScholarCross RefCross Ref
  5. John Brooke. 1996. SUS: A ’Quick and Dirty’ Usability Scale. Usability Evaluation In Industry, 189 (1996), https://doi.org/10.1201/9781498710411-35 Google ScholarGoogle ScholarCross RefCross Ref
  6. Gary Charness, Uri Gneezy, and Michael A Kuhn. 2012. Experimental methods: Between-subject and within-subject design. Journal of Economic Behavior & Organization, 81, 1 (2012), 1–8. https://doi.org/10.1016/j.jebo.2011.08.009 Google ScholarGoogle ScholarCross RefCross Ref
  7. Checkmarx. 2021. Checkmarx. https://www.checkmarx.comGoogle ScholarGoogle Scholar
  8. Maria Christakis and Christian Bird. 2016. What Developers Want and Need from Program Analysis: An Empirical Study. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE 2016). Association for Computing Machinery, New York, NY, USA. 332–343. isbn:9781450338455 https://doi.org/10.1145/2970276.2970347 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Dino Distefano, Manuel Fähndrich, Francesco Logozzo, and Peter W. O’Hearn. 2019. Scaling Static Analyses at Facebook. Commun. ACM, 62, 8 (2019), July, 62–70. issn:0001-0782 https://doi.org/10.1145/3338112 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Lisa Nguyen Quang Do, James Wright, and Karim Ali. 2020. Why do software developers use static analysis tools? a user-centered study of developer needs and motivations. IEEE Transactions on Software Engineering, https://doi.org/10.1109/TSE.2020.3004525 Google ScholarGoogle ScholarCross RefCross Ref
  11. Jennifer Fereday and Eimear Muir-Cochrane. 2006. Demonstrating Rigor Using Thematic Analysis: A Hybrid Approach of Inductive and Deductive Coding and Theme Development. International Journal of Qualitative Methods, 5, 1 (2006), 80–92. https://doi.org/10.1177/160940690600500107 arxiv:https://doi.org/10.1177/160940690600500107. Google ScholarGoogle ScholarCross RefCross Ref
  12. GitHub. 2021. LGTM. https://lgtm.comGoogle ScholarGoogle Scholar
  13. Barney G Glaser, Anselm L Strauss, and Elizabeth Strutzel. 1968. The discovery of grounded theory; strategies for qualitative research. Nursing research, 17, 4 (1968), 364. https://doi.org/10.1177/003803856900300233 Google ScholarGoogle ScholarCross RefCross Ref
  14. Greg Guest, Arwen Bunce, and Laura Johnson. 2006. How many interviews are enough? An experiment with data saturation and variability. Field methods, 18, 1 (2006), 59–82. https://doi.org/10.1177/1525822X05279903 Google ScholarGoogle ScholarCross RefCross Ref
  15. Nasif Imtiaz, Brendan Murphy, and Laurie Williams. 2019. How do developers act on static analysis alerts? an empirical study of coverity usage. In 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE). 323–333. https://doi.org/10.1109/ISSRE.2019.00040 Google ScholarGoogle ScholarCross RefCross Ref
  16. Brittany Johnson, Yoonki Song, Emerson R. Murphy-Hill, and Robert W. Bowdidge. 2013. Why don’t software developers use static analysis tools to find bugs? In 35th International Conference on Software Engineering, ICSE ’13, San Francisco, CA, USA, May 18-26, 2013, David Notkin, Betty H. C. Cheng, and Klaus Pohl (Eds.). IEEE Computer Society, 672–681. https://doi.org/10.1109/ICSE.2013.6606613 Google ScholarGoogle ScholarCross RefCross Ref
  17. Rahul Kumar, Chetan Bansal, and Jakob Lichtenberg. 2016. Static Analysis Using the Cloud. Electronic Proceedings in Theoretical Computer Science, 228 (2016), Oct, 2–15. issn:2075-2180 https://doi.org/10.4204/eptcs.228.2 Google ScholarGoogle ScholarCross RefCross Ref
  18. Linghui Luo, Julian Dolby, and Eric Bodden. 2019. MagpieBridge: A General Approach to Integrating Static Analyses into IDEs and Editors (Tool Insights Paper). In 33rd European Conference on Object-Oriented Programming, ECOOP 2019, July 15-19, 2019, London, United Kingdom, Alastair F. Donaldson (Ed.) (LIPIcs, Vol. 134). Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 21:1–21:25. https://doi.org/10.4230/LIPIcs.ECOOP.2019.21 Google ScholarGoogle ScholarCross RefCross Ref
  19. Linghui Luo, Martin Schäf, Daniel Sanchez, and Eric Bodden. 2021. List of codes and their definitions. https://github.com/linghuiluo/FSE21Study/blob/main/ListOfCodes.pdfGoogle ScholarGoogle Scholar
  20. Linghui Luo, Martin Schäf, Daniel Sanchez, and Eric Bodden. 2021. List of questions asked in user interviews. https://github.com/linghuiluo/FSE21Study/blob/main/ListOfInterviewQuestions.pdfGoogle ScholarGoogle Scholar
  21. Linghui Luo, Martin Schäf, Daniel Sanchez, and Eric Bodden. 2021. Questions in the survey. https://github.com/linghuiluo/FSE21Study/blob/main/SurveyQuestions.pdfGoogle ScholarGoogle Scholar
  22. Linghui Luo, Martin Schäf, Daniel Sanchez, and Eric Bodden. 2021. Test applications and issue list. https://github.com/linghuiluo/FSE21Study/tree/main/tasksGoogle ScholarGoogle Scholar
  23. Microsoft. 2021. Language Server Protocol. https://microsoft.github.io/language-server-protocolGoogle ScholarGoogle Scholar
  24. Graeme D Ruxton and Markus Neuhäuser. 2010. When should we use one-tailed hypothesis testing? Methods in Ecology and Evolution, 1, 2 (2010), 114–117. https://doi.org/10.1111/j.2041-210x.2010.00014.x Google ScholarGoogle ScholarCross RefCross Ref
  25. Caitlin Sadowski, Edward Aftandilian, Alex Eagle, Liam Miller-Cushon, and Ciera Jaspan. 2018. Lessons from Building Static Analysis Tools at Google. Commun. ACM, 61, 4 (2018), March, 58–66. issn:0001-0782 https://doi.org/10.1145/3188720 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Douglas Schuler and Aki Namioka. 1993. Participatory design: Principles and practices. CRC Press. https://dl.acm.org/doi/book/10.5555/563076Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Amazon Web Services. 2021. AWS SDK for Java. https://aws.amazon.com/sdk-for-javaGoogle ScholarGoogle Scholar
  28. Amazon Web Services. 2021. Public API of CodeGuru Reviewer. https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/codegurureviewer/package-summary.htmlGoogle ScholarGoogle Scholar
  29. S. S. SHAPIRO and M. B. WILK. 1965. An analysis of variance test for normality (complete samples). Biometrika, 52, 3-4 (1965), dec, 591–611. https://doi.org/10.1093/biomet/52.3-4.591 Google ScholarGoogle ScholarCross RefCross Ref
  30. Daniela Steidl and Sebastian Eder. 2014. Prioritizing maintainability defects based on refactoring recommendations. In 22nd International Conference on Program Comprehension, ICPC 2014, Hyderabad, India, June 2-3, 2014, Chanchal K. Roy, Andrew Begel, and Leon Moonen (Eds.). ACM, 168–176. https://doi.org/10.1145/2597008.2597805 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Synopsys. 2021. Coverity Scan. https://scan.coverity.comGoogle ScholarGoogle Scholar
  32. John C. Tang, Jed R. Brubaker, and Catherine C. Marshall. 2013. What Do You See in the Cloud? Understanding the Cloud-Based User Experience through Practices. In Human-Computer Interaction - INTERACT 2013 - 14th IFIP TC 13 International Conference, Cape Town, South Africa, September 2-6, 2013, Proceedings, Part II, Paula Kotzé, Gary Marsden, Gitte Lindgaard, Janet Wesson, and Marco Winckler (Eds.) (Lecture Notes in Computer Science, Vol. 8118). Springer, 678–695. https://doi.org/10.1007/978-3-642-40480-1_47 Google ScholarGoogle ScholarCross RefCross Ref
  33. Ilkka Uusitalo, Kaarina Karppinen, Arto Juhola, and Reijo Savola. 2010. Trust and cloud services-an interview study. In 2010 IEEE Second International Conference on Cloud Computing Technology and Science. 712–720. https://doi.org/10.1109/CloudCom.2010.41 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Kaisa Väänänen-Vainio-Mattila, Jarmo Palviainen, Santtu Pakarinen, Else Lagerstam, and Eeva Kangas. 2011. User perceptions of Wow experiences and design implications for Cloud services. In Designing Pleasurable Products and Interfaces, DPPI ’11, Milano, Italy, June 22-25, 2011, Alessandro Deserti, Francesco Zurlo, and Francesca Rizzo (Eds.). ACM, 63:1–63:8. https://doi.org/10.1145/2347504.2347573 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Carmine Vassallo, Fabio Palomba, Alberto Bacchelli, and Harald C Gall. 2018. Continuous code quality: are we (really) doing that? In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering. 790–795. https://doi.org/10.1145/3238147.3240729 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. C. Vassallo, S. Panichella, F. Palomba, S. Proksch, A. Zaidman, and H. C. Gall. 2018. Context is king: The developer perspective on the usage of static analysis tools. In 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). 38–49. https://doi.org/10.1109/SANER.2018.8330195 Google ScholarGoogle ScholarCross RefCross Ref
  37. Veracode. 2021. Veracode. https://www.veracode.com/products/binary-static-analysis-sastGoogle ScholarGoogle Scholar
  38. Veracode. 2021. Veracode Static For IDE. https://help.veracode.com/r/api_eclipseGoogle ScholarGoogle Scholar
  39. Lizhe Wang, Jie Tao, Marcel Kunze, Alvaro Canales Castellanos, David Kramer, and Wolfgang Karl. 2008. Scientific Cloud Computing: Early Definition and Experience. In 10th IEEE International Conference on High Performance Computing and Communications, HPCC 2008, 25-27 Sept. 2008, Dalian, China. IEEE Computer Society, 825–830. https://doi.org/10.1109/HPCC.2008.38 Google ScholarGoogle ScholarCross RefCross Ref
  40. R. F. Woolson. 2008. Wilcoxon Signed-Rank Test. American Cancer Society, 1–3. isbn:9780471462422 https://doi.org/10.1002/9780471462422.eoct979 arxiv:https://onlinelibrary.wiley.com/doi/pdf/10.1002/9780471462422.eoct979. Google ScholarGoogle ScholarCross RefCross Ref
  41. Fiorella Zampetti, Simone Scalabrino, Rocco Oliveto, Gerardo Canfora, and Massimiliano Di Penta. 2017. How open source projects use static code analysis tools in continuous integration pipelines. In 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR). 334–344. https://doi.org/10.1109/MSR.2017.2 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. IDE support for cloud-based static analyses

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          ESEC/FSE 2021: Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
          August 2021
          1690 pages
          ISBN:9781450385626
          DOI:10.1145/3468264

          Copyright © 2021 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 18 August 2021

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate112of543submissions,21%

          Upcoming Conference

          FSE '24

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader