Skip to content

Analysis of jNorm failed canonicalizations #27

@algomaster99

Description

@algomaster99

Successful canonicalization: 267
Failed canonicalization: 478
Error in canonicalization: 153

We analyze the 478 here.

What jNorm fails at

  1. order of declaration of methods in interface
  2. order of declaration of if-else
  3. order of declaration of static blocks
  4. order of values in annotation
  5. Non deterministic generation of code
  6. return type change
  7. cannot normalize invokeinterface is changed to invokevirtual
  8. switch is created using a synthetic class
  9. condition change from == to != (control)
  10. hardcoded paths
  11. invokedynamic and String.valueOf
  12. try and try with resource
  13. jsr and ret
  14. changes in visibility of fields.
  15. relocations done by maven-shade-plugin
  16. names of lambda functions
  17. Unable to normalize this$0
  18. does not have module-info.class
  19. surprising normalises BUILD_DATE

Order

  1. order of declaration of methods in interface
  2. order of declaration of if-else
  3. order of declaration of static blocks
  4. order of values in annotation

Optimizations

  1. cannot normalize invokeinterface is changed to invokevirtual
  2. switch is created using a synthetic class
  3. invokedynamic and String.valueOf
  4. try and try with resource
  5. jsr and ret
  6. Unable to normalize this$0

Refactoring

  1. relocations done by maven-shade-plugin
  2. names of lambda functions
  3. condition change from == to != (control)
  4. hardcoded paths
  5. changes in visibility of fields.

Mystery

  1. does not have module-info.class (empties the class)
  2. surprising normalises BUILD_DATE (this is because it does not store the value of public static final java.lang.String BUILD_DATE;)
  3. Non deterministic generation of code
  4. return type change

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions