<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>X (O. Bondarenko);</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Securing applied information systems with SAST integration into the Gulp pipeline⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ievgen Zaitsev</string-name>
          <email>zaitsev@i.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oleh Bondarenko</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Oleksandr Golubenko</string-name>
          <email>o.golubenko@istu.edu.ua</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Artem Antonenko</string-name>
          <email>artem.v.antonenko@gmail.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andrii Savchenko</string-name>
          <email>an.savchenko@istu.edu.ua</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Electrodynamics of NAS of Ukraine</institution>
          ,
          <addr-line>Beresteyskyi 56, 03057 Kyiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>National University of Life and Environmental Sciences of Ukraine</institution>
          ,
          <addr-line>Heroiv oborony 15, 03041 Kyiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Yuriy Bugay International Scientific and Technical University</institution>
          ,
          <addr-line>Volodymyrska 7, 04025 Kyiv</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2025</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>The growth of cyber threats in modern web development and the need to implement DevSecOps practices demand innovative approaches to code protection. Traditional security testing methods, applied in late stages, face significant limitations, including the inability to respond quickly to vulnerabilities and noncompliance with the "shift-left" principle. This article presents a practical approach to integrating static application security testing (SAST) tools directly into the automated build process for front-end projects using the Gulp task runner. By leveraging the ESLint linter, configured todetect dangerous constructs (such as no-eval and no-implied-eval), the proposed system provides continuous code monitoring and automatic vulnerability detection. The Gulp pipeline, implemented via the gulp-eslint-new plugin, is modified to immediately interrupt the build process (failAfterError) upon error detection. These capabilities contribute to strengthening cybersecurity capacities, serve as an effective first line of defense, and prevent obvious vulnerabilities corresponding to the OWASP Top Ten from entering the repository. Furthermore, the approach demonstrates simple implementation without the need for complex external tools. Through the integration of SAST into the Gulp pipeline, the proposed framework is well -equipped to address modern security challenges, enhancing the overall code reliability in the Node.js environment.</p>
      </abstract>
      <kwd-group>
        <kwd>Gulp</kwd>
        <kwd>SAST</kwd>
        <kwd>ESLint</kwd>
        <kwd>build automation</kwd>
        <kwd>cybersecurity</kwd>
        <kwd>web development</kwd>
        <kwd>static analysis</kwd>
        <kwd>code security</kwd>
        <kwd>JavaScript</kwd>
        <kwd>DevSecOps 1</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Analysis of modern sources highlights the relevance of integrating security practices into
automated development processes. On the one hand, build automation tools, such as Gulp [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], have
become an integral part of modern web development, allowing for the optimization of routine tasks
and acceleration of product delivery [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. They provide a flexible mechanism for managing complex
code and resource processing pipelines. On the other hand, the prevalence of JavaScript [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] as the
primary front-end language carries significant security risks [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. According to the OWASP Top Ten
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], many common web vulnerabilities, particularly Cross-Site Scripting (XSS), arise precisely from
flaws in client-side code, requiring the implementation of robust secure coding practices [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. These
vulnerabilities in applied information systems can lead to data compromise, financial losses, or, in
the context of hybrid threats, the spread of disinformation.
      </p>
      <p>
        In response to these challenges, the industry is actively adopting DevSecOps [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] approaches,
which involve integrating security at all stages of the development lifecycle, starting from code
writing ("shift-left") [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. A key tool for this is Static Application Security Testing (SAST) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. As
      </p>
      <p>
        OWASP explains, SAST allows for the automatic detection of potential vulnerabilities directly in the
source code before its execution, which is a proactive protection method [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Gulp [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] build
automation, while accelerating development, does not solve these security problems on its own but
merely creates a platform for their integration. This is especially important for runtime
environments, such as Node.js, where security depends not only on the application code but also on
the configuration of the environment itself [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. This is precisely why the "shift-left" concept [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
requires the implementation of security control tools directly into the developer's environment and
CI/CD processes.
      </p>
      <p>
        For the JavaScript [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] ecosystem, one of the most popular tools that can perform SAST functions
is the ESLint [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] linter. This tool has evolved from a simple code style analyzer to a powerful SAST
tool capable of detecting complex code patterns. Its flexible rule system allows configuring checks
not only for code style but also for the use of dangerous constructs, such as direct eval calls (rule
noeval [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]) or passing strings to setTimeout/setInterval functions (rule no-implied-eval [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]). Practical
integration of ESLint into Gulp is carried out using specialized plugins, for example, gul-peslint-new,
whose documentation is available on npm [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. However, although the Gulp [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and ESLint [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
documentation describes their individual capabilities, there is a lack of detailed examples of their
joint integration specifically focused on automatically blocking the build upon vulnerability
detection. Most existing solutions focus on bundlers, such as Webpack, or full-fledged CI platforms,
leaving Gulp users with an insufficient number of practical guides. Thus, there is a need for practical
demonstrations of how existing tools can be effectively used to enhance cybersecurity in automated
Gulp pipelines [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>The aim of this research is to develop and demonstrate a method for integrating Static Application
Security Testing (SAST) tools into an automated build system for front-end projects based on Gulp.
The object of the study is the web application development process, and the subject is the
configuration and use of ESLint as a SAST tool in the Gulp pipeline for automatically detecting
potential vulnerabilities in JavaScript code. The expected result is the creation of a practical example
that shows how a Gulp build can be configured to automatically block code with known dangerous
patterns, which will contribute to enhancing the cybersecurity capabilities of web applications in the
early stages of development.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Methodology</title>
      <p>
        To achieve the stated aim, an approach combining practical implementation and experimental
verification was employed [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The foundation for the research was an existing Gulp pipeline,
designed for automating the build process of front-end projects, which included compiling Pug and
SCSS, as well as basic JavaScript [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] processing.
      </p>
      <p>
        ESLint [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] was chosen as the Static Application Security Testing (SAST) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] tool due to its
widespread adoption in the JavaScript ecosystem, configuration flexibility, and the possibility of
integration with Gulp.
      </p>
      <p>
        The SAST integration was carried out in several stages:
1. ESLint Configuration. The .eslintrc.json configuration file was modified by explicitly
enabling rules responsible for detecting common dangerous code patterns, such as
noeval [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and no-implied-eval [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. This was done by adding corresponding entries to the
"rules" section.
2. Gulp Task Configuration. The gulp-eslint-new [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] Gulp plugin, compatible with ESLint
v8 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], was used. The existing scriptLint Gulp task was updated: cwd (for correctly
locating the configuration file) and useEslintrc: true (for using the "legacy" .eslintrc.json
format) options were added. A key change was the use of the .pipe(eslint.failAfterError())
method, which ensures the Gulp build stops (fails) if any ESLint errors are detected.
3. Integration Testing. To verify the functionality of the integrated SAST system, code
snippets containing known dangerous constructs (eval, setTimeout with a string) were
intentionally introduced into the source JavaScript [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] file. Subsequently, the Gulp dev
script was executed to observe its reaction – the expectation was that the build would be
automatically interrupted with a corresponding error message.
      </p>
      <p>This methodical approach allowed for the practical implementation and verification of SAST
integration based on ESLint into the Gulp pipeline, forming the basis for the research results.</p>
    </sec>
    <sec id="sec-3">
      <title>3. System Architecture and SAST Integration</title>
      <p>
        The foundation for integrating static application security testing (SAST) tools was an automated
build system based on the Gul p task runner. This pipeline was designed for typical front-end
development tasks, allowing for the automation of routine operations and ensuring process
consistency. It included the following key functions:
● Compilation of HTML templates from Pug, which simplifies the creation of modular
markup.
● Compilation and processing of styles from SCSS, including adding vendor prefixes and
minification for production.
● Transpilation and minification of JavaScript [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] code using Babel, ensuring compatibility
with various browsers.
● Automatic browser page refresh (BrowserSync), which significantly accelerates the
development cycle.
      </p>
      <p>
        The system architecture involved a division into two main scenarios: dev for development (with
a focus on speed and debugging) and prod for creating an optimized final build. An important feature
of the base pipeline was its modular structure: the Gulp configuration was divided into separate files
by task type, and all paths were centrally managed through a special path.js module, which providde
high flexibility and ease of maintenance. The entire Gulp configuration was written using modern
JavaScript Modules (ESM) syntax, adhering to current Node.js [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] environment standards. This
existing, well-structured pipeline became the foundation for implementing automated code security
checks during the build stage.
      </p>
      <p>
        For the implementation of SAST, the ESLint [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] linter was chosen. This tool is the de facto
standard for static analysis of JavaScript code, and although it is often used for style checking, its
flexible rule system allows it to be effectively used as a SAST [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] tool as well. A significant advantage
is the ability to integrate it into automated build processes, such as Gulp. The primary ESLint
configuration is managed through the .eslintrc.json file, located in the project root, which is a
"legacy" configuration format compatible with ESLint v8.
      </p>
      <p>
        The standard ESLint configuration already included the eslint:recommended and google rule sets,
which provide a baseline level of code quality checks. To integrate security checks, this configuration
was supplemented by explicitly enabling specific rules in the "rules" section. Specifically, the
following rules were added:
● no-eval: "error". This rule categorically prohibits the use of the eval() function [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. As
noted in the ESLint documentation and secure coding [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] recommendations, eval() is
extremely dangerous as it allows arbitrary code execution from a string, which is a
primary vector for XSS attacks [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
● no-implied-eval: "error". This rule prohibits passing strings instead of functions to
setTimeout(), setInterval(), and execScript() [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Such constructs are considered "implied
eval" as they also execute code from a string and carry similar security risks [
        <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
        ].
      </p>
      <p>Additionally, the no-unused-vars rule (from eslint:recommended) was left active as an example
of a general code quality check, which also indirectly contributes to security by reducing the amount
of "dead" code.</p>
      <p>{
"extends": [
"eslint:recommended",
"google"
],
"rules": {
// ... other style rules ...
"no-implied-eval": "error", // Disallow implied eval
"no-eval": "error" // Disallow direct eval
}
}
Code 1: Snippet of the .eslintrc.json file with added security rules</p>
      <p>
        This targeted configuration allows ESLint to act as an effective first-level SAST tool, automatically
checking JavaScript code for specific, high-risk patterns [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ] associated with common web
vulnerabilities [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], directly during the build process.
      </p>
      <p>
        To make these ESLint checks an integral part of the automated build process, the corresponding
Gulp task scriptLint was modified. The mere presence of the .eslintrc.json file is insufficient; it is
necessary to actively integrate the linting process into the Gulp stream that processes JavaScript
files. The gulp-eslint-new [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] Gulp plugin was used to interact with ESLint v8. The choice of this
specific plugin was critical, as the original gulp-eslint has serious compatibility issues with modern
ESLint versions, which blocks the ability to use "legacy" configurations. This often leads to "silent
failures," where linting does not run, but the Gulp task reports no error, creating a false sense of
security.
      </p>
      <p>The plugin was configured with the cwd: root and useEs lintrc: true options. These options are
key for correct operation in this project configuration. The cwd: root option solves the problem of
resolving the root directory, as Gulp tasks run from the nested gulpfile.js/ folder,
whereas .eslintrc.json resides in the project root. Without this option, ESLint cannot find its
configuration file. The useEslintrc: true option, in turn, explicitly tells the plugin to use the
"legacy" .eslintrc.json file instead of the new eslint.config.js format, which was necessary for
compatibility with ESLint v8 and the google config.</p>
      <p>
        A key element of the integration was adding the .pipe(eslint.failAfterError()) method to the Gulp
stream (see Figure 1). This method, provided by the gulp-eslint-new [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] plugin, analyzes the ESLint
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] results and, if at least one error is detected, generates an error in the Gulp stream, leading to an
immediate halt of the script. It is important to note that this method must be called after formatting
(eslint.format()) but before writing the file to disk (.pipe(dest(...))). If the order were different, then
even if an error was detected, the compiled (but unsafe) file would end up in the dev build, negating
the entire security effect. Thus, failAfterError() serves as a reliable technical "gatekeeper" that
ensures only valid code proceeds. Consequently, code with critical vulnerabilities does not reach
subsequent processing stages and cannot be accidentally deployed to a test or production
environment. This modification of the Gulp task transforms ESLint from a simple checking tool into
an active element of quality and security [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] control within the automated pipeline, aligning with
DevSecOps principles.
      </p>
    </sec>
    <sec id="sec-4">
      <title>4. Experimental Results and Discussion</title>
      <p>
        To practically verify the effectiveness of the integrated SAST system, an experiment was
conducted. Its goal was to prove the Gulp pipeline's ability to automatically detect and block code
containing known dangerous patterns. Three types of errors, intended to be detected by ESLint
configured according to the previous section, were intentionally introduced into the source script.js
file:
1. A call to eval() – a direct security threat allowing arbitrary code execution and a vector
for XSS [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Rule: no-eval [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
2. A call to setTimeout() with a string argument – "implied eval", carrying similar risks [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]
and violating secure coding practices [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Rule: no-implied-eval [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
3. An unused variable – a code quality error that can complicate maintenance and hide
logical flaws. Rule: no-unused-vars.
console.log("JS file is connected");
// For demonstrating XSS vulnerability
eval("console.log('This is a security risk!')"); // Error no-eval
// For demonstrating XSS vulnerability (implied eval)
setTimeout("console.log('Implied eval risk!')", 100); // Error no-implied-eval
// For demonstrating ESLint error (unused variable)
const unusedVariable = "This should cause an error"; // Error no-unused-vars
      </p>
      <sec id="sec-4-1">
        <title>Code 2: Test file script.js with intentionally introduced errors</title>
        <p>After saving this file, the standard Gulp script for development (npm run dev) was executed. As
expected, the build process was automatically interrupted during the execution of the scriptLint task.
A detailed ESLint report was output to the console, clearly identifying all three introduced errors,
specifying the rule type (no-eval, no-implied-eval, no-unused-vars) and the error location in the code
(see Figure 2). This demonstrates the correct operation of the ESLint configuration and its ability to
detect the specified patterns.</p>
        <p>
          Due to the presence of .pipe(eslint.failAfterError()) [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] in the Gulp task, the Gulp process itself
terminated with an error, preventing further processing of the file and browser page refresh. This is
the key outcome: potentially vulnerable code [
          <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
          ] was stopped automatically even before it could
enter the repository, testing, or, especially, production.
        </p>
        <p>To demonstrate the full operational cycle and the system's correct behavior in the absence of
threats, the Gulp dev script was run again after all three errors in the script.js file were fixed. In this
case, the lintScriptsDev validation task completed successfully, detecting no violations. As a result,
the entire build process finished correctly, indicated by the "✔ Завдання dev завершено" (✔ dev task
completed) message. Immediately after, Browsersync was launched for the local server, which
automatically opened the project page in the browser and activated "live reload" mode. This confirms
that "clean" code passes through the pipeline unhindered. The result of the successful build is shown
in Figure 3.</p>
        <p>The experiment results unequivocally confirm that the integrated SAST system based on ESLint
and Gulp successfully performs its function: it automatically detects potentially dangerous and
lowquality constructs in JavaScript code and blocks the build process. This implements a crucial element
of security control at an early development stage, aligning with DevSecOps principles and Node.js
security best practices, minimizing the risk of vulnerabilities entering the final product.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>The conducted research demonstrates the practical effectiveness of integrating static application
security testing (SAST) tools into an automated Gulp pipeline for front-end development. By
configuring ESLint and integrating it into Gulp tasks using the gulp-eslint-new plugin, a system was
successfully created that automatically detects and blocks potentially dangerous constructs in
JavaScript code during the build stage.</p>
      <p>Experimental verification confirmed that the modified Gulp pipeline successfully identifies and
halts the build process when code violating established security rules (no-eval, no-implied-eval) is
present. This proves that even simple, widely available tools, such as ESLint, can serve as an effective
first-level SAST means for preventing common vulnerabilities listed in the OWASP Top Ten. Such
automated control helps enforce secure coding practices consistently.</p>
      <p>Integrating SAST into the Gulp pipeline is an accessible and effective technical measure for
enhancing the cybersecurity capabilities of web applications. This approach implements the
"shiftleft" principle (moving security to earlier stages), aligning with modern DevSecOps practices, and
allows for increased overall code reliability without significantly complicating the development
process. It also aligns with security best practices for the Node.js environment in which Gulp itself
runs.</p>
      <p>It is worth noting the limitations of this approach: it is focused on the static analysis of known
patterns and cannot replace comprehensive dynamic application security testing (DAST) or
penetration testing. Nevertheless, it serves as a critically important first line ofD defense. Prospects
for further research lie in expanding the ESLint rule set with specialized security plugins and
integrating this Gulp pipeline into more comprehensive CI/CD processes for continuous security
monitoring.</p>
      <p>The proposed solution can be easily adapted and implemented in existing Gulp projects for the
immediate enhancement of their security profile.</p>
    </sec>
    <sec id="sec-6">
      <title>Declaration on Generative AI</title>
      <sec id="sec-6-1">
        <title>The author(s) have not employed any Generative AI tools.</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Gulp</surname>
          </string-name>
          ,
          <string-name>
            <surname>"Gulp</surname>
            <given-names>Documentation,</given-names>
          </string-name>
          "
          <year>2025</year>
          . [Online]. Available: https://gulpjs.com/docs/en/gettingstarted/quick-start.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Mozilla</surname>
          </string-name>
          ,
          <article-title>"JavaScript,"</article-title>
          <source>MDN Web Docs</source>
          ,
          <year>2025</year>
          . [Online]. Available: https://developer.mozilla.org/en-US/docs/Web/JavaScript.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Mozilla</surname>
          </string-name>
          ,
          <article-title>"Security,"</article-title>
          <source>MDN Web Docs</source>
          ,
          <year>2025</year>
          . [Online]. Available: https://developer.mozilla.org/enUS/docs/Web/Security.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>OWASP</given-names>
            <surname>Foundation</surname>
          </string-name>
          ,
          <article-title>"OWASP Top Ten,"</article-title>
          <year>2024</year>
          . [Online]. Available: https://owasp.org/wwwproject-top-ten/.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Mozilla</surname>
          </string-name>
          ,
          <article-title>"Website security,"</article-title>
          <source>MDN Web Docs</source>
          ,
          <year>2025</year>
          . [Online]. Available: https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Website_security.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Red</given-names>
            <surname>Hat</surname>
          </string-name>
          ,
          <article-title>"What is DevSecOps?,"</article-title>
          <source>Red Hat</source>
          ,
          <year>2024</year>
          . [Online]. Available: https://www.redhat.com/en/topics/devops/what-is-devsecops.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>OWASP</given-names>
            <surname>Foundation</surname>
          </string-name>
          ,
          <article-title>"</article-title>
          <source>Static Code Analysis," OWASP Community Pages</source>
          ,
          <year>2025</year>
          . [Online]. Available: https://owasp.org/www-community/controls/Static_Code_Analysis.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Node.js Foundation</surname>
          </string-name>
          ,
          <article-title>"Security Best Practices,"</article-title>
          <year>2025</year>
          . [Online]. Available: https://nodejs.org/en/docs/guides/security.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>ESLint</surname>
          </string-name>
          ,
          <string-name>
            <surname>"About</surname>
            <given-names>ESLint</given-names>
          </string-name>
          ,"
          <year>2025</year>
          . [Online]. Available: https://eslint.org/docs/latest/about/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>ESLint</surname>
          </string-name>
          ,
          <article-title>"Rule documentation: no-</article-title>
          <string-name>
            <surname>eval</surname>
          </string-name>
          ,
          <year>" 2025</year>
          . [Online]. Available: https://eslint.org/docs/latest/rules/no-eval.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>ESLint</surname>
          </string-name>
          ,
          <article-title>"Rule documentation: no-implied-</article-title>
          <string-name>
            <surname>eval</surname>
          </string-name>
          ,
          <year>" 2025</year>
          . [Online]. Available: https://eslint.org/docs/latest/rules/no
          <article-title>-implied-eval.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12] npm, Inc.,
          <article-title>"gulp-eslint-new,"</article-title>
          npm,
          <year>2025</year>
          . [Online]. Available: https://www.npmjs.com/package/gulp-eslint-new.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Zaitsev</surname>
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Golubenko</surname>
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tkachenko</surname>
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pidmohylnyi</surname>
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antonenko</surname>
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2023</year>
          ).
          <article-title>Exploring advanced hypothesis generation in astronomy through the implementation of a mathematical model of linguistic neural networks</article-title>
          .
          <source>CEUR Workshop Proceedings</source>
          ,
          <year>2023</year>
          ,
          <volume>3687</volume>
          ,
          <fpage>121</fpage>
          -
          <lpage>128</lpage>
          (Scopus)
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>