Eu tenho algum código Java com instruções SQL escritas como strings Java (por favor, não use OR / M flamewars, o SQL incorporado é o que é - não é minha decisão).
Dividi as instruções SQL semanticamente em várias seqüências concatenadas em várias linhas de código para facilitar a manutenção. Então, em vez de algo como:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Eu tenho algo como:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Esse estilo torna o SQL muito mais fácil de ler e manter (IMHO), especialmente para consultas maiores. Por exemplo, posso colocar meu editor no modo "substituir" e modificar o texto no local com bastante facilidade.
Observe que esse problema se generaliza além do exemplo específico de SQL. Qualquer código que seja escrito com qualquer formatação vertical, particularmente construções de tabela, é suscetível à destruição por uma impressora bonita.
Agora, alguns membros do projeto usam o editor Eclipse e a formatação semântica geralmente é destruída quando eles formatam um arquivo de origem inteiro.
Existe uma maneira de instruir o Eclipse a ignorar certas linhas de origem com relação à formatação?
Estou procurando algo como um comentário especial que alterna o formatador Eclipse. Idealmente, esse comentário pode ser configurável para ser o que escolhermos, e outros formatadores também podem ser programados para respeitá-lo:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Obviamente, uma "solução" é fazer com que os membros da nossa equipe padronizem em algum formatador externo, como Jalopy ou JIndent , mas não é disso que trata esta questão (também, não é minha decisão sobre esse projeto): estou procurando especificamente uma maneira de evite o formatador Eclipse em uma base ad-hoc.
Idealmente, uma solução permitirá que eu insira instruções para o formatador Eclipse sem exigir que os membros da equipe que usam o Eclipse realizem qualquer reconfiguração do IDE (além de possivelmente escolher um comentário de comando independente do formatador : STOP-ECLIPSE-FORMATTING
→ STOP-FORMATTING
).
fonte
Respostas:
O Eclipse 3.6 permite desativar a formatação colocando um comentário especial, como
ON / OFF características tem que ser transformado "on" nas preferências do Eclipse: Java > Code Style > Formatter. Clique em Edit, Off/On Tags, ative Enable Off/On tags.
Também é possível alterar as sequências mágicas nas preferências - confira os documentos do Eclipse 3.6 aqui .
Mais Informações
Java > Code Style > Formatter > Edit > Off/On Tags
Essa preferência permite definir uma tag para desativar e uma tag para ativar o formatador (consulte a guia Tags desativadas / ativadas no perfil do formatador):
Você também precisa ativar os sinalizadores de Java Formatting
fonte
O AFAIK do Eclipse 3.5 M4 no formatador possui uma opção "Never Join Lines", que preserva as quebras de linhas do usuário. Talvez isso faça o que você quer.
Senão, existe esse truque feio
fonte
Veja esta resposta no SO .
Há outra solução que você pode usar para suprimir a formatação de comentários de bloco específicos. Use
/*-
(observe o hífen) no início do comentário do bloco e a formatação não será afetada se você formatar o restante do arquivo.Fonte: Documentação na Oracle .
fonte
Em vez de desativar a formatação, você pode configurá-lo para não ingressar nas linhas quebradas. Semelhante à resposta do Jitter, aqui está o Eclipse STS:
Propriedades → Estilo do código Java → Formatador → Ativar configurações específicas do projeto OU Definir configurações da área de trabalho → Editar → Quebra automática de linhas (guia) → marque "Nunca unir linhas já quebradas"
Salvar, aplicar.
fonte
Você precisa ativar a capacidade de adicionar as tags do formatador. Na barra de menus, vá para:
Windows → Preferences Java → Code Style → Formatter
Pressione o Editbotão Escolha a última aba. Observe a caixa On / Off e ative-os com uma caixa de seleção.
fonte
Se você colocar o sinal de mais no início da linha, ele formata de forma diferente:
fonte
Estou usando partes de string de largura fixa (preenchidas com espaço em branco) para evitar que o formatador atrapalhe meu recuo de string SQL. Isso fornece resultados variados e não funciona onde os espaços em branco não são ignorados como no SQL, mas podem ser úteis.
fonte
Termine cada uma das linhas com uma barra dupla "//". Isso impedirá que o eclipse os mova para a mesma linha.
fonte
Método alternativo: No Eclipse 3.6, em "Quebra de Linha" e "Configurações Gerais", há uma opção para "Nunca unir linhas já quebradas". Isso significa que o formatador quebra linhas longas, mas não desfaz nenhuma quebra que você já possui.
fonte
O @xpmatteo tem a resposta para desativar partes do código, mas, além disso, as configurações padrão do eclipse devem ser definidas para formatar apenas linhas de código editadas, em vez de todo o arquivo.
Isso impediria que isso acontecesse em primeiro lugar, já que seus colegas de trabalho estão reformatando o código que na verdade não foram alterados. Essa é uma boa prática para evitar contratempos que tornam o diff no seu controle de origem inútil (quando um arquivo inteiro é reformatado devido a pequenas diferenças nas configurações de formato).
Também impediria a reformatação se a opção de ligar / desligar tags estivesse desativada.
fonte
Os comentários fantasmas, adicionando
//
onde você deseja novas linhas, são ótimos!O @formatter: off adiciona uma referência do código ao editor. O código, na minha opinião, nunca deve ter essas referências.
Os comentários fantasmas (//) funcionarão independentemente da ferramenta de formatação usada. Independentemente do Eclipse ou InteliJ ou qualquer editor que você use. Isso funciona mesmo com o ótimo Google Java Format
Os comentários fantasmas (//) funcionarão em todo o aplicativo. Se você também possui Javascript e talvez use algo como JSBeautifier . Você pode ter um estilo de código semelhante também no Javascript.
Na verdade, você provavelmente deseja formatar certo? Você deseja remover tabulação / espaço misto e espaços à direita. Você deseja recuar as linhas de acordo com o padrão do código. O que você NÃO quer é uma longa fila. É isso, e apenas isso, o que o comentário fantasma dá a você!
fonte
Este hack funciona:
Eu sugeriria não usar o formatador. O código incorreto deve parecer ruim e não artificialmente bom. Um bom código leva tempo. Você não pode trapacear na qualidade. A formatação faz parte da qualidade do código-fonte.
fonte