2009-06-15 21 views
21

Estoy trabajando con un proyecto Maven (jar) en Netbeans (Windows), que crea informes Checkstyle con el complemento Maven Checkstyle.Cómo deshacerse del mensaje de Checkstyle 'El archivo no finaliza con una nueva línea'.

No importa lo que haga, siempre recibo el mensaje: File does not end with a newline para archivos de clase Java.

¿Qué puedo hacer/configurar en Netbeans o Checkstyle para deshacerme del mensaje?

Las versiones del software utilizado:

  • WinXP SP3
  • Netbeans 6.7 RC1 (ocurre con 6.5 también)
  • Maven 2.0.9
  • Maven Checkstyle Plugin 2.2
  • Java 1.6 (Actualización 14)

Respuesta

9

Ponga una nueva línea al final del archivo
o
configure CheckStyle para que no importe.

<module name="Checker"> 
    <!-- stuff deleted --> 
    <module name="NewlineAtEndOfFile"> 
     <property name="severity" value="ignore" /> 
    </module> 

también hay que decir que el plugin Maven Checkstyle utilizar el archivo de configuración Checkstyle.

<plugin> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>${basedir}/yourCheckstyle.xml</configLocation> 
    </configuration> 
</plugin> 
+3

eso parece ser imposible con netbeans en Windows –

+2

Es posible. Si puedes mover el cursor más allá de la última línea, entonces lo tienes. Si eso todavía no borra la advertencia, verifique [Respuesta de Alexey Voinov] (http://stackoverflow.com/a/15433548/1005481) y asegúrese de que Checkstyle se ejecute de nuevo después del cambio de configuración. –

3

Hay una manera más sencilla de hacer esto. Se puede especificar un archivo de supresiones sin anulando el sol archivo de configuración Checkstyle:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <suppressionsLocation>suppressions.xml</suppressionsLocation> 
     <configLocation>config/sun_checks.xml</configLocation> 
    </configuration> 
</plugin> 

Donde su suppressions.xml es:

<?xml version="1.0"?> 
<!DOCTYPE suppressions PUBLIC 
    "-//Puppy Crawl//DTD Suppressions 1.1//EN" 
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> 

<suppressions> 
    <suppress checks="NewlineAtEndOfFile" files=".java" /> 
</suppressions> 
+0

Esto es genial si tiene prohibido cambiar el archivo de configuración, pero se le permite cambiar el archivo de supresión (¡sucede!). Si puede cambiar el archivo de configuración, es mejor simplemente eliminar las comprobaciones no deseadas del archivo de configuración. Menos desorden y mejor rendimiento. –

0

Eclipse ..Window >> Preferences >> Checkstyle >> Select the configuration file >>

  1. Haga clic en el botón >>"Properties" Deseleccionar el Protect Checkstyle Configuration file.
  2. Haga clic en "Configure" botón >> buscar "New Line At End Of File" >> Desmarque la casilla que se ve al lado de New Line At End Of File.
41

En mi caso, ese fue un problema con la configuración incorrecta de ese comprobador. De forma predeterminada, utiliza la convención predeterminada del sistema de finales de línea. Estaba trabajando en Windows y el proyecto usaba terminaciones de línea estilo Unix. No creo que haciendo caso omiso de la advertencia es la mejor estrategia, así que lo que he hecho es:

+0

Gracias, para mí esta es la solución. Funciona incluso si otras personas en el equipo tienen sus archivos en Windows extraídos con separadores de línea CR-LF –

6

me encuentro con este problema cuando los archivos se guardan como formato UNIX en lugar de DOS. (O de otra manera si hace su trabajo en Unix)

Para solucionarlo, utilizo un programa para convertir de formato UNIX a DOS y guardo el archivo en ese formato.

en Eclipse: Archivo -> Convertir delimitadores Línea A -> Windows

-2

// Aquí está la solución de fuerza bruta: "Ponga una nueva línea al final del archivo"

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.util.ArrayList; 

/** 
* 
* @author hMueller 
*/ 

public class UnixToWindowsEncoding { 

//rewrites all .java files in Windows encoding 
//a[0] = parent directory 
//loops through all subdirectories and fixes whatever .java file it finds 
public static void main(String[] a){ 
    String startdir = a[0]; 
    fixDir(startdir); 

} 

private static void fixDir(String dirname){ 
    try{ 
     File f = new File(dirname); 
     File[] list = f.listFiles(); 
     for(int i = 0; i < list.length; i++){ 
      if(list[i].isDirectory()){ 
       fixDir(list[i].getAbsolutePath()); 
      }else{ 
       if(list[i].getName().endsWith(".java")){ 
        ArrayList<String> l = new ArrayList<String>(); 
        FileReader fr = new FileReader(list[i]); 
        BufferedReader br = new BufferedReader(fr); 
        String line = ""; 
        while((line = br.readLine()) != null){ 
         l.add(line); 
        } 
        br.close(); 
        fr.close(); 
        list[i].delete(); 
        FileWriter fwr = new FileWriter(list[i]); 
        for(String s : l){ 
         fwr.write(s + "\r\n"); 
        } 
        fwr.flush(); 
        fwr.close(); 
       } 
      } 
     } 
    }catch(Exception ioe){ 
     ioe.printStackTrace(); 
    } 
} 

} 
+0

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (http://meta.stackexchange.com/questions/ 114762/explaining-entirely-code-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. – Ferrybig

Cuestiones relacionadas