Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
Lab10
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
CP Lab Group
实验项目模板
Lab10
提交
4acedbd0
提交
4acedbd0
6月 28, 2019
创建
作者:
demo10
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify
上级
00e86379
流水线
#858
已失败 于阶段
用时 37 秒
变更
9
流水线
1
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
274 行增加
和
6 行删除
+274
-6
.gitlab-ci.yml
.gitlab-ci.yml
+69
-0
SymbolTable.cplproj
SymbolTable.cplproj
+8
-2
SymbolTable.h
SymbolTable.h
+5
-4
SymbolTable.puo
SymbolTable.puo
+0
-0
input1.txt
input1.txt
+21
-0
main.c
main.c
+106
-0
makefile
makefile
+21
-0
output1.txt
output1.txt
+22
-0
sonar-project.properties
sonar-project.properties
+22
-0
没有找到文件。
.gitlab-ci.yml
0 → 100644
浏览文件 @
4acedbd0
image
:
"
registry.cn-hangzhou.aliyuncs.com/engintime/ubuntu_16.04_program:latest"
stages
:
-
make
-
code-analysis
-
case1
variables
:
TEACHERCHECK_REPO
:
"
engintime/cp-lab/teachers-packet/Lab010.git"
.codecode-runner
:
&codecode-runner
tags
:
-
ubuntu-16.04
-
short-job
make
:
stage
:
make
<<
:
*codecode-runner
script
:
-
make
-
./app < input1.txt > user_output1.txt
-
execscore.sh 40
only
:
-
master
code-analysis
:
stage
:
code-analysis
<<
:
*codecode-runner
script
:
-
make
-
mkdir -p build
-
cppcheck -v --force --enable=all --xml -I./ ./ 2> ./build/cppcheck-report.xml
-
bash -c 'find ./ -regex ".*\.c\|.*\.h" | vera++ -S -s -d -c ./build/vera-report.xml'
-
valgrind --xml=yes --xml-file=./build/valgrind-report.xml ./app < input1.txt
-
sonar-scanner -Dsonar.projectKey=ProjectKey-$CI_PROJECT_ID -Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.links.homepage=$CI_PROJECT_URL -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_ID -Dsonar.gitlab.url=$CODECODE_PROTOCOL$CODECODE_DOMAIN
allow_failure
:
true
only
:
-
master
case1
:
stage
:
case1
<<
:
*codecode-runner
script
:
-
make
-
./app < input1.txt > user_output1.txt
-
diff output1.txt user_output1.txt -b -B -y -i --suppress-common-lines
-
execscore.sh 50
only
:
-
master
teacher-check1
:
stage
:
case1
<<
:
*codecode-runner
script
:
-
make
-
./app < input1.txt
-
git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${CI_PROJECT_FORKSOURCE} template
-
diff template/.gitlab-ci.yml .gitlab-ci.yml -b -B -y -i --suppress-common-lines
-
diff template/input1.txt input1.txt -b -B -y -i --suppress-common-lines
-
diff template/output1.txt output1.txt -b -B -y -i --suppress-common-lines
-
fileidentity.sh
-
git clone ${CODECODE_PROTOCOL}gitlab-ci-token:${CI_JOB_TOKEN}@${CODECODE_DOMAIN}/${TEACHERCHECK_REPO} teacher_check
-
./app < teacher_check/input1.txt > user_output1.txt
-
diff teacher_check/output1.txt user_output1.txt -b -B -y -i --suppress-common-lines
-
extracase.sh
only
:
-
master
when
:
manual
allow_failure
:
true
\ No newline at end of file
SymbolTable.cplproj
浏览文件 @
4acedbd0
...
...
@@ -4,7 +4,7 @@
<Configuration
Name=
"Debug"
>
<Tool
Name=
"PreBuildEventTool"
/>
<Tool
Name=
"CustomBuildTool"
/>
<Tool
Name=
"GCCCompilerTool"
PreprocessorDefinitions=
"_DEBUG"
GenerateDebugInformation=
"-1"
/>
<Tool
Name=
"GCCCompilerTool"
PreprocessorDefinitions=
"_DEBUG"
GenerateDebugInformation=
"-1"
AdditionalOptions=
"-std=c99"
/>
<Tool
Name=
"PreLinkEventTool"
/>
<Tool
Name=
"GCCLinkerTool"
AdditionalDependencies=
""$(CPLInstallDir)Dump\lib\SymbolTable_Demo.o""
/>
<Tool
Name=
"PostBuildEventTool"
/>
...
...
@@ -18,7 +18,7 @@
<Configuration
Name=
"Release"
>
<Tool
Name=
"PreBuildEventTool"
/>
<Tool
Name=
"CustomBuildTool"
/>
<Tool
Name=
"GCCCompilerTool"
PreprocessorDefinitions=
"NDEBUG"
/>
<Tool
Name=
"GCCCompilerTool"
PreprocessorDefinitions=
"NDEBUG"
AdditionalOptions=
"-std=c99"
/>
<Tool
Name=
"PreLinkEventTool"
/>
<Tool
Name=
"GCCLinkerTool"
/>
<Tool
Name=
"PostBuildEventTool"
/>
...
...
@@ -33,5 +33,11 @@
<File
RelativePath=
".\main.c"
>
</File>
</Filter>
<File
RelativePath=
".\input1.txt"
>
</File>
<File
RelativePath=
".\makefile"
>
</File>
<File
RelativePath=
".\output1.txt"
>
</File>
</Files>
</OSLProject>
SymbolTable.h
浏览文件 @
4acedbd0
#ifndef
_
SYMBOL_TABLE_H_
#define
_
SYMBOL_TABLE_H_
#ifndef SYMBOL_TABLE_H_
#define SYMBOL_TABLE_H_
//
...
...
@@ -51,7 +51,8 @@ void RefSymbol(const char* pSymbolName);
void
AddSymbol
(
const
char
*
pSymbolName
,
const
char
*
pSymbolType
);
int
Hush
(
const
char
*
pSymbolName
);
void
CreateSymbolTable
();
void
CreateSymbolTable_CI
();
void
OutputResult
();
//
// 在此声明全局变量
...
...
@@ -60,4 +61,4 @@ void CreateSymbolTable();
extern
SymboTable
*
pHead
;
extern
int
RefErrorCount
;
#endif //
_
SYMBOL_TABLE_H_
#endif // SYMBOL_TABLE_H_
SymbolTable.puo
浏览文件 @
4acedbd0
没有这种文件类型的预览
input1.txt
0 → 100644
浏览文件 @
4acedbd0
pushscope
i int
j int
f function
pushscope
i char
size int
temp char
pushscope
j char*
j long
j
i
f
size
new
popscope
j
popscope
popscope
\ No newline at end of file
main.c
浏览文件 @
4acedbd0
#include "SymbolTable.h"
#include <stdlib.h>
#include <string.h>
SymboTable
*
pHead
=
NULL
;
// 符号表链表的头指针
int
RefErrorCount
=
0
;
// 符号引用失败计数器
char
symbleTableContent
[
64
][
128
];
int
main
()
{
//
// 构造符号表
//
#ifdef CODECODE_CI
CreateSymbolTable_CI
();
#else
CreateSymbolTable
();
#endif
OutputResult
();
return
0
;
}
...
...
@@ -157,3 +166,100 @@ void CreateSymbolTable()
PopScope
();
}
/*
功能:
创建符号表(在执行流水线时调用)。
*/
void
CreateSymbolTable_CI
()
{
for
(
int
i
=
0
;
i
<
64
;
i
++
)
{
gets
(
symbleTableContent
[
i
]);
int
length
=
strlen
(
symbleTableContent
[
i
]);
if
(
length
==
0
)
{
break
;
}
if
(
strcmp
(
symbleTableContent
[
i
],
"pushscope"
)
==
0
)
{
PushScope
();
}
else
if
(
strcmp
(
symbleTableContent
[
i
],
"popscope"
)
==
0
)
{
PopScope
();
}
else
{
int
k
=
0
,
m
=
0
;
char
symbolAR
[
2
][
128
]
=
{
0
};
for
(
int
j
=
0
;
j
<
128
;
j
++
)
{
if
(
symbleTableContent
[
i
][
j
]
==
32
)
{
if
(
symbleTableContent
[
i
][
j
+
1
]
!=
32
&&
symbleTableContent
[
i
][
j
]
!=
'\0'
)
{
k
++
;
m
=
0
;
}
continue
;
}
if
(
symbleTableContent
[
i
][
j
]
==
'\0'
)
{
break
;
}
symbolAR
[
k
][
m
++
]
=
symbleTableContent
[
i
][
j
];
}
if
(
k
==
0
)
{
RefSymbol
(
symbolAR
[
0
]);
}
else
if
(
k
==
1
)
{
AddSymbol
(
symbolAR
[
0
],
symbolAR
[
1
]);
}
}
}
}
/*
功能:
输出符号表。
*/
void
OutputResult
()
{
printf
(
"RefErrorCount: %d
\n
"
,
RefErrorCount
);
printf
(
"
\n
index
\"
barrel
\"
ItemList(RefCount/ConflictCount)
\n
"
);
for
(
int
k
=
0
;
k
<
60
;
k
++
)
{
printf
(
"%c"
,
45
);
}
printf
(
"
\n
"
);
while
(
pHead
!=
NULL
)
{
printf
(
"SymbolTableInvalid(Invalid = %d)
\n
"
,
pHead
->
Invalid
);
for
(
int
i
=
0
;
i
<
BUCKET_SIZE
;
i
++
)
{
Symbol
*
curSymbol
=
pHead
->
Bucket
[
i
];
int
j
=
0
;
printf
(
"%d "
,
i
);
while
(
curSymbol
!=
NULL
)
{
if
(
j
==
0
)
{
for
(
int
k
=
0
;
k
<
25
;
k
++
)
{
printf
(
"%c"
,
32
);
}
j
=
1
;
}
printf
(
"-->%s(%s)%d/%d "
,
curSymbol
->
SymbolName
,
curSymbol
->
SymbolType
,
curSymbol
->
RefCount
,
curSymbol
->
ClashCount
);
curSymbol
=
curSymbol
->
pNext
;
}
printf
(
"
\n
"
);
}
pHead
=
pHead
->
pNext
;
}
}
makefile
0 → 100644
浏览文件 @
4acedbd0
DIR_INC
=
.
DIR_SRC
=
.
DIR_OBJ
=
.
DIR_BIN
=
.
SRC
=
$
(
wildcard
${
DIR_SRC
}
/
*
.c
)
OBJ
=
$
(
patsubst %.c,
${
DIR_OBJ
}
/%.o,
$
(
notdir
${
SRC
}
))
TARGET
=
app
BIN_TARGET
=
${
DIR_BIN
}
/
${
TARGET
}
CC
=
gcc
CFLAGS
=
-g
-w
-fmax-errors
=
10
-std
=
c99
-fsigned-char
-I
${
DIR_INC
}
-D
CODECODE_CI
${BIN_TARGET}
:
${OBJ}
$(CC)
$(OBJ)
-o
$@
${DIR_OBJ}/%.o
:
${DIR_SRC}/%.c
$(CC)
$(CFLAGS)
-c
$<
-o
$@
\ No newline at end of file
output1.txt
0 → 100644
浏览文件 @
4acedbd0
RefErrorCount: 1
index "barrel" ItemList(RefCount/ConflictCount)
------------------------------------------------------------
SymbolTableInvalid(Invalid = 1)
0
1 -->j(char*)1/1
2
3
4
SymbolTableInvalid(Invalid = 1)
0 -->i(char)1/0
1
2
3 -->temp(char)0/0 -->size(int)1/0
4
SymbolTableInvalid(Invalid = 1)
0 -->i(int)0/0
1 -->j(int)1/0
2 -->f(function)1/0
3
4
sonar-project.properties
0 → 100644
浏览文件 @
4acedbd0
# required metadata
sonar.language
=
c
# path to source directories (required)
sonar.sources
=
./
# path to the build artifact
sonar.artifact.path
=
build/app
# paths to the reports
sonar.c.cppcheck.reportPath
=
./build/cppcheck-report.xml
#sonar.c.pclint.reportPath=./build/pclint-report.xml
#sonar.c.coverage.reportPath=./build/gcovr-report*.xml
#sonar.c.coverage.itReportPath=./build/gcovr-report*.xml
#sonar.c.coverage.overallReportPath=./build/gcovr-report*.xml
sonar.c.valgrind.reportPath
=
./build/valgrind-report.xml
sonar.c.vera.reportPath
=
./build/vera-report.xml
#sonar.c.rats.reportPath=./build/rats-report.xml
#sonar.c.xunit.reportPath=./build/xunit-report.xml
#sonar.c.drmemory.reportPath=./build/drmemory-logs/**/results.txt
sonar.c.includeDirectories
=
/usr/include/,/usr/include/linux,/usr/include/x86_64-linux-gnu/bits,/usr/include/x86_64-linux-gnu/sys,/usr/include/c++/5/tr1,./
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论