
论文点评
文章平均质量分 81
蛐蛐蛐
个人主页:https://quyu.github.io/
展开
-
Python报No such file or directory: ‘science‘的解决方法
像在我的电脑上的路径是:/home/quyu/anaconda3/envs/TranAD/lib/python3.8/site-packages/matplotlib/mpl-data/fonts,把下载的字体更新进去。然后删掉/home/quyu/.cache/matplotlib这个文件夹就可以了。把这几个问题解决后,就可以输出论文里类似的结果图了(虽然我还是不太相信这个论文的代码和结论)。还是想看看这篇论文的可视化结果。原创 2024-02-08 00:54:55 · 1625 阅读 · 4 评论 -
怎样使用Joern生成Program Dependence Graph并和源码中的行号对应起来
这个问题我已经想搞清楚很久了,不得不说,很多开发工具(或者说开源项目)的人,脑子都是一团浆糊,虽然标榜自己可用于科研,但是完全不知道科研人员的需求在哪,写出来的文档也是乱七八糟。按照以前的Joern的文档,我根本没搞清楚怎么生成PDG,现在算是清楚了:https://docs.joern.io/exporting/我们以一个别人论文里的例子来说明,例如我要生成下面这个Example.c文件的PDG:int main(int argc, char **argv){ char *item原创 2021-05-19 01:45:04 · 4768 阅读 · 23 评论 -
怎样在BinaryNinja中查看Vulnerable的function(以HeartBleed CVE-2014-0160为例)
这篇博客没有什么技术含量,只是我对Binary Analysis的很多过程不熟悉,简单记录一下。我们以OpenSSL为例,这个漏洞的信息,可以参考这里的介绍:https://blog.youkuaiyun.com/javajiawei/article/details/82429886 以及:http://blog.chinaunix.net/uid-26275986-id-4214113.html首先在这里:https://ftp.openssl.org/source/old/1.0.1/下载openssl原创 2021-04-07 03:36:13 · 557 阅读 · 0 评论 -
如何对C++或Java源代码进行细粒度normalization
可能标题这样讲还是有些让人糊涂,具体而言,我希望实现下面这篇论文做的事情:Kim, Seulbae, Seunghoon Woo, Heejo Lee, and Hakjoo Oh. "Vuddy: A scalable approach for vulnerable code clone discovery." In2017 IEEE Symposium on Security and Privacy (SP), pp. 595-614. IEEE, 2017.这篇论文是怎么做normaliza.原创 2021-04-01 03:04:34 · 439 阅读 · 0 评论 -
AFL的安装和使用(二)——测试FFmpeg
这篇博客紧跟上一篇的内容:https://blog.youkuaiyun.com/qysh123/article/details/114792891参考别人的教程:https://blog.youkuaiyun.com/salmonwilliam/article/details/112846864https://blog.youkuaiyun.com/qq_36711003/article/details/107016408我们如果要测试FFmpeg,可以运行如下命令:wget https://ffmpeg.org/rele原创 2021-03-14 18:18:31 · 4279 阅读 · 1 评论 -
如何使用Understand Perl API对BigCloneBench中的Java Method的起始、终止行进行提取
这个标题好长……,接上篇博客的内容,上篇博客中讲到,IJaDataset里面的源代码都是Java文件,但是数据库中的记录都是Method级别的,这时候就需要根据Java源文件提取出每个Method,并且确定每个Method的“STARTLINE”和“ENDLINE”,本来觉得用Understand应该很好实现,谁知道也试了好几种方法。最简单的想法,看看每个Method的entity(Perl API中的ent)是否有这个属性,可惜没有。又仔细看了看API,看到这里:http://documentat原创 2021-01-14 14:44:38 · 676 阅读 · 0 评论 -
代码克隆检测(Code Clone Detection)数据集BigCloneBench最新版的使用方法
代码克隆检测(Code Clone Detection)是软件工程领域的一个重要方向,每年都有很多论文,其中很多论文都用到了BigCloneBench,这里简单总结一下这个数据集的使用,不得不吐槽一点:学术界的数据集和工具,易用性都太差了,发再多paper有啥用呢?只是在自己小圈子里自娱自乐,完全没有实际的impact和意义。如果我们在google搜索bigclonebench,可以看到排名第一的就是一个GitHub上的repo:https://github.com/clonebench/BigClon原创 2021-01-08 14:33:31 · 7893 阅读 · 22 评论 -
怎样使用PMD检测Java代码中Code Smell
关于Code Smell的定义,我就不介绍,大家可以自己去找。我做这个纯粹是为了响应审稿人的要求,不得不说,现在有些审稿人真是太自以为是,傲慢,固执,得罪不得。PMD:https://github.com/pmd/pmd是非常好的Java静态分析工具,例如我们在这里下载:https://github.com/pmd/pmd/releases其最新的bin文件夹:pmd-bin-6.29.0.zip。解压之后可以顺便把其bin目录加入Path环境变量(我这里用的是Win10)。那么怎么通过命...原创 2020-11-22 13:25:00 · 585 阅读 · 0 评论 -
怎样在Word和LaTeX中打出黑底的圆圈数字?
这个需求其实也是客观存在的,如果图中用黑底的圆圈数字表示步骤,往往会更醒目一些,今天尝试了一下怎么在Word和LaTeX中输入:对于Word 2016而言:插入——符号——其他符号——在“字体”中输入“Wingdings 2”并打回车——然后把滚动条向下拉一些就能看到黑底圆圈的数字0到10了另外,如果在“字体”中输入“Cambria”并敲回车——在“子集”中选择“带括号的字母数字”——就可以看到黑底的11到20以及0,但是没有1到9的,这个也太奇葩了吧。另外吐槽一句,Word这种特殊字符的输入和查找原创 2020-10-17 05:14:53 · 6864 阅读 · 0 评论 -
在Ubuntu 20.04中使用RA-SZZ等算法,以及Postgre数据库的基本设置和使用
如果大家作软件缺陷和漏洞一类的研究,免不了要和SZZ算法打交道,遗憾的是目前还没有一个完全靠谱的SZZ算法open source project。这里我想利用一下RA-SZZ作者提供的几个实现:https://github.com/danielcalencar/ma-szzhttps://github.com/danielcalencar/raszzprime我这里以MA-SZZ为例。打开项目主页后发现需要安装Postgre,呵呵呵。Ubuntu装postgre很方便,参考这里的文章:https原创 2020-09-21 15:06:49 · 549 阅读 · 1 评论 -
Git中AuthorDate和CommitDate的区别以及由此引起的JGit使用时造成的Bug
这个坑,多少让人觉得有点无语。其实很早就注意到,Git中一次Commit对应两个时间的,但是也没仔细看JGit中的时间对应的是哪个时间。这里我们以这个Repo为例:https://git-wip-us.apache.org/repos/asf/wicket.git对于这个Repo而言,如果我在命令行中输入:git show ca03c252b5745bdccfb7c8cdffcc705846593ec1那么将得到下面的一些输出:commit ca03c252b5745bdccfb7c8c原创 2020-07-27 07:11:54 · 2675 阅读 · 1 评论 -
AST快捷分析工具codesensor的使用方法总结
由于修改论文的需要(感觉审稿人太难被取悦了),在一篇TFS的论文里看到有介绍codesensor这个工具(奇怪TFS上竟然也能发软件分析和软件安全的文章):Liu, Shigang, Guanjun Lin, Qing-Long Han, Sheng Wen, Jun Zhang, and Yang Xiang. "DeepBalance: Deep-Learning and Fuzzy Oversampling for Vulnerability Detection."IEEE Transactio.原创 2020-05-28 07:51:26 · 2603 阅读 · 11 评论 -
用astminer生成code2vec输入数据格式的方法
code2vec是发表在POPL 2019上的论文:Alon, Uri, Meital Zilberstein, Omer Levy, and Eran Yahav. "code2vec: Learning distributed representations of code."Proceedings of the ACM on Programming Languages3, no. POPL (2019): 1-29.发表以来也确实受到了很多关注,例如ASE 2019上就至少有两篇论文做的是..原创 2020-05-24 08:33:25 · 2357 阅读 · 9 评论 -
如何运行Joern中的script
这篇博客接上一篇的内容,总结一下怎么运行Joern自带的一些示例性的script。按照这里的介绍:https://joern.io/docs/shell/,当我们在Joern的shell中用loadCpg("cpg.bin")这种方法加载Code Property Graph后,可以直接运行诸如:cpg.runScript("general/pdg.sc")这样的命令,来加载并运行脚...原创 2020-04-20 12:49:20 · 1112 阅读 · 1 评论 -
用Springer LaTeX模板时使用BibTeX遇到的问题和解决过程
这几天想投一篇Springer出版社的EMSE,这是我第一次投这个期刊(和很多大牛比不了啊),在这里:https://www.springer.com/journal/10664/submission-guidelines下载了其LaTeX模板后,发现要将参考文献写成已发表论文的格式,还有点工作量,这里简单记录一下:如果下载下来直接用BibTeX,会报:I found no \bibstyl...原创 2020-03-31 06:16:11 · 8512 阅读 · 2 评论 -
Matlab Plot画图时设置marker实心并且和线条一样颜色的方法
这个需求看起来很拗口,不过也是真实存在的。看到有些论文里将曲线的marker改成了实心,感觉在有些情况下曲线会更简洁清晰。另外关于颜色设置,由于目前matlab可以自己选择一些人类看起来舒服、区分度较高的颜色,我已经很久不自己指定曲线颜色了。搜了一下,发现并不是我一个人有标题中的需求,例如这里:https://www.mathworks.com/matlabcentral/answers/30...原创 2020-01-06 06:41:57 · 20822 阅读 · 2 评论 -
给LaTeX表格加脚注时的奇怪问题(使用PDFLaTeX)
这个问题真的很莫名其妙,简单记录一下:按照其他朋友的介绍,LaTeX中增加表格脚注实际上是很简单的,例如这里介绍的:https://www.jianshu.com/p/110714b2a535但我在使用的时候发现一个小问题,所以记录一下:如果我们在\end{tabular}后面紧跟着加上\begin{tablenotes},也就是说两者间没有空格的时候,原来居中的表格会稍微偏向左边,并...原创 2019-11-26 06:32:21 · 2539 阅读 · 0 评论 -
安卓恶意代码数据集(Android Malware and Benign apps)整理
因为最近想做一些简单的实验,而自己之前收集的数据找不着了,所以又看了看别人的推荐,发现ResearchGate上这个讨论里有些回答还是总结得很好的:https://www.researchgate.net/post/Where_can_I_get_Android_Malware_Samples例如有一位朋友总结到:Nowadays, we can find other projects...原创 2019-11-18 12:49:26 · 7367 阅读 · 5 评论 -
调试OpenNE的时候报:Attempted relative import in non-package
这两天做实验的时候,发现要调试OpenNE的代码(其实是我自己很粗心的问题,但是总得跟踪调试一下才能发现问题在哪)。从头开始叙述一下过程:因为已经在Python 2.7中以egg方式安装了OpenNE,如果调试的话,需要直接下载源码,解压之后进入其src目录,然后运行诸如(由于Eclipse里默认配置的是Python 3,为了避免别的麻烦,使用了命令行):python openne ...原创 2019-11-02 07:21:41 · 384 阅读 · 0 评论 -
使用Gensim时报“the array at index 0 has size 1024 and the array at index 1 has size 1023”(没有解决)
这里只是记录一下这个问题。最近又用Gensim+LSI做了一些分类的事情,但是发现如果将LSI中的topic number设置过高,则很有可能会报错,一些示例性的代码如下:dictionary = corpora.Dictionary(line.lower().split() for line in open(FILE_STRING))corpus = [dictionary.doc2bo...原创 2019-10-26 01:17:47 · 1802 阅读 · 3 评论 -
一种常见的Java编程错误:没有同时定义equals()和hashCode()方法
前段时间出差了十几天,所以博客更新得有点慢了。前几天看这篇论文:D. Hovemeyer and W. Pugh, "Finding bugs is easy," SIGPLAN Not., vol. 39, pp. 92-106, 2004. 介绍了Findbugs这种工具最初实现时能够检测的18种缺陷。一种有一种印象挺深的,这里总结一下:Core Java Volume 1这本原创 2012-05-06 21:45:33 · 843 阅读 · 0 评论 -
复杂网络中Ego Network(自我中心网络)部分指标的计算
由于科研需要,简单研究了一下自我中心网络中指标的计算方法,这里做一个简单的总结。关于Ego Network的概念,可以参考周涛老师的博客:http://blog.sciencenet.cn/blog-3075-1072943.html我需要在实验中对比10年前这篇ICSE文章中使用的指标:Zimmermann, Thomas, and Nachiappan Nagappan. "Predi...原创 2018-08-03 17:22:04 · 14467 阅读 · 0 评论 -
SKLearn和Weka中Random Forest对相同数据分类结果不一致的问题(没有完全解决)
这个问题真的很郁闷,我一直觉得SKLearn在输出的分类效果上比不上Weka,可是最近一个实验无奈必须要使用SKLearn。我选择一致的训练和测试数据,结果Weka和SKLearn的结果分别如下:Precision: 0.8070175438596491Recall: 0.7479674796747967F-measure: 0.7763713080168777AUC: 0.887843...原创 2018-09-25 17:05:52 · 2049 阅读 · 0 评论 -
SMOTE算法实现过程中应注意的一个问题
SMOTE是大家在机器学习任务中经常使用的处理非平衡数据的方法,其全称是Synthetic Minority Over-sampling Technique,论文的链接是:https://www.jair.org/index.php/jair/article/view/10302,其PDF版本的直接下载链接是:https://www.jair.org/index.php/jair/article/...原创 2018-09-21 22:28:14 · 4983 阅读 · 0 评论 -
准确获取Eclipse Foundation项目的Git链接和版本
接之前的一篇博客:https://blog.youkuaiyun.com/qysh123/article/details/78785146最近又需要用上面提的这篇论文中的一些数据,但是发现Eclipse Foundation的项目还真是难下载,所以简单总结一下。像之前说的,在这里:http://git.eclipse.org/c/ 可以看到其所有项目的列表,但是我今天尝试git clone的时候发现,很多...原创 2018-10-08 10:45:54 · 438 阅读 · 0 评论 -
Wilcoxon signed-rank test和Wilcoxon rank-sum test及其在SciPy中的使用注意事项
其实这个问题很多朋友都已经介绍得很清楚了,例如这里:https://blog.youkuaiyun.com/chikily_yongfeng/article/details/82255575,http://blog.sciencenet.cn/blog-306699-984510.html,https://blog.youkuaiyun.com/flyfrommath/article/details/75541607,h...原创 2018-10-16 01:03:23 · 14700 阅读 · 0 评论 -
IEEE Transactions投稿时的页数限制
这几天在忙一篇Trans的修改,记得之前看到过IEEE Transactions目前都有最多页数限制到18页的规定,但是投稿的时候半天找不到相关的要求,仔细找了一下,在这里:https://ieeecs-media.computer.org/assets/pdf/MOPC_policy.pdf,记录一下,方便相关的朋友们了解。2020年1月11日更新:注意到其中一句话:Regular pape...原创 2018-11-19 02:12:26 · 43227 阅读 · 10 评论 -
NetworkX中计算information centrality的方法
这个博客仅仅是为了防止忘记。networkx之前其实一直是没有专门information centrality之类的函数名的,关于这个Centrality指标可以查看这里:http://www.analytictech.com/ucinet/help/76wq.e.htm,不过注意到目前可能是为了防止歧义,NetworkX提供了两个不同的函数来同时实现information centrality的...原创 2018-12-05 00:57:02 · 2088 阅读 · 0 评论 -
Weka和SKLearn怎么输出对某一个instance分为某一类的概率
这个目标实际上很简单,这里记录一下。很多情况下, 我们不仅关心分类的二分类结果(0, 1或者yes, no),同时也关心分类器具体将某一个instance分为某一类的概率,在SKLearn中我们可以用类似这样的方法获得:predprob_auc=rf.predict_proba(data_test)[:, 1]具体大家可以参考这里:https://blog.youkuaiyun.com/u011...原创 2018-12-25 15:02:32 · 1594 阅读 · 0 评论 -
KL散度和交叉熵的关系总结(澄清花书上的论述和概念)
感觉花书这里写得很不清楚,所以简单总结一下:花书在3.50式中给出了KL散度的定义:这个定义是非常清楚的,但紧接着给出了交叉熵的式子:看到这里不禁想问,这是什么鬼?交叉熵的定义是这个?耐着性子往下看,才明白,实际上交叉熵的定义是:所以由第一个和第三个式子可知:由于KL散度中的前一部分−H(P)不变,故在优化过程中,只需要关注交叉熵就可以了。这样理解KL散度和交叉熵就...原创 2019-03-05 08:29:02 · 446 阅读 · 0 评论 -
将Gradle项目导入Eclipse的基本方法
这篇博客研究简单记录一下。像之前这篇博客中介绍的:https://blog.youkuaiyun.com/qysh123/article/details/89530106其中的Java项目是用Gradle进行管理的,我之前没用过,但是又想看看其Java部分的代码。参考这里的第一种方法导入:https://blog.youkuaiyun.com/w546097639/article/details/78654325,结...原创 2019-04-27 04:05:59 · 1976 阅读 · 0 评论 -
使用Understand将C++源代码处理为按空格分割的Token Stream(用Understand实现简单的词法分析功能)
这篇博客也就简单记录一下。这两天有这样一个需求,将一行C++源代码变成按空格输出的Token Stream,例如将这一行:ros::init(argc, argv);变成:ros :: init ( argc , argv ) ; 这个需求很简单,但是我尝试用了srcML和Antlr,都没有现成的实现,最后想到用Understand来实现,我之前也写过很多Understand相...原创 2019-05-04 01:25:53 · 862 阅读 · 0 评论 -
基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)
Seq2Seq是目前主流的深度学习翻译模型,在自然语言翻译,甚至跨模态知识映射方面都有不错的效果。在软件工程方面,近年来也得到了广泛的应用,例如:Jiang, Siyuan, Ameer Armaly, and Collin McMillan. "Automatically generating commit messages from diffs using neural machine t...原创 2019-06-08 08:43:17 · 2090 阅读 · 0 评论 -
基于PyTorch的Seq2Seq翻译模型详细注释介绍(二)
这篇博客并不准备做详细介绍,只是简单总结一下问题:https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html这里给出的Decoder Attention是有问题的,具体可以参看这里:https://zhuanlan.zhihu.com/p/68637282经过我尝试,发现在这里有两篇Tutor...原创 2019-07-15 07:28:35 · 887 阅读 · 0 评论 -
srcml在ubuntu上报:version `CURL_OPENSSL_3' not found的解决方法
由于项目需要,在一台ubuntu上使用GumTree:https://github.com/GumTreeDiff/gumtree由于GumTree需要使用srcML作为后端,所以在这里下载了其安装程序:https://www.srcml.org/#download直接运行后,运行GumTree的一些代码,结果GumTree报了异常,所以在终端下尝试直接运行:srcml,结果不出所料有...原创 2019-08-30 04:19:18 · 3633 阅读 · 0 评论 -
OpenNMT训练过程中的命令行输出信息解释
这个问题很简单,但是这么简单的问题,OpenNMT也能让人产生误解,也算是本事啦。我们在训练模型的时候,可以看到OpenNMT会不断生成类似:Step 50/400; acc:11.54; ppl:1714.07; xent:7.45; lr:1.00000; 662/656 tok/s; 86 sec这样的输出,分别代表什么含义呢?Acc还好理解,就是Accuracy的缩写,但是p...原创 2019-10-02 07:10:25 · 1760 阅读 · 4 评论 -
Random Forest(随机森林)在软件缺陷预测领域的应用及其特点
这篇博客也就简单总结一些基础知识。从我个人的经验和别人的论文来看,Random Forest是最适用于软件缺陷预测的机器学习算法。例如这篇文章:Osman, Haidar, Mohammad Ghafari, Oscar Nierstrasz, and Mircea Lungu. "An extensive analysis of efficient bug prediction config...原创 2019-10-09 05:46:15 · 1631 阅读 · 0 评论 -
两个被广泛使用的Model Checking工具
最近看论文的时候,发现和软件分析、测试及模型检验相关的论文,都会引用两个Model Checking工具,分别是:BLAST: http://mtc.epfl.ch/software-tools/blast/index-epfl.php/SLAM: http://research.microsoft.com/en-us/projects/slam/和这两个工具相关几篇主要论文,引用次数原创 2012-03-21 15:59:44 · 1577 阅读 · 0 评论