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.

9847702de1f7f19db8c3e158325baa8e?s=128

Yuriy Tymchuk

September 04, 2017
Tweet

Transcript

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

  2. Good Old QualityAssistant

  3. Code Browser Message Browser CriticBrowser Debugger

  4. RENRAKU 1.0

  5. Renraku Repository

  6. Renraku Repository

  7. Renraku Repository

  8. Behold the Features

  9. Test Coverage +20%

  10. Advanced Rule Banning

  11. Banning

  12. Banning

  13. Banning

  14. Banning Better

  15. Banning Better

  16. Forcing Rules

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

    > > > >
  18. All Images Image All Images All Images Image Image Class

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

    All Images All Images Ban/Force Importance
  20. Error Handling

  21. Error reporting

  22. Error reporting

  23. Error reporting on: Exception do: [ ]

  24. Error reporting Everything is awesome!

  25. Exception as a Property

  26. Exception as a Property

  27. Exception as a Property Property Critique Exception P.

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

    Property Critique Exception P.
  29. Error reporting Ignore Pass Log

  30. Revamped Rules

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

    Method Rule
  32. Transformation Rules

  33. Transformation Rule Algorithm parse source into an AST traverse AST

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

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

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

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

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

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

    by nodes node matches rule? save node for rewrite for each rule rule
  40. Parse Tree Rules (not so nice)

  41. Parse Tree Rules (not so nice)

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

    } — matches any node
  43. Rule Types Overview Rule Class Rule Method Rule ParseTree R.

    Transformation R.
  44. Rule Types Overview Rule Class Rule Method Rule NodeMatch R.

    NodeRewrite R. Node Rule
  45. Parse Tree Rule (the result of a select: or detect:

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

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

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

  49. Parse Tree Rule (sends questionable messages)

  50. (sends questionable messages) Match Rule

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

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

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

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

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

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

  57. Match Rule (modi!es foreign collection)

  58. Match Rule (modi!es foreign collection)

  59. Match Rule (modi!es foreign collection)

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

  61. Match Rule (compares "oats with =)

  62. Match Rule (compares "oats with =)

  63. Parse Tree Rule (manual literal search)

  64. Parse Tree Rule (manual literal search)

  65. Match Rule (manual literal search)

  66. Match Rule (manual literal search)

  67. Code Validation Speed

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

    Validation Speed
  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