2009-06-15 6 views
21

Je travaille avec un projet Maven (jar) dans Netbeans (Windows), qui crée des rapports Checkstyle avec le plugin Maven Checkstyle.Comment se débarrasser du message Checkstyle 'Le fichier ne se termine pas par un saut de ligne.'

Peu importe ce que je fais, je reçois toujours le message: File does not end with a newline pour les fichiers de classe Java.

Que puis-je faire/configurer dans Netbeans ou Checkstyle pour se débarrasser du message?

Versions de logiciel utilisé:

  • SP3 Windows XP
  • Netbeans 6.7 RC1 (se produit avec 6,5 trop)
  • Maven 2.0.9
  • Maven Checkstyle Plugin 2.2
  • Java 1.6 (mise à jour 14)

Répondre

9

Mettre un saut de ligne à la fin du fichier
ou
configurer CheckStyle ne pas s'en soucier.

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

Vous devez également dire le plugin Checkstyle Maven pour utiliser votre fichier de configuration checkstyle.

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

"Mettre une nouvelle ligne à la fin du fichier." cela semble impossible avec netbeans sur windows –

+2

C'est possible. Si vous pouvez déplacer le curseur au-delà de la dernière ligne, alors vous l'avez. Si cela ne règle toujours pas l'avertissement, vérifiez [la réponse d'Alexey Voinov] (http://stackoverflow.com/a/15433548/1005481) et assurez-vous que Checkstyle s'exécute à nouveau après le changement de configuration. –

3

Il y a une façon de faire plus simple. Vous pouvez spécifier un fichier sans écraser répressions du soleil checkstyle config file:

<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> 

Où est-votre suppressions.xml:

<?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

C'est génial si vous êtes interdit de changer le fichier de configuration, mais autorisé à changer le fichier de suppressions (ça arrive!). Si vous pouvez changer le fichier de configuration, il est préférable de supprimer simplement les contrôles indésirables du fichier de configuration. Moins d'encombrement et de meilleures performances. –

0

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

  1. Cliquez sur le bouton >>"Properties" Décocher le Protect Checkstyle Configuration file.
  2. Cliquez sur le bouton "Configure" >> recherche de "New Line At End Of File" >> Décochez la case que vous voyez à côté de New Line At End Of File.
41

Dans mon cas c'était un problème avec une mauvaise configuration de ce vérificateur. Par défaut, il utilise la convention par défaut du système des fins de ligne. Je travaillais sur Windows et le projet utilisait des fins de ligne de type Unix. Je ne pense pas ignorer l'avertissement est la meilleure stratégie, donc ce que je l'ai fait est:

+0

Merci, pour moi c'est la solution. Cela fonctionne même si d'autres personnes de l'équipe ont leurs fichiers sous Windows avec les séparateurs de lignes CR-LF –

6

Je cours dans ce problème lorsque les fichiers sont enregistrés au format UNIX au lieu de DOS. (ou d'une autre manière si vous faites votre travail dans Unix)

Pour résoudre ce problème, j'utilise un programme de conversion de format UNIX en DOS et enregistrer le fichier dans ce format.

Eclipse: Fichier -> Convertir une ligne délimiteurs -> de Windows

-2

// Voici la solution de force brute:

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

Bien que cet extrait de code puisse résoudre la question, [y compris une explication] (http://meta.stackexchange.com/questions/ 114762/explaining-code-based-answers) aide vraiment à améliorer la qualité de votre message. Rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. – Ferrybig

Questions connexes