Jump to content

COX - Compiler Output eXtender


thoga31
 Share

Recommended Posts

Titulo do Projecto: COX, Compiler Output eXtender

Última Versão: 1.0.0 beta-1

Licença: GNU GPL 3.0

Líder do Projecto: thoga31

Membros Actuais do Projecto: thoga31

Descrição do Projecto:

Enquanto implementava a 2ª versão do PROGRAMAR Downloader for Linux, eu dividi o código de uma unit para um total de 7. No meio disto enfrentei mensagens de erro enormes enquanto não consegui acertar com os links entre units. No meio haviam dispersos Warnings, Notes, Errors, e eu meio "perdido" a tentar decifrar aquilo.

E surgiu-me a ideia: da mesma forma que fazemos highlight ao código, porque não dar vida às mensagens do compilador? Todos os programas de consola não têm cor, por tradição. Mas eu costumo usar algumas cores para que a "selva da informação" seja legível em vários níveis.

COX é um pequeno projecto que tem como objectivo ligar-se a todos os compiladores que quiserem de forma a que o seu output seja colorido.

Os screenshots comparam as mensagens do Free Pascal Compiler (FPC), com e sem COX, quando este tenta compilar o seguinte programa, o qual emite os 4 tipos de mensagens do FPC:

program testcox;

function foo : integer;  // Warning
var i : integer;  // Note
begin
   write('oleh!');
end;

begin
   write(foo);
end;  // Error, Fatal

Screenshots:

Sem COX:

cox_100b1_nocox.png

Com COX:

cox_100b1_withcox.png

Usar o programa:

Podem obter ajuda escrevendo cox --help. De qualquer das formas, segue-se uma breve descrição dos argumentos do programa:

COMANDO                        DESCRIÇÃO
cox --help                     Mostra a ajuda.
cox --about                    Informações detalhadas do programa.

cox [modifier] compiler args   Acede ao compilador definido por "compiler" e envia-lhe os argumentos "args".

MODIFIER     DESCRIÇÃO
  -q        Modo quiet - não recomendado - o output do compilador é oculto.
  -d        Modo debug - mostra informações detalhadas acerca do processo de conexão ao compilador.

Portanto, o uso é simples: é escrever cox seguido do que habitualmente escreveriam para compilar o programa. Por exemplo, caso o gcc esteja configurado, poderão fazer: cox gcc -Wall -Werror test.c -o test

Como configurar o programa para se associar um novo compilador?

O programa deverá ficar numa pasta bem definida na qual deverão estar presentes outros 3 ficheiros: o COXgen, e os dois ficheiros compilers.

  1. Abrir o ficheiro compilers.txt e adicionar as configurações do novo compilador.
    Por exemplo, para Free Pascal (o qual já vem configurado de origem) pode ter esta definição:
    DEFINE Free Pascal
       ACCESS = fpc
       COMPILER = {
           WINDOWS = fpc
           UNIX = /usr/bin/fpc
       }
       MESSAGES = {
           DEFAULT = 0,7
           NEW "error:" = 0,12
           NEW "fatal:" = 0,12
           NEW "warning:" = 0,14
           NEW "note:" = 0,11
       }
    END DEFINE
    

  2. Correr o programa coxgen.
    Ele irá fazer o parsing do ficheiro e criar um ficheiro binário, compilers.def.
  3. Já está 😄

Para usar, agora basta fazer:

$ cox fpc ficheiro.pas

Eu redefini o bashrc no Ubuntu para poder usar em qualquer lugar, aconselho a fazerem o mesmo.

ATENÇÃO! Não usem o próprio nome do compilador para chamar a aplicação COX! Ou seja, não façam isto:

alias fpc="~/Documents/prog/cox/..."

A síntaxe (uma explicação mais completa está no download):

DEFINE language_name
   ACCESS = call_name
   COMPILER = {
       WINDOWS = program_name
       UNIX = full_path
   }
   MESSAGES = {
       DEFAULT = background_color,text_color
       NEW "message" = background_color,text_color
   }
END DEFINE

Download executável:

Edited by thoga31
  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.