(String[] args)
| 36 | |
| 37 | |
| 38 | public static void main(String[] args) |
| 39 | throws Exception |
| 40 | { |
| 41 | if ( args.length<2 ) { |
| 42 | System.err.println("Dbg [-leave-one-out] [-java|-java8|-antlr|-sqlite|-tsql] test-file"); |
| 43 | } |
| 44 | |
| 45 | int arg = 0; |
| 46 | boolean leaveOneOut = true; |
| 47 | boolean collectAnalysis = true; |
| 48 | String language = args[arg++]; |
| 49 | language = language.substring(1); |
| 50 | String testFilename = args[arg]; |
| 51 | String output = "???"; |
| 52 | InputDocument testDoc = null; |
| 53 | GUIController controller; |
| 54 | List<TokenPositionAnalysis> analysisPerToken = null; |
| 55 | Pair<String, List<TokenPositionAnalysis>> results; |
| 56 | LangDescriptor lang = null; |
| 57 | long start = 0, stop = 0; |
| 58 | for (int i = 0; i<Tool.languages.length; i++) { |
| 59 | if ( Tool.languages[i].name.equals(language) ) { |
| 60 | lang = Tool.languages[i]; |
| 61 | break; |
| 62 | } |
| 63 | } |
| 64 | if ( lang!=null ) { |
| 65 | start = System.nanoTime(); |
| 66 | LeaveOneOutValidator validator = new LeaveOneOutValidator(lang.corpusDir, lang); |
| 67 | Triple<Formatter,Float,Float> val = validator.validateOneDocument(testFilename, null, collectAnalysis); |
| 68 | testDoc = Tool.parse(testFilename, lang); |
| 69 | stop = System.nanoTime(); |
| 70 | Formatter formatter = val.a; |
| 71 | output = formatter.getOutput(); |
| 72 | System.out.println("output len = "+output.length()); |
| 73 | float editDistance = normalizedLevenshteinDistance(testDoc.content, output); |
| 74 | System.out.println("normalized Levenshtein distance: "+editDistance); |
| 75 | analysisPerToken = formatter.getAnalysisPerToken(); |
| 76 | |
| 77 | CommonTokenStream original_tokens = Tool.tokenize(testDoc.content, lang.lexerClass); |
| 78 | List<Token> wsTokens = filter(original_tokens.getTokens(), |
| 79 | t -> t.getText().matches("\\s+")); |
| 80 | String originalWS = tokenText(wsTokens); |
| 81 | System.out.println("origin ws tokens len: "+originalWS.length()); |
| 82 | CommonTokenStream formatted_tokens = Tool.tokenize(output, lang.lexerClass); |
| 83 | wsTokens = filter(formatted_tokens.getTokens(), |
| 84 | t -> t.getText().matches("\\s+")); |
| 85 | String formattedWS = tokenText(wsTokens); |
| 86 | System.out.println("formatted ws tokens len: "+formattedWS.length()); |
| 87 | editDistance = levenshteinDistance(originalWS, formattedWS); |
| 88 | editDistance /= Math.max(testDoc.content.length(), output.length()); |
| 89 | System.out.println("Levenshtein distance of ws normalized to output len: "+editDistance); |
| 90 | |
| 91 | ClassificationAnalysis analysis = new ClassificationAnalysis(testDoc, analysisPerToken); |
| 92 | System.out.println(analysis); |
| 93 | } |
| 94 | |
| 95 | if ( lang!=null ) { |
nothing calls this directly
no test coverage detected