added picture and new section

master
parent e8720b8729
commit dffa127c07

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

@ -10,14 +10,17 @@
\@writefile{toc}{\contentsline {section}{\numberline {2}State of the art}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3}The Proposed Algorithm for Analyzing the Structure of the Source Code}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4}The Proposed Algorithm for Determining the Structural Similarity of Software Projects}{3}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {5}State of the art}{3}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}A Subsection Sample}{3}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Sample source code and its AST.}}{4}{}\protected@file@percent }
\newlabel{fig1}{{1}{4}}
\@writefile{toc}{\contentsline {subsubsection}{Sample Heading (Third Level)}{4}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Sample Heading (Fourth Level)}{4}{}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Table captions should be placed above the tables.}}{4}{}\protected@file@percent }
\newlabel{tab1}{{1}{4}}
\newlabel{SourceCodeAndAST}{{1}{4}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Description of the Developed Software System}{4}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Deployment diagram.}}{5}{}\protected@file@percent }
\newlabel{DeploymentDiagram}{{2}{5}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces An example of the internal representation of the JavaParser library AST.}}{6}{}\protected@file@percent }
\newlabel{JavaParserLibrary}{{3}{6}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces An example of the result of a request to Neo4j.}}{7}{}\protected@file@percent }
\newlabel{ResultOfRequest}{{4}{7}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces System operation example.}}{7}{}\protected@file@percent }
\newlabel{ExampleSystem}{{5}{7}}
\citation{Reviewer-Recommender}
\citation{ref_lncs1}
\citation{ref_book1}
@ -27,6 +30,13 @@
\citation{ref_article1,ref_book1,ref_proc1,ref_url1}
\bibstyle{splncs04}
\bibdata{samplepaper}
\@writefile{toc}{\contentsline {section}{\numberline {6}Experiments}{8}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {7}State of the art}{8}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}A Subsection Sample}{8}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{Sample Heading (Third Level)}{8}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Sample Heading (Fourth Level)}{8}{}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Table captions should be placed above the tables.}}{8}{}\protected@file@percent }
\newlabel{tab1}{{1}{8}}
\bibcite{aleksey2020approach}{1}
\bibcite{ali2011overview}{2}
\bibcite{beniwal2021npmrec}{3}
@ -34,5 +44,5 @@
\bibcite{nadezhda2019approach}{5}
\bibcite{nguyen2018crosssim}{6}
\bibcite{nguyen2020automated}{7}
\@writefile{toc}{\contentsline {subsubsection}{Acknowledgements}{5}{}\protected@file@percent }
\gdef \@abspage@last{5}
\@writefile{toc}{\contentsline {subsubsection}{Acknowledgements}{9}{}\protected@file@percent }
\gdef \@abspage@last{9}

@ -1,14 +1,18 @@
# Fdb version 3
["bibtex samplepaper"] 1680773656 "samplepaper.aux" "samplepaper.bbl" "samplepaper" 1680773658
["bibtex samplepaper"] 1680780235 "samplepaper.aux" "samplepaper.bbl" "samplepaper" 1680780268
"./splncs04.bst" 1521100946 33694 ee21ae2a29028dc8ad842a97200982c7 ""
"samplepaper.aux" 1680773658 2362 f6a538eedc01c74f2e62733fa0a53b0d "pdflatex"
"samplepaper.aux" 1680780267 3322 7431cce0f2734298e75194cc541b9b25 "pdflatex"
"samplepaper.bib" 1680767232 2675 31c6b7eaccded9d7e7d5c4199d50efdd ""
(generated)
"samplepaper.bbl"
"samplepaper.blg"
["pdflatex"] 1680773656 "c:/Users/stroe/OneDrive/Рабочий стол/LaTeX2e+Proceedings+Templates+download/samplepaper.tex" "samplepaper.pdf" "samplepaper" 1680773658
["pdflatex"] 1680780265 "c:/Users/stroe/OneDrive/Рабочий стол/LaTeX2e+Proceedings+Templates+download/samplepaper.tex" "samplepaper.pdf" "samplepaper" 1680780268
"DeploymentDiagram.png" 1680775044 34752 8a98b40d81e4fe39ff4cbcf99092dabb ""
"ExampleSystem.png" 1680778178 82836 a220025945fae5bbca7247beae314dc7 ""
"JavaParserLibrary.png" 1680776758 33550 f0999398686b5356af6578df06cf29c3 ""
"ResultOfRequest.png" 1680777975 82994 d1c6a31ba478603b32b71ae3d8554ecc ""
"SourceCodeAndAST.png" 1680769603 156139 73b1e5b62e24ad3398c87dc0df5e0729 ""
"c:/Users/stroe/OneDrive/Рабочий стол/LaTeX2e+Proceedings+Templates+download/samplepaper.tex" 1680773652 13721 9831202aaf982ccd469fe22c6f5a08fb ""
"c:/Users/stroe/OneDrive/Рабочий стол/LaTeX2e+Proceedings+Templates+download/samplepaper.tex" 1680780265 20461 1c50f7f96a73dd11cd14f0015dd2be64 ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc" 1674061660 2971 def0b6c1f0b107b3b936def894055589 ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1674061660 2900 1537cc8184ad1792082cd229ecc269f4 ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map" 1674062587 3524 cb3e574dea2d1052e39280babc910dc8 ""
@ -25,6 +29,7 @@
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/jknappen/ec/ecti0900.tfm" 1674062266 3072 a603fa6d934ebc72197ed1c389943d86 ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/jknappen/ec/ecti1000.tfm" 1674062266 3072 3bce340d4c075dffe6d4ec732b4c32fe ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/jknappen/ec/tcrm0900.tfm" 1674062267 1536 c4f439db76ef96a9c53bc437f35ffe20 ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/jknappen/ec/tcrm1000.tfm" 1674062267 1536 e07581a4bb3136ece9eeb4c3ffab8233 ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1674061115 1004 54797486969f23fa377b128694d548df ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex9.tfm" 1674061115 996 a18840b13b499c08ac2de96a99eda4bc ""
"c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1674061646 1512 f21f83efb36853c0b70002322c1ab3ad ""
@ -66,6 +71,9 @@
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty" 1674062769 4009 187ea2dc3194cd5a76cd99a8d7a6c4d0 ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1674063204 29921 d0acc05a38bd4aa3af2017f0b7c137ce ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1674063295 678 4792914a8f45be57bb98413425e4c7af ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.cfg" 1674063399 1830 e31effa752c61538383451ae21332364 ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty" 1674063399 80964 64e57373f36316e4a09b517cbf1aba2e ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/lstmisc.sty" 1674063399 77022 ee25ce086f4a79d8cf73bac6f94c02a5 ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/oberdiek/aliascnt.sty" 1674064020 2652 813491e2bc95c1dafbb39cd7c54b380b ""
"c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/tools/multicol.sty" 1674064981 32262 2bb622a0aa56c4a7a5cbdfe9d122c15a ""
"c:/texlive-2022/texlive/2022/texmf-dist/web2c/texmf.cnf" 1674061022 40171 cdab547de63d26590bebb3baff566530 ""
@ -73,9 +81,9 @@
"c:/texlive-2022/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt" 1674065407 2826488 83ea1af50f0b64fc3d7a33cfebec34f5 ""
"c:/texlive-2022/texlive/2022/texmf.cnf" 1674065251 835 15d98ed9a7362f0ac2a0fb81928d01a3 ""
"llncs.cls" 1662359260 43530 5c930e3a884976fbd3796e3ab18cc1af ""
"samplepaper.aux" 1680773658 2362 f6a538eedc01c74f2e62733fa0a53b0d "pdflatex"
"samplepaper.bbl" 1680773656 2152 390c6e65c8c1107b79dc586b5fafd8ee "bibtex samplepaper"
"samplepaper.tex" 1680773652 13721 9831202aaf982ccd469fe22c6f5a08fb ""
"samplepaper.aux" 1680780267 3322 7431cce0f2734298e75194cc541b9b25 "pdflatex"
"samplepaper.bbl" 1680780236 2152 390c6e65c8c1107b79dc586b5fafd8ee "bibtex samplepaper"
"samplepaper.tex" 1680780265 20461 1c50f7f96a73dd11cd14f0015dd2be64 ""
(generated)
"samplepaper.aux"
"samplepaper.log"

@ -176,6 +176,26 @@ INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/lstmisc.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/lstmisc.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/lstmisc.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/lstmisc.sty
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.cfg
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.cfg
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.cfg
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.cfg
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
INPUT c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
@ -229,7 +249,28 @@ INPUT ./SourceCodeAndAST.png
INPUT SourceCodeAndAST.png
INPUT ./SourceCodeAndAST.png
INPUT ./SourceCodeAndAST.png
INPUT ./DeploymentDiagram.png
INPUT ./DeploymentDiagram.png
INPUT DeploymentDiagram.png
INPUT ./DeploymentDiagram.png
INPUT ./DeploymentDiagram.png
INPUT ./JavaParserLibrary.png
INPUT ./JavaParserLibrary.png
INPUT JavaParserLibrary.png
INPUT ./JavaParserLibrary.png
INPUT ./JavaParserLibrary.png
INPUT c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm
INPUT c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/jknappen/ec/tcrm1000.tfm
INPUT ./ResultOfRequest.png
INPUT ./ResultOfRequest.png
INPUT ResultOfRequest.png
INPUT ./ResultOfRequest.png
INPUT ./ResultOfRequest.png
INPUT ./ExampleSystem.png
INPUT ./ExampleSystem.png
INPUT ExampleSystem.png
INPUT ./ExampleSystem.png
INPUT ./ExampleSystem.png
INPUT c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr9.tfm
INPUT c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
INPUT c:/texlive-2022/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi9.tfm

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2023.1.18) 6 APR 2023 13:34
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2023.1.18) 6 APR 2023 15:24
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
@ -225,47 +225,71 @@ File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
))
\Gin@req@height=\dimen170
\Gin@req@width=\dimen171
) (c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
) (c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.sty
\lst@mode=\count301
\lst@gtempboxa=\box99
\lst@token=\toks26
\lst@length=\count302
\lst@currlwidth=\dimen172
\lst@column=\count303
\lst@pos=\count304
\lst@lostspace=\dimen173
\lst@width=\dimen174
\lst@newlines=\count305
\lst@lineno=\count306
\lst@maxwidth=\dimen175
(c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/lstmisc.sty
File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz)
\c@lstnumber=\count307
\lst@skipnumbers=\count308
\lst@framebox=\box100
) (c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/listings/listings.cfg
File: listings.cfg 2020/03/24 1.8d listings configuration
))
Package: listings 2020/03/24 1.8d (Carsten Heinz)
(c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count301
\l__pdf_internal_box=\box99
\l__color_backend_stack_int=\count309
\l__pdf_internal_box=\box101
) (./samplepaper.aux)
\openout1 = `samplepaper.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 22.
LaTeX Font Info: ... okay on input line 22.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 23.
LaTeX Font Info: ... okay on input line 23.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 23.
LaTeX Font Info: ... okay on input line 23.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 23.
LaTeX Font Info: ... okay on input line 23.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 23.
LaTeX Font Info: ... okay on input line 23.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 23.
LaTeX Font Info: ... okay on input line 23.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 23.
LaTeX Font Info: ... okay on input line 23.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 23.
LaTeX Font Info: ... okay on input line 23.
(c:/texlive-2022/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count302
\scratchdimen=\dimen172
\scratchbox=\box100
\nofMPsegments=\count303
\nofMParguments=\count304
\everyMPshowfont=\toks26
\MPscratchCnt=\count305
\MPscratchDim=\dimen173
\MPnumerator=\count306
\makeMPintoPDFobject=\count307
\everyMPtoPDFconversion=\toks27
\scratchcounter=\count310
\scratchdimen=\dimen176
\scratchbox=\box102
\nofMPsegments=\count311
\nofMParguments=\count312
\everyMPshowfont=\toks27
\MPscratchCnt=\count313
\MPscratchDim=\dimen177
\MPnumerator=\count314
\makeMPintoPDFobject=\count315
\everyMPtoPDFconversion=\toks28
) (c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485.
(c:/texlive-2022/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
))
Overfull \hbox (3.35585pt too wide) in paragraph at lines 49--50
\c@lstlisting=\count316
Overfull \hbox (3.35585pt too wide) in paragraph at lines 50--51
\T1/cmr/bx/n/9 Keywords:\T1/cmr/m/n/9 source code \TS1/cmr/m/n/9 · \T1/cmr/m/n/9 struc-ture anal-y-sis \TS1/cmr/m/n/9 · \T1/cmr/m/n/9 struc-turally sim-i-lar projects
[]
@ -275,64 +299,94 @@ Overfull \hbox (3.35585pt too wide) in paragraph at lines 49--50
<SourceCodeAndAST.png, id=22, 1158.57843pt x 543.53062pt>
File: SourceCodeAndAST.png Graphic file (type png)
<use SourceCodeAndAST.png>
Package pdftex.def Info: SourceCodeAndAST.png used on input line 128.
Package pdftex.def Info: SourceCodeAndAST.png used on input line 129.
(pdftex.def) Requested size: 347.12354pt x 162.8448pt.
[3] [4 <./SourceCodeAndAST.png>]
[3]
<DeploymentDiagram.png, id=28, 869.49844pt x 349.305pt>
File: DeploymentDiagram.png Graphic file (type png)
<use DeploymentDiagram.png>
Package pdftex.def Info: DeploymentDiagram.png used on input line 168.
(pdftex.def) Requested size: 347.12354pt x 139.45302pt.
[4 <./SourceCodeAndAST.png>]
<JavaParserLibrary.png, id=33, 464.4853pt x 104.64093pt>
File: JavaParserLibrary.png Graphic file (type png)
<use JavaParserLibrary.png>
Package pdftex.def Info: JavaParserLibrary.png used on input line 185.
(pdftex.def) Requested size: 347.12354pt x 78.20267pt.
[5 <./DeploymentDiagram.png>]
<ResultOfRequest.png, id=39, 1191.7022pt x 451.6875pt>
File: ResultOfRequest.png Graphic file (type png)
<use ResultOfRequest.png>
Package pdftex.def Info: ResultOfRequest.png used on input line 229.
(pdftex.def) Requested size: 347.12354pt x 131.56496pt.
<ExampleSystem.png, id=40, 971.12813pt x 412.54124pt>
File: ExampleSystem.png Graphic file (type png)
<use ExampleSystem.png>
Package pdftex.def Info: ExampleSystem.png used on input line 239.
(pdftex.def) Requested size: 347.12354pt x 147.4572pt.
[6 <./JavaParserLibrary.png>] [7 <./ResultOfRequest.png> <./ExampleSystem.png>]
LaTeX Warning: Reference `fig1' on page 8 undefined on input line 307.
LaTeX Warning: Citation `Reviewer-Recommender' on page 5 undefined on input line 224.
LaTeX Warning: Citation `Reviewer-Recommender' on page 8 undefined on input line 330.
LaTeX Warning: Citation `ref_lncs1' on page 5 undefined on input line 224.
LaTeX Warning: Citation `ref_lncs1' on page 8 undefined on input line 330.
LaTeX Warning: Citation `ref_book1' on page 5 undefined on input line 225.
LaTeX Warning: Citation `ref_book1' on page 8 undefined on input line 331.
LaTeX Warning: Citation `ref_proc1' on page 5 undefined on input line 225.
LaTeX Warning: Citation `ref_proc1' on page 8 undefined on input line 331.
LaTeX Warning: Citation `ref_url1' on page 5 undefined on input line 226.
LaTeX Warning: Citation `ref_url1' on page 8 undefined on input line 332.
LaTeX Warning: Citation `ref_article1' on page 5 undefined on input line 227.
LaTeX Warning: Citation `ref_article1' on page 8 undefined on input line 333.
LaTeX Warning: Citation `ref_lncs1' on page 5 undefined on input line 227.
LaTeX Warning: Citation `ref_lncs1' on page 8 undefined on input line 333.
LaTeX Warning: Citation `ref_book1' on page 5 undefined on input line 227.
LaTeX Warning: Citation `ref_book1' on page 8 undefined on input line 333.
LaTeX Warning: Citation `ref_article1' on page 5 undefined on input line 228.
LaTeX Warning: Citation `ref_article1' on page 8 undefined on input line 334.
LaTeX Warning: Citation `ref_book1' on page 5 undefined on input line 228.
LaTeX Warning: Citation `ref_book1' on page 8 undefined on input line 334.
LaTeX Warning: Citation `ref_proc1' on page 5 undefined on input line 228.
LaTeX Warning: Citation `ref_proc1' on page 8 undefined on input line 334.
LaTeX Warning: Citation `ref_url1' on page 5 undefined on input line 228.
(./samplepaper.bbl
LaTeX Warning: Citation `ref_url1' on page 8 undefined on input line 334.
(./samplepaper.bbl [8]
Underfull \hbox (badness 10000) in paragraph at lines 7--13
[]\T1/cmr/m/n/9 Aleksey Alekun-drovich, F., Yure-vich, G.G., Alek-sey Michailovich, N.,
[]
) [5] (./samplepaper.aux) )
) [9] (./samplepaper.aux)
LaTeX Warning: There were undefined references.
)
Here is how much of TeX's memory you used:
2704 strings out of 478268
39779 string characters out of 5847850
344383 words of memory out of 5000000
20902 multiletter control sequences out of 15000+600000
481394 words of font info for 51 fonts, out of 8000000 for 9000
4363 strings out of 478268
62345 string characters out of 5847850
374082 words of memory out of 5000000
22544 multiletter control sequences out of 15000+600000
481729 words of font info for 52 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
55i,9n,62p,738b,257s stack positions out of 10000i,1000n,20000p,200000b,200000s
55i,9n,62p,738b,1006s stack positions out of 10000i,1000n,20000p,200000b,200000s
{c:/texlive-2022/texlive/2022/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}{c:/texlive-2022/texlive/2022/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}<c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfbx0900.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfbx1200.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfrm0900.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfti0900.pfb><c:/texlive-2022/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfti1000.pfb>
Output written on samplepaper.pdf (5 pages, 385429 bytes).
Output written on samplepaper.pdf (9 pages, 607735 bytes).
PDF statistics:
103 PDF objects out of 1000 (max. 8388607)
62 compressed objects within 1 object stream
127 PDF objects out of 1000 (max. 8388607)
74 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
6 words of extra memory for PDF output out of 10000 (max. 10000000)
26 words of extra memory for PDF output out of 10000 (max. 10000000)

Binary file not shown.

Binary file not shown.

@ -11,6 +11,7 @@
%
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{listings}
% Used for displaying a sample figure. If possible, figure files should
% be included in EPS format.
%
@ -92,7 +93,7 @@ where $N = \lbrace N_{1}, N_{2},\ldots, N_{n}\rbrace$ is the set of nodes AST;
$N_{i} = \langle name, data \rangle$ is an i-th AST node containing the node name, node data;
R is the set of relations between AST nodes.
$R$ is the set of relations between AST nodes.
We developed an algorithm to highlight the structure of the project in analyzing the source code, which comprises the following steps:
@ -122,11 +123,11 @@ We developed an algorithm to highlight the structure of the project in analyzing
\item Save the resulting AST in a graph database (GDB) to facilitate data handling.
\end{enumerate}
Figure \ref{fig1} shows an example of the source code and the ASD got for it.
Figure \ref{SourceCodeAndAST} shows an example of the source code and the ASD got for it.
\begin{figure}
\includegraphics[width=\textwidth]{SourceCodeAndAST.png}
\caption{Sample source code and its AST.} \label{fig1}
\caption{Sample source code and its AST.} \label{SourceCodeAndAST}
\end{figure}
GDB is a non-relational type of database based on the topographic structure of the network. Graphs represent sets of data as nodes, edges, and properties. Relational databases provide a structured approach to data. GDBs are more flexible and focused on fast data acquisition, considering various types of links between them.
@ -135,6 +136,111 @@ We used Neo4j as the GDB, since this system has a high speed of operation even w
\section{The Proposed Algorithm for Determining the Structural Similarity of Software Projects}
The determination of the structural similarity of projects is based on the use of a hashing algorithm. We use a hash function to collapse an input array of any size into string.
It is necessary to get the values of the AST hash function of the analyzed project:
\begin{enumerate}
\item Get fragments (paths) of the AST graph from the root node of the graph tree to each node of the graph.
\item We extract the distinguishing property of each node (type) in the current fragment.
\item We passed the type of the node to the hash function. The result is an output string of a certain length.
\item If fragment \textit{A} contains hash \textit{H} and fragment \textit{B} contains hash H, then we can say that fragments \textit{A} and \textit{B} have similarity in one node.
\item If fragment \textit{A} contains hash \textit{H}, and fragment \textit{B} does not contain hash \textit{H}, then fragments \textit{A} and \textit{B} do not have similar nodes.
\end{enumerate}
We calculate the hash function values using the Neo4j GDB using the md5 algorithm.
Thus, the number of matching hash values affects the uniqueness and borrowing rates of code in a project. The following expression is used to calculate project originality:
\begin{equation*}
O = \frac {H^{C} \notin H}{H^{C}},
\end{equation*}
where $H^{C}$ is the set of values of the hash function of the current project;
$H$ is the set of hash values of other projects in the system.
\section{Description of the Developed Software System}
Figure \ref{DeploymentDiagram} shows the developed software system. The system comprises three nodes, which are on different nodes of the computer network.
\begin{figure}
\includegraphics[width=\textwidth]{DeploymentDiagram.png}
\caption{Deployment diagram.} \label{DeploymentDiagram}
\end{figure}
Users interact with the web client on the \textit{Frontend} node. The \textit{Backend} node performs the main business logic for implementing the proposed approach in searching for structurally similar projects. \textit{Backend} and \textit{Frontend} nodes communicate through an API. The GDB is on the \textit{Database} node and provides a saving of project data.
The developed software system represents a web application using a client-server architecture. The web client sends requests to the server, the server processes the requests and returns responses to the web client.
The web client is an application written in JavaScript using the Vue js framework. Vue.js is a framework for developing single page applications and web interfaces. The main advantages of this framework are its lightness (small size of the library in lines of code), performance, flexibility, and excellent documentation.
We implement the server part of the application in Java using the Spring Boot framework. The Spring framework is a whole ecosystem for developing applications in the Java language, which includes a huge number of ready-made modules. Spring Boot extends the Spring framework. The main advantages of this framework include speed and ease of development, auto-configuration of all components, easy access to databases and network capabilities.
The current version of the software system only supports source code analysis in the Java. The JavaParser library is used to form an AST in the process of Java code analysis. This library allows you to build an internal representation of the AST, which is then translated into the proposed AST model using the previously discussed algorithm.
Figure \ref{JavaParserLibrary} shows an example of the internal representation of the AST in the JavaParser library.
\begin{figure}
\includegraphics[width=\textwidth]{JavaParserLibrary.png}
\caption{An example of the internal representation of the JavaParser library AST.} \label{JavaParserLibrary}
\end{figure}
We used neo4j GDB for data storage. Possibly redundant expression GDBs over relational ones is the ability to change the data model.
The GDB data model allows you to store the following nodes:
\begin{itemize}
\item nodes with type “Package” (Java-specific);
\item nodes with type “Class”;
\item nodes with the “Class field” type;
\item nodes with type “Method”;
\item nodes with type “Method argument”;
\item nodes with type “Operator”.
\end{itemize}
We arrange the nodes in the GDB hierarchically. For example, a class is in a package, but a method is in a class. The data model allows you to form the following relationships between graph nodes:
\begin{itemize}
\item $HAS_CLASS$ is a relationship between a package and a class;
\item $HAS_FIELD$ is a relationship between a class and a class field;
\item $HAS_METHOD$ is a is a link between a class and a method;
\item $HAS_ARG$ is a relationship between method and method argument;
\item $HAS_BLOCK$ is a link between a method and a statement.
\end{itemize}
The main idea of searching for structurally similar projects is to use hashing of graph fragments (paths) based on the md5 function. We formed the path from the root node to each node of the graph. We take nesting into account when forming the path (package -> class -> field / method -> method argument / operator). The hash function takes the string representation of the node type as input.
Example of a request to get paths and a hash that matches this path:
\begin{lstlisting}
MATCH p = (o{name:"root"})-[r*]- ()
WHERE ID(o)={0}
WITH [x in nodes(p) | CASE WHEN EXISTS(x.name)
THEN x.name ELSE x.type END] as names,
[x in nodes(p) | ID(x)] as ids
WITH names, apoc.util.md5(names) as hash, ids
RETURN names, hash, ids
\end{lstlisting}
Figure \ref{ResultOfRequest} shows the result of the query execution.
\begin{figure}
\includegraphics[width=\textwidth]{ResultOfRequest.png}
\caption{An example of the result of a request to Neo4j.} \label{ResultOfRequest}
\end{figure}
Figure \ref{ResultOfRequest} shows that the hash \textit{"b199ef8568f72c43f6fd50860e228c51"} matches the path \textit{[“root”, “cont”]}. Two graphs contain this hash. The primary keys of the root nodes of these graphs are 7872 and 7977.
Thus, we can discover the number of matching and different paths in the analyzed projects by obtaining hashes for all AST fragments. Figure \ref{ExampleSystem} shows an example of the developed system.
\begin{figure}
\includegraphics[width=\textwidth]{ExampleSystem.png}
\caption{System operation example.} \label{ExampleSystem}
\end{figure}
\section{Experiments}
% -----------------------------------------

Loading…
Cancel
Save