Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pharo Quality Engine: The Last Strokes (esug2017)

Pharo Quality Engine: The Last Strokes (esug2017)

Pharo 6 was shipped with Renraku — the single quality model to rule them all. While being an advanced piece of software, Renraku alone provided no immediate benefits to end users. In this talk, we are going to present the upcoming development changes that utilize Renraku and range from advanced bug fixing guidance to the five times speed up in quality rules; as well as a few more usability features.

Yuriy Tymchuk

September 04, 2017
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Programming

Transcript

  1. @yuriy_tymchuk
    Pharo Quality Engine:
    The Last Strokes
    SCG @ Unibe

    View Slide

  2. Good Old QualityAssistant

    View Slide

  3. Code Browser Message Browser
    CriticBrowser Debugger

    View Slide

  4. RENRAKU 1.0

    View Slide

  5. Renraku Repository

    View Slide

  6. Renraku Repository

    View Slide

  7. Renraku Repository

    View Slide

  8. Behold the
    Features

    View Slide

  9. Test Coverage +20%

    View Slide

  10. Advanced Rule
    Banning

    View Slide

  11. Banning

    View Slide

  12. Banning

    View Slide

  13. Banning

    View Slide

  14. Banning Better

    View Slide

  15. Banning Better

    View Slide

  16. Forcing Rules

    View Slide

  17. Ban/Force Importance
    All Images
    Package
    Package Image
    Package
    Class
    Method > > > >

    View Slide

  18. All Images
    Image All Images
    All Images
    Image
    Image
    Class
    Method > > > >
    Package
    Package
    Ban/Force Importance

    View Slide

  19. Class
    Method > > > >
    Package
    Package Image
    Image
    All Images
    All Images
    Ban/Force Importance

    View Slide

  20. Error Handling

    View Slide

  21. Error reporting

    View Slide

  22. Error reporting

    View Slide

  23. Error reporting
    on: Exception
    do: [ ]

    View Slide

  24. Error reporting
    Everything is
    awesome!

    View Slide

  25. Exception as a Property

    View Slide

  26. Exception as a Property

    View Slide

  27. Exception as a Property
    Property
    Critique Exception P.

    View Slide

  28. Exception as a Property
    message
    context
    debug
    rule
    ban
    auto!x
    Property
    Critique Exception P.

    View Slide

  29. Error reporting
    Ignore
    Pass Log

    View Slide

  30. Revamped
    Rules

    View Slide

  31. Rule Types Overview
    Transformation R.
    ParseTree R.
    Rule
    Class Rule Method Rule

    View Slide

  32. Transformation Rules

    View Slide

  33. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    rewrite node

    View Slide

  34. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    rewrite node
    for each rule

    View Slide

  35. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    rewrite node
    for each rule
    rule

    View Slide

  36. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    rewrite node
    for each rule
    rule

    View Slide

  37. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    for each rule
    rewrite node

    View Slide

  38. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    save node for rewrite
    for each rule

    View Slide

  39. Transformation Rule Algorithm
    parse source into an AST
    traverse AST by nodes
    node matches rule?
    save node for rewrite
    for each rule
    rule

    View Slide

  40. Parse Tree Rules
    (not so nice)

    View Slide

  41. Parse Tree Rules
    (not so nice)

    View Slide

  42. Parse Tree Rules
    (not so nice)
    `{ :node | “condition” } — matches any node

    View Slide

  43. Rule Types Overview
    Rule
    Class Rule Method Rule
    ParseTree R. Transformation R.

    View Slide

  44. Rule Types Overview
    Rule
    Class Rule Method Rule
    NodeMatch R. NodeRewrite R.
    Node Rule

    View Slide

  45. Parse Tree Rule
    (the result of a select: or detect: is not used)

    View Slide

  46. Match Rule
    (the result of a select: or detect: is not used)

    View Slide

  47. Parse Tree Rule
    (literal array of characters instead of a string)

    View Slide

  48. Match Rule
    (literal array of characters instead of a string)

    View Slide

  49. Parse Tree Rule
    (sends questionable messages)

    View Slide

  50. (sends questionable messages)
    Match Rule

    View Slide

  51. (sends questionable messages)
    Match Rule
    detects caseOf:otherwise:

    View Slide

  52. (sends questionable messages)
    Match Rule
    detects caseOf:otherwise:
    x7 faster

    View Slide

  53. (sends questionable messages)
    Match Rule
    detects caseOf:otherwise:
    x7 faster
    knows source interval

    View Slide

  54. Parse Tree Rule
    (modi!es foreign collection)

    View Slide

  55. Parse Tree Rule
    (modi!es foreign collection)

    View Slide

  56. Parse Tree Rule
    (modi!es foreign collection)

    View Slide

  57. Match Rule
    (modi!es foreign collection)

    View Slide

  58. Match Rule
    (modi!es foreign collection)

    View Slide

  59. Match Rule
    (modi!es foreign collection)

    View Slide

  60. Parse Tree Rule
    (compares "oats with =)

    View Slide

  61. Match Rule
    (compares "oats with =)

    View Slide

  62. Match Rule
    (compares "oats with =)

    View Slide

  63. Parse Tree Rule
    (manual literal search)

    View Slide

  64. Parse Tree Rule
    (manual literal search)

    View Slide

  65. Match Rule
    (manual literal search)

    View Slide

  66. Match Rule
    (manual literal search)

    View Slide

  67. Code Validation Speed

    View Slide

  68. Pharo 6
    Pharo 5
    Pharo 7
    1.4x
    2x
    1x
    Code Validation Speed

    View Slide

  69. Adv. Rule Toggle Errors as Properties Rule Overhaul
    RENRAKU
    The Technical Part
    Tomorrow, 3pm, BETA Room
    http://yuriy.tymch.uk/Renraku/ @yuriy_tymchuk
    @myroslavarm
    rule settings
    ban hierarchy debug post-mortem match map x2 speedup
    understandability
    pass/ignore/log

    View Slide