Renraku — the One Static Analysis Model to Rule Them All (iwst2017)

Renraku — the One Static Analysis Model to Rule Them All (iwst2017)

Most static analyzers are monolithic applications that define their own ways to analyze source code and present the results.
Therefore aggregating multiple static analyzers into a single tool or integrating a new analyzer into existing tools requires a significant amount of effort.

Over the last few years, we cultivated Renraku --- a static analysis model that acts as a mediator between the static analyzers and the tools that present the reports.
When used by both analysis and tool developers, this single quality model can reduce the cost to both introduce a new type of analysis to existing tools and create a tool that relies on existing analyzers.

9847702de1f7f19db8c3e158325baa8e?s=128

Yuriy Tymchuk

September 05, 2017
Tweet

Transcript

  1. 1.

    Renraku The One Static Analysis Model to Rule Them All

    Yuriy Tymchuk SCG @ Unibe Mohammad Ghafari Oscar Nierstrasz
  2. 10.

    Renraku UML Subset title() icon() Property act(property, target) description icon

    action PropertyAction 0..* actions description() ban() tinyHint Critique checksClass() checksMethod() checksPackage() checksNode() name() rationale() group() severity() checkTarget(target) AbstractRule interval() SourceAnchor Object interval() StringMatchSourceAnchor stringToSearch interval() IntervalSourceAnchor interval checksNode() NodeBasedRule refactoryChange() TransformationCritique refactoryChange() tinyHint() selector class source MissingMethodCritique refactoryChange() oldNode newNode NodeReplace title() description() formerMessage laterMessage InvocationOrderCritique checkTarget(target) NodeMatchRule checkTarget(target) NodeTransformRule checksMethod() checkTarget(target) CollectionCopyEmptyRule sourceAnchor 1 entity 1 rule 1
  3. 11.

    Renraku UML Subset title() icon() Property act(property, target) description icon

    action PropertyAction 0..* actions description() ban() tinyHint Critique checksClass() checksMethod() checksPackage() checksNode() name() rationale() group() severity() checkTarget(target) AbstractRule interval() SourceAnchor Object interval() StringMatchSourceAnchor stringToSearch interval() IntervalSourceAnchor interval checksNode() NodeBasedRule refactoryChange() TransformationCritique refactoryChange() tinyHint() selector class source MissingMethodCritique refactoryChange() oldNode newNode NodeReplace title() description() formerMessage laterMessage InvocationOrderCritique checkTarget(target) NodeMatchRule checkTarget(target) NodeTransformRule checksMethod() checkTarget(target) CollectionCopyEmptyRule sourceAnchor 1 entity 1 rule 1
  4. 12.

    The Rule checksPackage checksClass checksMethod checksNode Interest (class side) Information

    name severity rationale (class comment) group Validation check: anEntity forCritiquesDo: aBlock
  5. 16.

    Renraku UML Subset title() icon() Property act(property, target) description icon

    action PropertyAction 0..* actions description() ban() tinyHint Critique checksClass() checksMethod() checksPackage() checksNode() name() rationale() group() severity() checkTarget(target) AbstractRule interval() SourceAnchor Object interval() StringMatchSourceAnchor stringToSearch interval() IntervalSourceAnchor interval checksNode() NodeBasedRule refactoryChange() TransformationCritique refactoryChange() tinyHint() selector class source MissingMethodCritique refactoryChange() oldNode newNode NodeReplace title() description() formerMessage laterMessage InvocationOrderCritique checkTarget(target) NodeMatchRule checkTarget(target) NodeTransformRule checksMethod() checkTarget(target) CollectionCopyEmptyRule sourceAnchor 1 entity 1 rule 1
  6. 17.

    Property title() icon() Property act(property, target) description icon action PropertyAction

    0..* actions description() ban() tinyHint Critique checksClass() checksMethod() checksPackage() checksNode() name() rationale() group() severity() checkTarget(target) AbstractRule interval() SourceAnchor Object interval() StringMatchSourceAnchor stringToSearch interval() IntervalSourceAnchor interval checksNode() NodeBasedRule refactoryChange() TransformationCritique refactoryChange() tinyHint() selector class source MissingMethodCritique refactoryChange() oldNode newNode NodeReplace title() description() formerMessage laterMessage InvocationOrderCritique checkTarget(target) NodeMatchRule checkTarget(target) NodeTransformRule checksMethod() checkTarget(target) CollectionCopyEmptyRule sourceAnchor 1 entity 1 rule 1 Target Rule
  7. 18.

    title() icon() actions() target Property description() ban() tinyHint rule Critique

    refactoryChange() TransformationCritique package DependencyCritique noteText Note url IssueTrackerEntry Open in web browser Edit note View description Ban critique Automatically resolve Open dependency browser — critique’s action
  8. 23.

    Renraku UML Subset title() icon() Property act(property, target) description icon

    action PropertyAction 0..* actions description() ban() tinyHint Critique checksClass() checksMethod() checksPackage() checksNode() name() rationale() group() severity() checkTarget(target) AbstractRule interval() SourceAnchor Object interval() StringMatchSourceAnchor stringToSearch interval() IntervalSourceAnchor interval checksNode() NodeBasedRule refactoryChange() TransformationCritique refactoryChange() tinyHint() selector class source MissingMethodCritique refactoryChange() oldNode newNode NodeReplace title() description() formerMessage laterMessage InvocationOrderCritique checkTarget(target) NodeMatchRule checkTarget(target) NodeTransformRule checksMethod() checkTarget(target) CollectionCopyEmptyRule sourceAnchor 1 entity 1 rule 1
  9. 24.

    Renraku UML Subset interval() SourceAnchor Object interval() StringMatchSourceAnchor stringToSearch interval()

    IntervalSourceAnchor interval title() formerMessage laterMessage InvocationOrderCritique sourceAnchor 1 entity 1
  10. 25.
  11. 32.
  12. 33.
  13. 35.

    Renraku The One Static Analysis Model to Rule Them All

    Object Analysis Incremental Rules Incremental Tools Yuriy Tymchuk Mohammad Ghafari Oscar Nierstrasz Software Composition Group @ University of Bern