$30 off During Our Annual Pro Sale. View Details »

What if Clippy Would Criticize Your Code? (benevol2015)

What if Clippy Would Criticize Your Code? (benevol2015)

Comparison study between intrusive and on-demand recommendation systems for software development based on static analysis.

Yuriy Tymchuk

December 04, 2015
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Programming

Transcript

  1. What if Clippy Would
    Criticize Your Code?
    Yuriy Tymchuk
    R A
    E E L
    V

    View Slide

  2. @yuriy_tymchuk
    What if Clippy Would
    Criticize Your Code?
    R A
    E E L
    V
    Sometimes I just popup for
    no reason at all. Like now.

    View Slide

  3. @yuriy_tymchuk
    What if Clippy Would
    Criticize Your Code?
    R A
    E E L
    V
    Criticize Your Code?

    View Slide

  4. Code Quality

    View Slide

  5. Code Quality
    How easy it is to
    understand
    modify
    test
    the software
    ISO/IEC, ISO/IEC 9126. Software Engineering – Product quality 6.5. ISO/IEC, 2001
    (maintainability)

    View Slide

  6. Code Review
    A. Bacchelli, C. Bird. Expectations, outcomes, and challenges of modern code review. In Proceedings of ICSE’13, pp. 712–721, IEEE, 2013

    View Slide

  7. Static Analyzer

    View Slide

  8. Static Analyzer

    View Slide

  9. Quality Rules
    Static Analyzer

    View Slide

  10. Quality Rules
    Source Code
    Static Analyzer

    View Slide

  11. Quality Rules
    Critics
    Static Analyzer

    View Slide

  12. Find Bugs

    View Slide

  13. Visual Design Inspection
    Y. Tymchuk, A. Mocci, and M. Lanza. Code Review: Veni, ViDI, Vici. In Proceedings of SANER’15, pp. 151-160, IEEE, 2015

    View Slide

  14. Y. Tymchuk, A. Mocci, and M. Lanza. Code Review: Veni, ViDI, Vici. In Proceedings of SANER’15, pp. 151-160, IEEE, 2015
    Y. Tymchuk, A. Mocci, and M. Lanza. Vidi: The Visual Design Inspector. In Proceedings of ICSE’15, to be published, IEEE, 2015
    ViDI

    View Slide

  15. View Slide

  16. packages
    400 classes
    5.5k methods
    90k

    View Slide

  17. Pharo 4: patches / months ≈ patches/day
    1726 12 5
    Pharo 5: patches / months ≈ patches/day
    1560 7.5 7
    packages
    400 classes
    5.5k methods
    90k

    View Slide

  18. ViDI is …

    View Slide

  19. Disconnected from Development

    View Slide

  20. Yes, I will help you

    to write code!

    View Slide

  21. Static Analyzer Interface
    FindBugs IntelliJ Code Analysis

    View Slide

  22. Static Analyzer Interface
    FindBugs IntelliJ Code Analysis
    standalone/on demand embedded/intrusive

    View Slide

  23. Static Analyzer Interface
    Critics Browser
    standalone/on demand embedded/intrusive
    in Pharo

    View Slide

  24. Critics Browser

    View Slide

  25. Critics Browser Survey
    46 participants

    View Slide

  26. Critics Browser Survey

    View Slide

  27. Critics Browser Survey

    View Slide

  28. QualityAssistant

    View Slide

  29. QualityAssistant in Code Browser

    View Slide

  30. QualityAssistant in Code Browser

    View Slide

  31. QualityAssistant in Inspector

    View Slide

  32. QualityAssistant in Spotter

    View Slide

  33. Pharo 4: patches / months ≈ patches/day
    1726 12 5
    Pharo 5: patches / months ≈ patches/day
    1560 7.5 7
    packages
    400 classes
    5.5k methods
    90k

    View Slide

  34. Pharo 4: patches / months ≈ patches/day
    1726 12 5
    Pharo 5: patches / months ≈ patches/day
    1560 7.5 7
    packages
    400 classes
    5.5k methods
    90k

    View Slide

  35. QualityAssistant Survey
    29 participants

    View Slide

  36. QualityAssistant Survey

    View Slide

  37. Browser Inspector Spotter
    QualityAssistant Survey

    View Slide

  38. QualityAssistant Survey

    View Slide

  39. Critics Browser QualityAssistant

    View Slide

  40. Critics Browser QualityAssistant

    View Slide

  41. Critics Browser QualityAssistant

    View Slide

  42. Critics Browser QualityAssistant

    View Slide

  43. Critics Browser QualityAssistant

    View Slide

  44. Critics Browser QualityAssistant
    auto"x
    ban

    ignore
    ban

    ignore
    rationale
    highlight
    diff
    auto"x
    ban
    ban in

    scope

    View Slide

  45. View Slide

  46. 31%
    10%
    31%
    7%
    3%
    17%
    48%
    14%
    21%
    17% Don’t know QA
    Negative
    Slightly Negative
    Neutral
    Slightly Positive
    Positive
    removal of
    “Missing yourself”
    addition of
    “notNilDo: -> notNil:”
    QualityAssistant-In!uenced Changes

    View Slide

  47. Developers Like QualityAssistant

    View Slide

  48. Developers Like QualityAssistant
    38%
    24%
    14%
    3%
    3%
    17%
    “!nd QualityAssistant very useful”

    View Slide

  49. 38%
    24%
    14%
    3%
    3%
    17%
    48%
    14%
    21%
    17%
    “!nd QualityAssistant very useful”
    “!nd introduction of a new rule
    in"uenced by QualityAssistant
    to be positive”
    Developers Like QualityAssistant

    View Slide

  50. 38%
    24%
    14%
    3%
    3%
    17%
    48%
    14%
    21%
    17%
    “!nd QualityAssistant very useful”
    “!nd introduction of a new rule
    in"uenced by QualityAssistant
    to be positive”
    Developers Like QualityAssistant

    View Slide

  51. @yuriy_tymchuk
    38%
    24%
    14%
    3%
    3%
    17%
    48%
    14%
    21%
    17%
    “!nd QualityAssistant very useful”
    “!nd introduction of a new rule
    in"uenced by QualityAssistant
    to be positive”
    Developers Like QualityAssistant

    View Slide