Which tool for colorizing output of javac?

断了今生、忘了曾经 提交于 2019-12-10 14:40:04

问题


We have a hugely parallelized build process, so I frequently have to browse through large amounts of output from javac to find a build error.

To make this easier it would be nice if there were some tool that will colorize the output of javac to my terminal, highlighting errors in the code.

What tool can I use to colorize the output of javac?


回答1:


I ended up using a tool called Generic Colorizer Tool and write my own configuration for colorizing the most important output. Works just fine. :)




回答2:


using grep with the "--color" option ?

~$ javac Test.java 2>&1 | egrep --color "^|error"



回答3:


Roll your own javac error colorizer by using any regex matcher to match your text and surround it with terminal color escape codes to apply a color:

Using a readfile and substitute ideology:

#1.  Do your javac and pipe the result to a file:
javac whatever.java 2>/tmp/javac_errors.out;

#define the escape start and stop codes that your terminal 
#uses to apply foreground and background color:
let redbackground        = '\\e[48;5;196m'
let normalbackground     = '\\e[0;0m'

#iterate the lines in the saved file:
for line in readfile("/tmp/javac_errors.out")

    #Use sed, match, substitute or whatever to regex substitute 
    #the text with the text surrounded by the color escape codes
    #find and replace the text 'error:' with the same surrounded by escape codes
    let line = substitute(line, 
                          'error:',
                           redbackground . 
                           'error:' . 
                           normalbackground, 'g')

    #use echo -e flag to tell the terminal to interpret the escape codes:
    echo -e line
endfor

Works for me:

This code is the same as above, but it uses a terminal line iterator and a sed replace ideology:

#run javac pipe to file
javac whatever.java 2>/tmp/errors.out

#Define terminal color codes
redbackground='\\e[48;5;196m'
normalbackground='\\e[0;0m'

#read the file and print out each line 
filename="/tmp/errors.out" 
while read -r line; do  
    #replace error surround with escape codes 
    line=`sed "s/error:/${redbackground}error:${normalbackground}/g" <<<"$line"` 
    echo -e "$line" 
done < "$filename" 


来源:https://stackoverflow.com/questions/12702984/which-tool-for-colorizing-output-of-javac

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!