<?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-1053</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>Интеграция семантических верификаторов в компиляторы языка Java</article-title><trans-title-group xml:lang="en"><trans-title>Integration of semantic verication into Java compilers</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>Klepinin</surname><given-names>A. V.</given-names></name></name-alternatives><email xlink:type="simple">alklepin@mail.utnet.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>Melentyev</surname><given-names>A. A.</given-names></name></name-alternatives><email xlink:type="simple">amelentev@gmail.com</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>2010</year></pub-date><pub-date pub-type="epub"><day>20</day><month>12</month><year>2010</year></pub-date><volume>17</volume><issue>4</issue><fpage>70</fpage><lpage>77</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Клепинин А.В., Мелентьев А.А., 2010</copyright-statement><copyright-year>2010</copyright-year><copyright-holder xml:lang="ru">Клепинин А.В., Мелентьев А.А.</copyright-holder><copyright-holder xml:lang="en">Klepinin A.V., Melentyev A.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/1053">https://www.mais-journal.ru/jour/article/view/1053</self-uri><abstract><p>Рассматривается способ статического семантического анализа исходных кодов программы на стадии ее компиляции с целью повышения качества исходного кода. В качестве способа реализации такого семантического анализа предлагается унифицированная интеграция в компиляторы языка Java для получения полного доступа к синтаксическому дереву (AST) компилируемых программ после этапа семантического анализа. Для обеспечения унификации реализованы общие интерфейсы для работы с синтаксическим деревом и адаптеры к реализациям синтаксических деревьев в компиляторах Sun/Oracle javac и Eclipse Compiler for Java (ecj). Выбранный способ обеспечил прозрачную интеграцию со средами разработки Eclipse и Netbeans без необходимости установки каких-либо расширений данных сред. Разработанный метод демонстрируется на некоторых примерах верификации программ.</p></abstract><trans-abstract xml:lang="en"><p>This paper introduces a method for static semantic analysis of source codes at com-
pilation time directly within standard compilers. The method is implemented via unied
integration with Java compilers to get the full access to Abstract Syntax Tree (AST)
of compiled les after the semantic analysis stage of compilation process. The unied
integration is implemented by common AST interfaces and adapters to AST implemen-
tations of Sun/Oracle javac and Eclipse Compiler for Java (ecj) compilers. This method
provides transparent integration with Eclipse and Netbeans IDE without a need for any
special plugins. Several examples of program verication rules are presented to demon-
strate the method.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>верификация программ</kwd><kwd>абстрактное синтаксическое дерево</kwd><kwd>Java</kwd><kwd>компилятор</kwd><kwd>JSR269</kwd><kwd>javac</kwd><kwd>ecj</kwd><kwd>Eclipse IDE</kwd><kwd>Netbeans IDE</kwd></kwd-group><kwd-group xml:lang="en"><kwd>program veri
cation</kwd><kwd>AST</kwd><kwd>Java</kwd><kwd>compiler</kwd><kwd>JSR269</kwd><kwd>javac</kwd><kwd>ecj</kwd><kwd>Eclipse IDE</kwd><kwd>Netbeans IDE</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">PMD, java source code verificator. [Электрон. ресурс]. Режим доступа: http://pmd.sourceforge.net/.</mixed-citation><mixed-citation xml:lang="en">PMD, java source code verificator. [Электрон. ресурс]. Режим доступа: http://pmd.sourceforge.net/.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Findbugs, java byte code verificator. [Электрон. ресурс]. Режим доступа: http://findbugs.sourceforge.net/.</mixed-citation><mixed-citation xml:lang="en">Findbugs, java byte code verificator. [Электрон. ресурс]. Режим доступа: http://findbugs.sourceforge.net/.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Ayewah N., Pugh W., Morgenthaler J. D., Penix J., and Zhou Y. Using findbugs on production software // OOPSLA '07: Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion, (New York, NY, USA). ACM, 2007. P. 805-806.</mixed-citation><mixed-citation xml:lang="en">Ayewah N., Pugh W., Morgenthaler J. D., Penix J., and Zhou Y. Using findbugs on production software // OOPSLA '07: Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion, (New York, NY, USA). ACM, 2007. P. 805-806.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Klaus H. and Grigore R. An overview of the runtime verification tool Java PathExplorer // Formal Methods in System Design. 2004. Vol. 24, No. 2. P. 189-215.</mixed-citation><mixed-citation xml:lang="en">Klaus H. and Grigore R. An overview of the runtime verification tool Java PathExplorer // Formal Methods in System Design. 2004. Vol. 24, No. 2. P. 189-215.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">JSR269: Pluggable Annotation Processing API. [Электрон. ресурс]. Режим доступа: http://jcp.org/en/jsr/detail?id=269.</mixed-citation><mixed-citation xml:lang="en">JSR269: Pluggable Annotation Processing API. [Электрон. ресурс]. Режим доступа: http://jcp.org/en/jsr/detail?id=269.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Project lombok. [Электрон. ресурс]. Режим доступа: http://projectlombok.org/.</mixed-citation><mixed-citation xml:lang="en">Project lombok. [Электрон. ресурс]. Режим доступа: http://projectlombok.org/.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Papi M. M., Ali M., Correa Jr. T. L., Perkins J. H., and Ernst M. D. , Practical pluggable types for Java // ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, (Seattle,WA, USA). 2008. July 22-24. P. 201-212.</mixed-citation><mixed-citation xml:lang="en">Papi M. M., Ali M., Correa Jr. T. L., Perkins J. H., and Ernst M. D. , Practical pluggable types for Java // ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, (Seattle,WA, USA). 2008. July 22-24. P. 201-212.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Universal AST project for Checker Framework. [Электрон. ресурс]. Режим доступа: http://code.google.com/p/checker-framework/wiki/Ideas#Universal_AST.</mixed-citation><mixed-citation xml:lang="en">Universal AST project for Checker Framework. [Электрон. ресурс]. Режим доступа: http://code.google.com/p/checker-framework/wiki/Ideas#Universal_AST.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Java Unified Abstract Syntax Tree project. [Электрон. ресурс]. Режим доступа: http://bitbucket.org/amelentev/juast/.</mixed-citation><mixed-citation xml:lang="en">Java Unified Abstract Syntax Tree project. [Электрон. ресурс]. Режим доступа: http://bitbucket.org/amelentev/juast/.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">java.util.ServiceLoader. [Электрон. ресурс]. Режим доступа: http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html.</mixed-citation><mixed-citation xml:lang="en">java.util.ServiceLoader. [Электрон. ресурс]. Режим доступа: http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html.</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>
