[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r13446 - gnunet/src/monkey/seaspider/org/gnunet/seaspider
From: |
gnunet |
Subject: |
[GNUnet-SVN] r13446 - gnunet/src/monkey/seaspider/org/gnunet/seaspider |
Date: |
Thu, 28 Oct 2010 18:18:41 +0200 |
Author: safey
Date: 2010-10-28 18:18:41 +0200 (Thu, 28 Oct 2010)
New Revision: 13446
Modified:
gnunet/src/monkey/seaspider/org/gnunet/seaspider/ExpressionDatabaseHandler.java
gnunet/src/monkey/seaspider/org/gnunet/seaspider/Seaspider.java
Log:
Seaspider accepts any combination of source files, source directories.
One of the arguments should be the path of the Expressions Database file (a .db
file)
Modified:
gnunet/src/monkey/seaspider/org/gnunet/seaspider/ExpressionDatabaseHandler.java
===================================================================
---
gnunet/src/monkey/seaspider/org/gnunet/seaspider/ExpressionDatabaseHandler.java
2010-10-28 14:08:22 UTC (rev 13445)
+++
gnunet/src/monkey/seaspider/org/gnunet/seaspider/ExpressionDatabaseHandler.java
2010-10-28 16:18:41 UTC (rev 13446)
@@ -21,7 +21,7 @@
"file_name TEXT NOT NULL , expr_syntax TEXT NOT NULL ," +
" start_lineno INT, end_lineno INT)";
- File dbFile = new File(databasePath + "/GNUnetExpressions.db");
+ File dbFile = new File(databasePath);
dbFile.delete();/* Delete it if already existent */
/* Create Expressions database */
Modified: gnunet/src/monkey/seaspider/org/gnunet/seaspider/Seaspider.java
===================================================================
--- gnunet/src/monkey/seaspider/org/gnunet/seaspider/Seaspider.java
2010-10-28 14:08:22 UTC (rev 13445)
+++ gnunet/src/monkey/seaspider/org/gnunet/seaspider/Seaspider.java
2010-10-28 16:18:41 UTC (rev 13446)
@@ -1,9 +1,9 @@
package org.gnunet.seaspider;
import java.io.File;
-import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
import org.gnunet.seaspider.parser.CParser;
import org.gnunet.seaspider.parser.ParseException;
@@ -12,87 +12,123 @@
public class Seaspider {
- static final boolean DEBUG = false;
-
+ private static final boolean DEBUG = true;
+ private static CParser parser = null;
+ private static boolean isFirstFile = true;
+ private static int successCount = 0;
+ private static int failureCount = 0;
+ private static FilenameFilter filter = new FilenameFilter() {
+ public boolean accept(File dir, String fileName) {
+ File file = new File(dir.getPath() + "/" + fileName);
+ if ((file.isDirectory() && !fileName.startsWith("."))
|| (fileName.endsWith(".c") && !fileName.startsWith("test_")))
+ /* directories like .svn are of no interest */
+ return true;
+ return false;
+ }
+ };
+
+
+ private static void doParseFile(String filePath)
+ {
+ try {
+ if (isFirstFile) {
+ parser = new CParser(new FileInputStream(filePath));
+ isFirstFile = false;
+ }
+ else
+ parser.ReInit(new FileInputStream(filePath));
+ }
+ catch (FileNotFoundException e) {
+ /* This should never happen */
+ System.err.println("File not found!");
+ e.printStackTrace();
+ System.exit(1);
+ }
+ try {
+ System.out.println("Parsing file: " + filePath);
+ Node root = parser.TranslationUnit();
+ root.accept(new ExpressionExtractorVisitor(filePath));
+ System.out.println("File " + filePath + " parsed
successfully.");
+ successCount++;
+ }
+ catch (ParseException e) {
+ System.out.println("Encountered errors during parsing file " +
filePath);
+ failureCount++;
+ if (DEBUG)
+ e.printStackTrace();
+ } catch (TokenMgrError e) {
+ System.err.println("Encountered errors during parsing
file " + filePath + ":" + e.getMessage());
+ failureCount++;
+ if (DEBUG)
+ e.printStackTrace();
+ }
+ }
+
+
+ private static void parseRecursively(String dirPath)
+ {
+ File dir = new File(dirPath);
+
+ if (!dir.isDirectory()) {
+ if (dirPath.endsWith(".c")) {
+ doParseFile(dirPath);
+ return;
+ } else /* Probably the Database file */
+ return;
+ }
+
+ System.out.println("Reading from: " + dirPath + " source
directory...");
+ String[] dirContents = dir.list(filter);/* Only directories and
.c files */
+ for (int i = 0; i < dirContents.length; i++) {
+ String fullPath = dirPath + "/" + dirContents[i];
+ File file = new File(fullPath);
+
+ if (file.isDirectory())
+ parseRecursively(fullPath);
+ else
+ doParseFile(fullPath); /* Path is for a file */
+ }
+ }
+
public static void main(String args[])
{
- CParser parser = null;
- boolean isFirstFile = true;
- int fileNotFoundCount = 0;
- int successCount = 0;
- int failureCount = 0;
+ String dbFilePath = null;
- if (args.length != 2)
+ if (args.length < 2)
{
System.err.println("Invoke seaspider with database filename and source
path!");
System.exit(1);
}
System.out.println("Seaspider 0.0\n");
- System.out.println("Reading from " + args[1] + " source directory...");
- String gnunetSourcePath = args[1];
- /* Filtering out files */
- FileFilter filter = new FileFilter() {
- public boolean accept(File file) {
- return file.isDirectory();
- }
- };
- /* File filter to get only source files and no test cases */
- FileFilter sourceFilter = new FileFilter() {
- public boolean accept(File file) {
- String fileName = file.getName();
- return fileName.endsWith(".c") && !
fileName.startsWith("test_");
- }
- };
-
- /* Create the Expressions Database */
- ExpressionDatabaseHandler.createExpressionDatabase(args[0]);
-
- File[] dirArr = (new File(gnunetSourcePath)).listFiles(filter);
- for (int i = 0; i < dirArr.length; i++) {
- File dir = dirArr[i];
- File[] fileArr = dir.listFiles(sourceFilter);
- for (int j = 0; j < fileArr.length; j++) {
- try {
- if (isFirstFile) {
- parser = new CParser(new
FileInputStream(fileArr[j].getPath()));
- isFirstFile = false;
- }
- else
- parser.ReInit(new
FileInputStream(fileArr[j].getPath()));
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].endsWith(".db"))
+ dbFilePath = args[i];
+ else {
+ /* Should be a valid path for a file or a directory */
+ File file = new File(args[i]);
+ if (!file.exists()) {
+ System.err.println("\"" + args[i]+ "\" is an invalid
file or directory location");
+ System.exit(1);
}
- catch (FileNotFoundException e) {
- fileNotFoundCount++;
- e.printStackTrace();
- }
- try {
- Node root = parser.TranslationUnit();
- root.accept(new
ExpressionExtractorVisitor(fileArr[j].getName()));
- System.out.println("File " + dir + "/" + fileArr[j].getName()
+ " parsed successfully.");
- successCount++;
- }
- catch (ParseException e) {
- System.err.println("Encountered errors during parsing file " +
fileArr[j].getName() + ":" + e.getMessage());
- failureCount++;
- if (DEBUG)
- e.printStackTrace();
- } catch (TokenMgrError e)
- {
- System.err.println("Encountered errors during parsing file " +
fileArr[j].getName() + ":" + e.getMessage());
- failureCount++;
- if (DEBUG)
- e.printStackTrace();
- }
}
}
+ if (null == dbFilePath) {
+ System.err.println("Missing database file path");
+ System.exit(1);
+ }
+ /* Create the Expressions Database */
+ ExpressionDatabaseHandler.createExpressionDatabase(dbFilePath);
+
+ for (int i = 0; i < args.length; i++)
+ parseRecursively(args[i]);
+
/* We're done with the Expression Database, close it */
ExpressionDatabaseHandler.closeDatabase();
System.out.println(successCount + " parsed successfully.");
System.out.println("Failed to parse " + failureCount + " files.");
- System.out.println(fileNotFoundCount + " files not found.");
}
-
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r13446 - gnunet/src/monkey/seaspider/org/gnunet/seaspider,
gnunet <=