package Ġfilter Ċ Ċ import Ġcom . intellij . psi . Psi Method Ċ import Ġpsi . Psi Node Ċ Ċ /* Ċ Adapt Ġfrom Ċ https :// github . com / tech - srl / code 2 seq / blob / master / Java Extractor / J Predict / src / main / java / Java Extractor / Visitor s / Function Visitor . java # L 5 2 Ċ Ġ*/ Ċ private Ġfun Ġget Clean Code ( code : ĠString ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġclean Code Ġ= Ġcode ĊĠĠĠĠĠĠĠ Ġ. replace ("\ r \ n ", Ġ"\ n ") ĊĠĠĠĠĠĠĠ Ġ. replace ("\ t ", Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġif Ġ( startsWith (" {\ n ")) Ġsubstring ( 3 ). trim () Ġ} ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġif Ġ( endsWith ("\ n } ")) Ġsubstring ( 0 , Ġlength Ġ- Ġ 2 ). trim () Ġ} ĊĠĠĠ Ġreturn Ġclean Code . split ("\ n "). map Ġ{ Ġit . trim () Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġ" {" Ġ&& Ġit Ġ!= Ġ" }" Ġ&& Ġit Ġ!= Ġ"" Ġ&& Ġ! it . startsWith ("/") Ġ&& Ġ! it . startsWith ("* ") Ġ} Ċ } Ċ Ċ class ĠCode Length Filter ( private Ġval Ġmin Code Length : ĠInt Ġ= Ġ 0 , Ġprivate Ġval Ġmax Code Length : ĠInt ? Ġ= Ġnull ) Ġ: ĠFilter Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Good Tree ( root : ĠPsi Node ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi Node Ġ= Ġroot . wrapped Node ĊĠĠĠĠĠĠĠ Ġval Ġclean Code Ġ= Ġget Clean Code ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( psi Node Ġis ĠPsi Method ) Ġpsi Node . body ?. text Ġ?: Ġ"" Ġelse Ġpsi Node . text ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ( min Code Length Ġ<= Ġclean Code . size ) Ġ&& Ġ( max Code Length Ġ== Ġnull Ġ|| Ġclean Code . size Ġ<= Ġmax Code Length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġname Ġ= Ġ" code Ġlength " ĊĠĠĠ Ġ} Ċ } Ċ