<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">mais</journal-id><journal-title-group><journal-title xml:lang="ru">Моделирование и анализ информационных систем</journal-title><trans-title-group xml:lang="en"><trans-title>Modeling and Analysis of Information Systems</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-1015</issn><issn pub-type="epub">2313-5417</issn><publisher><publisher-name>Yaroslavl State University</publisher-name></publisher></journal-meta><article-meta><article-id custom-type="elpub" pub-id-type="custom">mais-1097</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Оригинальные статьи</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>Articles</subject></subj-group></article-categories><title-group><article-title>Статический анализ с использованием систем типов и эффектов на основе LLVM</article-title><trans-title-group xml:lang="en"><trans-title>LLVM-based Static Analysis Tool Using Type
and Effect Systems</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Беляев</surname><given-names>Михаил Анатольевич</given-names></name><name name-style="western" xml:lang="en"><surname>Belyaev</surname><given-names>M. A.</given-names></name></name-alternatives><email xlink:type="simple">belyaev@kspt.ftk.spbstu.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Цесько</surname><given-names>Вадим Александрович</given-names></name><name name-style="western" xml:lang="en"><surname>Tsesko</surname><given-names>V. A.</given-names></name></name-alternatives><email xlink:type="simple">tsesko@kspt.ftk.spbstu.ru</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff xml:lang="ru" id="aff-1"><institution>Санкт-Петербургский государственный политехнический университет</institution><country>Russian Federation</country></aff><pub-date pub-type="collection"><year>2011</year></pub-date><pub-date pub-type="epub"><day>20</day><month>12</month><year>2011</year></pub-date><volume>18</volume><issue>4</issue><fpage>45</fpage><lpage>55</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Беляев М.А., Цесько В.А., 2011</copyright-statement><copyright-year>2011</copyright-year><copyright-holder xml:lang="ru">Беляев М.А., Цесько В.А.</copyright-holder><copyright-holder xml:lang="en">Belyaev M.A., Tsesko V.A.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.mais-journal.ru/jour/article/view/1097">https://www.mais-journal.ru/jour/article/view/1097</self-uri><abstract><p>Описано разрабатываемое средство статического анализа программного обеспечения. Основной идеей данного средства является использование систем типов и эффектов для статического анализа реальных программ. Средство использует формат промежуточного представления LLVM в качестве входного представления программы, таким образом, давая возможность анализировать программы на любых языках, поддерживаемых системой LLVM. Разбор указанного формата осуществляется встроенным парсером, позволяющим осуществить формирование внутренней модели программы, схожей с моделью LLVM. Целью создания описываемого средства является исследование возможностей построения методов статического анализа программ на основе известных алгоритмов, использующих системы типов и эффектов, путём применения этих алгоритмов к модели и опосредованно к исходному коду.</p></abstract><trans-abstract xml:lang="en"><p>The intention of this paper is to describe a static analysis tool under development. The principal idea behind the design of this tool is to use type and effect systems for static analysis of real programs. The tool uses LLVM bitcode files as input, thus extending the set of analyzed languages to those supported by LLVM compiler infrastructure. It uses its own parser of bitcode files and a program model similar to that of LLVM. The approach taken is to research feasibility of designing instruments for static analysis by applying known type and effect system based algorithms for detecting defects to LLVM bitcode language and effectively to the original source code.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>статический анализ</kwd><kwd>системы типов и эффектов</kwd><kwd>поиск
дефектов</kwd><kwd>SSA</kwd></kwd-group><kwd-group xml:lang="en"><kwd>static program analysis</kwd><kwd>type and effect system</kwd><kwd>low level virtual machine</kwd><kwd>defect detection</kwd><kwd>SSA</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Coverity Scan Open Source Report, 2009. &lt;http://scan.coverity.com/report/&gt;</mixed-citation><mixed-citation xml:lang="en">Coverity Scan Open Source Report, 2009. &lt;http://scan.coverity.com/report/&gt;</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Ertl M.A., Wien TU: Domination-Based Scoping and Static Single Assignment Languages. Static Single-Assignment Form Seminar, 2009.</mixed-citation><mixed-citation xml:lang="en">Ertl M.A., Wien TU: Domination-Based Scoping and Static Single Assignment Languages. Static Single-Assignment Form Seminar, 2009.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Horwitz S. Precise Flow-Insensitive May-Alias Analysis is NP-Hard. ACM Transactions on Programming Languages and Systems, 1-6. ACM Association for Computing Machinery, 1997.</mixed-citation><mixed-citation xml:lang="en">Horwitz S. Precise Flow-Insensitive May-Alias Analysis is NP-Hard. ACM Transactions on Programming Languages and Systems, 1-6. ACM Association for Computing Machinery, 1997.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Itsykson V., Moiseev M., Tsesko V., Zakharov A. Automatic defects detection in industrial C/C++ software. Software Engineering Conference in Russia (CEE- SECR), 2009.</mixed-citation><mixed-citation xml:lang="en">Itsykson V., Moiseev M., Tsesko V., Zakharov A. Automatic defects detection in industrial C/C++ software. Software Engineering Conference in Russia (CEE- SECR), 2009.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Jim T., Palsberg J. Type inference in systems of recursive types with subtyping. Manuscript, 1999.</mixed-citation><mixed-citation xml:lang="en">Jim T., Palsberg J. Type inference in systems of recursive types with subtyping. Manuscript, 1999.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Lattner C., Haberman J., Housel P. S. LLVM Bitcode File Format. &lt;http://llvm.org/docs/BitCodeFormat.html&gt;</mixed-citation><mixed-citation xml:lang="en">Lattner C., Haberman J., Housel P. S. LLVM Bitcode File Format. &lt;http://llvm.org/docs/BitCodeFormat.html&gt;</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Lattner C. LLVM Language Reference Manual. &lt;http://llvm.org/docs/LangRef.html&gt;</mixed-citation><mixed-citation xml:lang="en">Lattner C. LLVM Language Reference Manual. &lt;http://llvm.org/docs/LangRef.html&gt;</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">llvm-parser - A haskell library for parsing LLVM binary bitcode files. &lt;http://code.google.com/p/llvm-parser&gt;</mixed-citation><mixed-citation xml:lang="en">llvm-parser - A haskell library for parsing LLVM binary bitcode files. &lt;http://code.google.com/p/llvm-parser&gt;</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Marino D., Millstein T. A Generic Type-and-Effect System. TLDI, 2010.</mixed-citation><mixed-citation xml:lang="en">Marino D., Millstein T. A Generic Type-and-Effect System. TLDI, 2010.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Nielson F., Nielson H. R. Type and Effect Systems. Correct System Design, 1999. P. 114-136.</mixed-citation><mixed-citation xml:lang="en">Nielson F., Nielson H. R. Type and Effect Systems. Correct System Design, 1999. P. 114-136.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Nielson F., Nielson H. R., Hankin C. Principles of Program Analysis. Springer- Verlag, 2005.</mixed-citation><mixed-citation xml:lang="en">Nielson F., Nielson H. R., Hankin C. Principles of Program Analysis. Springer- Verlag, 2005.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Ross K.P.D. From System F to Typed Assembly Language. Twenty-Fifth ACM SIGPLAN Symposium on Principles of Programming Languages. 1998. P. 85-97.</mixed-citation><mixed-citation xml:lang="en">Ross K.P.D. From System F to Typed Assembly Language. Twenty-Fifth ACM SIGPLAN Symposium on Principles of Programming Languages. 1998. P. 85-97.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Zadeck K. The Development of Static Single Assignment Form. Static Single- Assignment Form Seminar, 2009.</mixed-citation><mixed-citation xml:lang="en">Zadeck K. The Development of Static Single Assignment Form. Static Single- Assignment Form Seminar, 2009.</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
