update appendix
This commit is contained in:
parent
f5557daee5
commit
fdd44bd5d0
|
|
@ -15,4 +15,6 @@
|
|||
* title_sha: 文章标题的md5唯一标识字符串
|
||||
* title_raw: 文章原标题
|
||||
* class_name: 文章所属类别名称
|
||||
4. class_topic_relation_tree.html # 子研究领域类别与主题对应关系(需要本地下载后用浏览器打开查看)
|
||||
4. class_topic_relation_tree.html # 子研究领域类别与主题对应关系(需要本地下载后用浏览器打开查看)
|
||||
5. overall_hotness_change_trend.html # 代码克隆领域研究热度随时间变化情况
|
||||
6. sub-fields_hotness_change_trend.html # 代码克隆各子研究领域热度随时间变化情况
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -174,14 +174,17 @@
|
|||
"146" "application porting" "应用程序的移植,利用代码克隆检测的方法,将程序移植到新的环境中" "2" "other fields based on clone detection technique"
|
||||
"147" "legacy software reuse" "旧版软件重用方法模型,利用代码克隆检测技术,对之前的软件进行复用" "2" "other fields based on clone detection technique"
|
||||
"148" "clone avoidance" "有文章通过copy-paste-modify的方法实现为ide的插件,让人在编程的时候就进行修改" "2" "other fields based on clone detection technique"
|
||||
"149" "survey and tutorial" "1"
|
||||
"150" "technical report" "1. 是对之前相关文章的总结性分析研究
|
||||
"149" "repackage application detection" "利用代码克隆检测技术对重新打包的软件应用进行检测" "2" "other fields based on clone detection technique"
|
||||
"150" "reprogramming based on code clone" "基于代码克隆方法的重编码方法" "2" "other fields based on clone detection technique"
|
||||
"151" "copyright infringement detection" "基于代码克隆检测方法的软件版权侵权检测" "2" "other fields based on clone detection technique"
|
||||
"152" "survey and tutorial" "1"
|
||||
"153" "technical report" "1. 是对之前相关文章的总结性分析研究
|
||||
2. 不是对克隆检测工具的对比研究(这一部分属于analysis based on technique)
|
||||
3. 没有严格遵循文献综述的基本规范和要求,并且自己没有声明是文献综述" "2" "survey and tutorial"
|
||||
"151" "paper review" "the literature review for code clone" "3" "technical report"
|
||||
"152" "literature review" "1. 文献综述的文章
|
||||
"154" "paper review" "the literature review for code clone" "3" "technical report"
|
||||
"155" "literature review" "1. 文献综述的文章
|
||||
2. 提示:严格遵循文献综述的流程 或 在标题等地方明确描述该文章为文献综述(literature review)
|
||||
3. 包括工具类、克隆可视化、克隆演化、克隆重构、克隆管理、介绍抄袭检测中存在的问题" "2" "survey and tutorial"
|
||||
"153" "clone visualization" "1. 文章提到了自己创建的代码克隆相关可视化技术
|
||||
"156" "clone visualization" "1. 文章提到了自己创建的代码克隆相关可视化技术
|
||||
2. 提示:这里的可视化是文章的主要贡献,该可视化工具或技术可能解决不同的问题,包括:代码克隆演化分析、代码克隆重构等。但文章的主要贡献还是仅限于可视化工具而已
|
||||
3. 包括:用户关系的use case是什么并如何可视化这些use case" "1"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,149 @@
|
|||
<!--
|
||||
THIS EXAMPLE WAS DOWNLOADED FROM https://echarts.apache.org/examples/zh/editor.html?c=custom-bar-trend
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 100%"></div>
|
||||
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
|
||||
<!-- Uncomment this line if you want to dataTool extension
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/dataTool.min.js"></script>
|
||||
-->
|
||||
<!-- Uncomment this line if you want to use gl extension
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl@2/dist/echarts-gl.min.js"></script>
|
||||
-->
|
||||
<!-- Uncomment this line if you want to echarts-stat extension
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js"></script>
|
||||
-->
|
||||
<!-- Uncomment this line if you want to use map
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/china.js"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/world.js"></script>
|
||||
-->
|
||||
<!-- Uncomment these two lines if you want to use bmap extension
|
||||
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/bmap.min.js"></script>
|
||||
-->
|
||||
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom);
|
||||
var app = {};
|
||||
|
||||
var option;
|
||||
|
||||
|
||||
|
||||
var yearCount = 10;
|
||||
var categoryCount = 1;
|
||||
|
||||
var xAxisData = ["All"];
|
||||
var customData = [];
|
||||
var legendData = ["trend", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020"];
|
||||
var dataList = [];
|
||||
|
||||
dataList.push([97])
|
||||
dataList.push([158])
|
||||
dataList.push([146])
|
||||
dataList.push([159])
|
||||
dataList.push([131])
|
||||
dataList.push([144])
|
||||
dataList.push([141])
|
||||
dataList.push([113])
|
||||
dataList.push([122])
|
||||
dataList.push([83])
|
||||
|
||||
customData.push(['All', 97, 158, 146, 159, 131, 144, 141, 113, 122, 83])
|
||||
|
||||
var encodeY = [1,2,3,4,5,6,7,8,9,10];
|
||||
|
||||
|
||||
function renderItem(params, api) {
|
||||
var xValue = api.value(0);
|
||||
var currentSeriesIndices = api.currentSeriesIndices();
|
||||
var barLayout = api.barLayout({
|
||||
barGap: '30%', barCategoryGap: '20%', count: currentSeriesIndices.length - 1
|
||||
});
|
||||
|
||||
var points = [];
|
||||
for (var i = 0; i < currentSeriesIndices.length; i++) {
|
||||
var seriesIndex = currentSeriesIndices[i];
|
||||
if (seriesIndex !== params.seriesIndex) {
|
||||
var point = api.coord([xValue, api.value(seriesIndex)]);
|
||||
point[0] += barLayout[i - 1].offsetCenter;
|
||||
point[1] -= 20;
|
||||
points.push(point);
|
||||
}
|
||||
}
|
||||
var style = api.style({
|
||||
stroke: api.visual('color'),
|
||||
fill: null
|
||||
});
|
||||
|
||||
return {
|
||||
type: 'polyline',
|
||||
shape: {
|
||||
points: points
|
||||
},
|
||||
style: style
|
||||
};
|
||||
}
|
||||
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: legendData
|
||||
},
|
||||
dataZoom: [{
|
||||
show: false,
|
||||
type: 'slider',
|
||||
start: 50,
|
||||
end: 70
|
||||
}, {
|
||||
type: 'inside',
|
||||
start: 50,
|
||||
end: 70
|
||||
}],
|
||||
xAxis: {
|
||||
data: xAxisData
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
type: 'custom',
|
||||
name: 'trend',
|
||||
renderItem: renderItem,
|
||||
itemStyle: {
|
||||
borderWidth: 2
|
||||
},
|
||||
encode: {
|
||||
x: 0,
|
||||
y: encodeY
|
||||
},
|
||||
data: customData,
|
||||
z: 100
|
||||
}].concat(dataList.map(function (data, index) {
|
||||
return {
|
||||
type: 'bar',
|
||||
animation: false,
|
||||
name: legendData[index + 1],
|
||||
itemStyle: {
|
||||
opacity: 0.5
|
||||
},
|
||||
data: data
|
||||
};
|
||||
}))
|
||||
};
|
||||
|
||||
if (option && typeof option === 'object') {
|
||||
myChart.setOption(option);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
<!--
|
||||
THIS EXAMPLE WAS DOWNLOADED FROM https://echarts.apache.org/examples/zh/editor.html?c=custom-bar-trend
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 100%"></div>
|
||||
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
|
||||
<!-- Uncomment this line if you want to dataTool extension
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/dataTool.min.js"></script>
|
||||
-->
|
||||
<!-- Uncomment this line if you want to use gl extension
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl@2/dist/echarts-gl.min.js"></script>
|
||||
-->
|
||||
<!-- Uncomment this line if you want to echarts-stat extension
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js"></script>
|
||||
-->
|
||||
<!-- Uncomment this line if you want to use map
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/china.js"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/world.js"></script>
|
||||
-->
|
||||
<!-- Uncomment these two lines if you want to use bmap extension
|
||||
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/bmap.min.js"></script>
|
||||
-->
|
||||
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom);
|
||||
var app = {};
|
||||
|
||||
var option;
|
||||
|
||||
|
||||
|
||||
var yearCount = 10;
|
||||
var categoryCount = 10;
|
||||
|
||||
var xAxisData = ["clone detection technique", "clone analysis", "clone evolution", "clone refactoring", "other fields", "survey and tutorial", "clone visualization", "clone evaluation", "benchmark", "clone management"];
|
||||
var customData = [];
|
||||
var legendData = ["trend", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020"];
|
||||
var encodeY = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
var dataList = [];
|
||||
|
||||
dataList.push([46, 23, 13, 8, 7, 4, 5, 0, 0, 2])
|
||||
dataList.push([90, 27, 23, 10, 15, 6, 6, 0, 1, 1])
|
||||
dataList.push([80, 20, 23, 21, 12, 7, 3, 3, 1, 2])
|
||||
dataList.push([82, 26, 20, 20, 8, 13, 7, 4, 4, 2])
|
||||
dataList.push([89, 13, 8, 11, 9, 11, 7, 5, 3, 2])
|
||||
dataList.push([82, 19, 11, 13, 17, 14, 2, 5, 2, 1])
|
||||
dataList.push([79, 25, 20, 9, 8, 5, 6, 1, 3, 1])
|
||||
dataList.push([74, 17, 12, 8, 8, 8, 2, 2, 3, 1])
|
||||
dataList.push([78, 14, 12, 5, 7, 11, 7, 6, 2, 0])
|
||||
dataList.push([52, 12, 5, 5, 2, 8, 7, 2, 2, 2])
|
||||
|
||||
customData.push(['clone detection technique', 46, 90, 80, 82, 89, 82, 79, 74, 78, 52])
|
||||
customData.push(['clone analysis', 23, 27, 20, 26, 13, 19, 25, 17, 14, 12])
|
||||
customData.push(['clone evolution', 13, 23, 23, 20, 8, 11, 20, 12, 12, 5])
|
||||
customData.push(['clone refactoring', 8, 10, 21, 20, 11, 13, 9, 8, 5, 5])
|
||||
customData.push(['other fields', 7, 15, 12, 8, 9, 17, 8, 8, 7, 2])
|
||||
customData.push(['survey and tutorial', 4, 6, 7, 13, 11, 14, 5, 8, 11, 8])
|
||||
customData.push(['clone visualization', 5, 6, 3, 7, 7, 2, 6, 2, 7, 7])
|
||||
customData.push(['clone evaluation', 0, 0, 3, 4, 5, 5, 1, 2, 6, 2])
|
||||
customData.push(['benchmark', 0, 1, 1, 4, 3, 2, 3, 3, 2, 2])
|
||||
customData.push(['clone management', 2, 1, 2, 2, 2, 1, 1, 1, 0, 2])
|
||||
|
||||
function renderItem(params, api) {
|
||||
var xValue = api.value(0);
|
||||
var currentSeriesIndices = api.currentSeriesIndices();
|
||||
var barLayout = api.barLayout({
|
||||
barGap: '30%', barCategoryGap: '20%', count: currentSeriesIndices.length - 1
|
||||
});
|
||||
|
||||
var points = [];
|
||||
for (var i = 0; i < currentSeriesIndices.length; i++) {
|
||||
var seriesIndex = currentSeriesIndices[i];
|
||||
if (seriesIndex !== params.seriesIndex) {
|
||||
var point = api.coord([xValue, api.value(seriesIndex)]);
|
||||
point[0] += barLayout[i - 1].offsetCenter;
|
||||
point[1] -= 20;
|
||||
points.push(point);
|
||||
}
|
||||
}
|
||||
var style = api.style({
|
||||
stroke: api.visual('color'),
|
||||
fill: null
|
||||
});
|
||||
|
||||
return {
|
||||
type: 'polyline',
|
||||
shape: {
|
||||
points: points
|
||||
},
|
||||
style: style
|
||||
};
|
||||
}
|
||||
|
||||
option = {
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: legendData
|
||||
},
|
||||
dataZoom: [{
|
||||
show: false,
|
||||
type: 'slider',
|
||||
start: 50,
|
||||
end: 70
|
||||
}, {
|
||||
type: 'inside',
|
||||
start: 50,
|
||||
end: 70
|
||||
}],
|
||||
xAxis: {
|
||||
show: true,
|
||||
data: xAxisData,
|
||||
axisLabel: {
|
||||
interval: 0
|
||||
},
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
type: 'custom',
|
||||
name: 'trend',
|
||||
renderItem: renderItem,
|
||||
itemStyle: {
|
||||
borderWidth: 2
|
||||
},
|
||||
encode: {
|
||||
x: 0,
|
||||
y: encodeY
|
||||
},
|
||||
data: customData,
|
||||
z: 100
|
||||
}].concat(dataList.map(function (data, index) {
|
||||
return {
|
||||
type: 'bar',
|
||||
animation: false,
|
||||
name: legendData[index + 1],
|
||||
itemStyle: {
|
||||
opacity: 0.5
|
||||
},
|
||||
data: data
|
||||
};
|
||||
}))
|
||||
};
|
||||
|
||||
if (option && typeof option === 'object') {
|
||||
myChart.setOption(option);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
BIN
upsetplot.png
BIN
upsetplot.png
Binary file not shown.
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
Loading…
Reference in New Issue