如何在没有块注释的情况下计算 LOC



我正在尝试从java文件中获取代码行数。但我很难数出它们。

首先,我尝试使用 ifs 跳过它们,但我的想法不起作用。现在我正在计算带有注释的相同行,我的 Java 文件有这个标题。任何想法,我都卡在如何计算它们。

我的 if 用于获取带有注释块的行数。我试图做一个减法。

/*
example
example
*/
int totalLoc = 0;
int difference = 0;
while((line =buff.readLine()) !=null){
    if((line.trim().length() !=0 &&(!line.contains("/*") ||!line.contains("*/")) )){
       if(line.startsWith("/*")){
           difference++;
       }else if(linea.startsWith("*/")){
           difference++;
       }else{
           difference++;
       }
    }
}
如果要

计算任何文件中的行数,请在下面方法编写并将文件名作为输入传递给下面的方法,它将返回计数。

public int count(String filename) throws IOException
     {
        InputStream is = new BufferedInputStream(new FileInputStream(filename));
        try
        {
            byte[] c = new byte[1024];
            int count = 0;
            int readChars = 0;
            boolean empty = true;
            while ((readChars = is.read(c)) != -1)
            {
                empty = false;
                for (int i = 0; i < readChars; ++i)
                {
                    if (c[i] == 'n')
                        ++count;
                }
            }
            return (count == 0 && !empty) ? 1 : count;
        }
        finally
        {
            is.close();
        }
    }

得到解决方案尝试下面的代码,它将打印所有多行注释以及文件中找到的多行注释的总行数。

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.MappedByteBuffer;
    import java.nio.channels.FileChannel;
    import java.nio.charset.Charset;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
public class LinesOfCode {
    public static void main(String[] args) {
        try {
            String s = readFile("D:\src\SampleClass.java");
            Pattern p = Pattern.compile("/\*[\s\S]*?\*/");
            Matcher m = p.matcher(s);
            int total = 0;
            while (m.find()) {
                String lines[] = m.group(0).split("n");
                for (String string : lines) {
                    System.out.println(string);
                    total++;
                }
            }
            System.out.println("Total line for comments = " + total);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private static String readFile(String path) throws IOException {
        FileInputStream stream = new FileInputStream(new File(path));
        try {
            FileChannel fc = stream.getChannel();
            MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0,
                    fc.size());
            /* Instead of using default, pass in a decoder. */
            return Charset.defaultCharset().decode(bb).toString();
        } finally {
            stream.close();
        }
    }
}

http://ostermiller.org/findcomment.html查看此链接,它将对您有更多帮助。并使用此表达式 => (/*([^]|[\r]|(*+([^/]|[\r])))*+/)|(//.)您可以计算单行和多行的评论!

相关内容

  • 没有找到相关文章

最新更新