package org;
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class SrcAnalyze {
private String srcDir;
private HashSet allAPI;
private HashSet inAPI;
private Pattern pt;
public SrcAnalyze(String dir){
srcDir = dir;
allAPI = new HashSet(1000);
inAPI = new HashSet(1000);
//抽取C++的库函数调用
pt = Pattern.compile("(\b+)(\w+)\([^\)]*\)(\s*(\{)|[^\{])");
}
public void extract() {
Date start = new Date();
long startTime = start.getTime();
extDir(srcDir);
for (Object hs : inAPI) {
if (allAPI.contains(hs)) {
allAPI.remove(hs);
}
}
Date end = new Date();
long endTime = end.getTime();
//计算程序运行时间
System.out.println("Time: " + (endTime - startTime) + "ms");
}
//遍历指定目录(包括子文件夹)
private void extDir(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles();
if (files == null)
return;
for (File fl : files) {
if (fl.isDirectory()) {
extDir(fl.getAbsolutePath());
} else {
String strFileName = fl.getAbsolutePath();
if (strFileName.matches("^.+\.([cChH]|(cpp))$"))
readFile(strFileName);
}
}
}
private void readFile(String filename){
try {
BufferedReader in = new BufferedReader(new FileReader(filename));
String s = null;
StringBuffer tmp = new StringBuffer("");
//删除所有的注释(单行的双行的)
while ((s = in.readLine()) != null) {
if (!(s.matches("^\s*/\*.+$"))) {
// get rid of comment like "//..."(Single Line)
tmp.append(s.replaceAll(""[^"]*"", "").replaceAll(
"//.+$", ""));
} else {
// get rid of comment like "/*...*/"(Multi-Lines)
if (!(s.matches("^.+\*/$"))) {
while ((s = in.readLine()) != null) {
if (s.matches("^.+\*/$"))
break;
}
}
}
}
in.close();
//抽取库函数调用
extMethod(tmp);
} catch (IOException e) {
System.out.println(e.toString());
}
}
//抽取库函数调用
private void extMethod(StringBuffer src) {
int i = 0, j = 0;
String tmp;
// internal API
Matcher m = pt.matcher(src);
while (m.find()) {
tmp = m.group(2);
if (!tmp.equals("if") && !tmp.equals("for") && !tmp.equals("while")
&& !tmp.equals("switch") && !tmp.equals("return")) {
allAPI.add(tmp);
if (m.group(4) != null)
inAPI.add(tmp);
}
}
}
public void print() {
System.out.println("+++++++++++++++++++++++++++++++++++++++");
Object[] allAPI_List = allAPI.toArray();
Arrays.sort(allAPI_List);
for (Object all : allAPI_List)
System.out.println(all);
System.out.println("+++++++++++++++++++++++++++++++++++++++");
}
public static void main(String[] args) {
SrcAnalyze test = new SrcAnalyze("D:\Test");
test.extract();
test.print();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
jsp实现视频播放.zip (80个子文件)
playerweb
src
org
SrcAnalyze.java 4KB
.project 1KB
WebRoot
images
tkb_bk_m_macos.jpg 22KB
changewnd_on.JPG 801B
back_1.jpg 23KB
volume_1.jpg 22KB
volume_img.JPG 18KB
zthf3.jpg 23KB
stop_3.jpg 23KB
indexgoto1.JPG 19KB
pause_3.jpg 23KB
tkb_cur_macos.jpg 22KB
trackbar_bkleft.jpg 21KB
tzhf3.jpg 23KB
tkb_bk_r_macos.jpg 21KB
bdlz3.jpg 23KB
bdhf1.jpg 24KB
play_1.jpg 23KB
cif.JPG 13KB
tkb_bk_l_macos.jpg 21KB
pause_2.jpg 23KB
back_2.jpg 23KB
indexmid.jpg 22KB
play_3.jpg 23KB
indexgoto2.jpg 21KB
tzlz2.jpg 24KB
forward_2.jpg 23KB
tzlz1.jpg 24KB
trackbar_back.JPG 856B
zthf2.jpg 24KB
bdhf3.jpg 23KB
bdlz2.jpg 24KB
zthf1.jpg 24KB
bk_on.jpg 23KB
changewnd_down.JPG 800B
play_2.jpg 23KB
trackbar_bkright.jpg 21KB
indexright.jpg 22KB
indexgoto.jpg 3KB
trackbar_back2.JPG 2KB
tzlz3.jpg 23KB
qcif.JPG 3KB
changewnd.JPG 766B
stop_1.jpg 23KB
bk_nor.jpg 23KB
tzhf1.jpg 24KB
trackbar_cusor.JPG 798B
bdhf2.jpg 24KB
pause_1.jpg 23KB
forward_1.jpg 23KB
stop_2.jpg 23KB
bdlz1.jpg 24KB
tzhf2.jpg 24KB
indexleft.jpg 22KB
back_3.jpg 23KB
forward_3.jpg 23KB
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 286B
classes
org
SrcAnalyze.class 3KB
lib
struts-legacy.jar 10KB
commons-beanutils.jar 116KB
commons-collections.jar 161KB
jakarta-oro.jar 64KB
standard.jar 384KB
commons-validator.jar 46KB
commons-fileupload.jar 22KB
jstl.jar 20KB
commons-logging.jar 31KB
mysql-connector-java-5.1.2-beta-bin.jar 622KB
struts.jar 486KB
commons-digester.jar 107KB
commons-lang.jar 62KB
test
yyplayer.exe 2.5MB
js
form.js 19KB
trackbar.js 7KB
threeplayer
test.jsp 206B
threeplay.jsp 7KB
threetest.jsp 18KB
.mymetadata 298B
.classpath 1KB
.myeclipse
共 80 条
- 1
资源评论
- 紫轩De2017-04-20不怎么样,浪费积分,不值得。
- 橹舟2017-11-22还可以,值得一试
豁然开朗No1
- 粉丝: 28
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功