From c121d23ac3f3c120f9a80902c54d5ce391ff68e1 Mon Sep 17 00:00:00 2001 From: Joseph Izang Date: Tue, 13 Jun 2023 13:00:08 +0100 Subject: [PATCH] fix possibility where clicking Analyse button might attempt to run slither also --- .../src/lib/actions/staticAnalysisActions.ts | 14 ++++++++------ .../src/lib/remix-ui-static-analyser.tsx | 8 +++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libs/remix-ui/static-analyser/src/lib/actions/staticAnalysisActions.ts b/libs/remix-ui/static-analyser/src/lib/actions/staticAnalysisActions.ts index 8faddbbda7..30989e5b39 100644 --- a/libs/remix-ui/static-analyser/src/lib/actions/staticAnalysisActions.ts +++ b/libs/remix-ui/static-analyser/src/lib/actions/staticAnalysisActions.ts @@ -1,10 +1,11 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { CompilationResult, SourceWithTarget } from '@remixproject/plugin-api' import React from 'react' //eslint-disable-line import { AnalysisTab, RemixUiStaticAnalyserReducerActionType, RemixUiStaticAnalyserState, SolHintReport, SlitherAnalysisResults } from '../../staticanalyser' import { RemixUiStaticAnalyserProps } from '@remix-ui/static-analyser' /** - * + * * @param analysisModule { AnalysisTab } AnalysisTab ViewPlugin * @param dispatch { React.Dispatch } analysisReducer function's dispatch method */ @@ -24,8 +25,8 @@ export const compilation = (analysisModule: AnalysisTab, /** * Run the analysis on the currently compiled contract - * @param lastCompilationResult - * @param lastCompilationSource + * @param lastCompilationResult + * @param lastCompilationSource * @param currentFile {string} current file path * @param state { RemixUiStaticAnalyserState} * @param props {RemixUiStaticAnalyserProps} @@ -42,7 +43,8 @@ export const compilation = (analysisModule: AnalysisTab, * @returns {Promise} */ // eslint-disable-next-line @typescript-eslint/no-unused-vars -export async function run (lastCompilationResult, lastCompilationSource, currentFile: string, state: RemixUiStaticAnalyserState, props: RemixUiStaticAnalyserProps, isSupportedVersion, showSlither, categoryIndex: number[], groupedModules, runner, _paq, message, showWarnings, allWarnings: React.RefObject, warningContainer: React.RefObject, calculateWarningStateEntries: (e:[string, any][]) => {length: number, errors: any[] }, warningState, setHints: React.Dispatch>, hints: SolHintReport[], setSlitherWarnings: React.Dispatch>, setSsaWarnings: React.Dispatch>) { +export async function run (lastCompilationResult, lastCompilationSource, currentFile: string, state: RemixUiStaticAnalyserState, props: RemixUiStaticAnalyserProps, isSupportedVersion, showSlither, categoryIndex: number[], groupedModules, runner, _paq, message, showWarnings, allWarnings: React.RefObject, warningContainer: React.RefObject, calculateWarningStateEntries: (e:[string, any][]) => {length: number, errors: any[] }, warningState, setHints: React.Dispatch>, hints: SolHintReport[], setSlitherWarnings: React.Dispatch>, setSsaWarnings: React.Dispatch>, +slitherEnabled: boolean) { if (!isSupportedVersion) return if (state.data !== null) { @@ -54,7 +56,7 @@ export async function run (lastCompilationResult, lastCompilationSource, current const hintsResult = await props.analysisModule.call('solhint', 'lint', state.file) setHints(hintsResult) const warningResult = calculateWarningStateEntries(Object.entries(warningState)) - props.analysisModule.emit('statusChanged', { key: hints.length+warningResult.length, + props.analysisModule.emit('statusChanged', { key: hints.length+warningResult.length, title: `${hints.length+warningResult.length} warning${hints.length+warningResult.length === 1 ? '' : 's'}`, type: 'warning'}) // Remix Analysis @@ -121,7 +123,7 @@ export async function run (lastCompilationResult, lastCompilationSource, current } } // Slither Analysis - if (showSlither) { + if (showSlither && slitherEnabled) { try { const compilerState = await props.analysisModule.call('solidity', 'getCompilerState') const { currentVersion, optimize, evmVersion } = compilerState diff --git a/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx b/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx index 710232f390..0b87881c5b 100644 --- a/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx +++ b/libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx @@ -1,3 +1,5 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/no-unused-vars */ import React, { useEffect, useState, useReducer, useRef, Fragment } from 'react' // eslint-disable-line import Button from './Button/StaticAnalyserButton' // eslint-disable-line import { util } from '@remix-project/remix-lib' @@ -110,7 +112,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => { useEffect(() => { setWarningState({}) const runAnalysis = async () => { - await run(state.data, state.source, state.file, state, props, isSupportedVersion, showSlither, categoryIndex, groupedModules, runner,_paq, message, showWarnings, allWarnings, warningContainer,calculateWarningStateEntries, warningState, setHints, hints, setSlitherWarnings, setSsaWarnings) + await run(state.data, state.source, state.file, state, props, isSupportedVersion, showSlither, categoryIndex, groupedModules, runner,_paq, message, showWarnings, allWarnings, warningContainer,calculateWarningStateEntries, warningState, setHints, hints, setSlitherWarnings, setSsaWarnings, slitherEnabled) } props.event.trigger('staticAnaysisWarning', []) // if (basicEnabled) { @@ -664,14 +666,14 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => { buttonText={`Analyse ${state.file}`} classList="btn btn-sm btn-primary btn-block" onClick={async () => await run(state.data, state.source, state.file, state , props, isSupportedVersion, showSlither, categoryIndex, groupedModules, runner,_paq, - message, showWarnings, allWarnings, warningContainer, calculateWarningStateEntries, warningState, setHints, hints, setSlitherWarnings, setSsaWarnings)} + message, showWarnings, allWarnings, warningContainer, calculateWarningStateEntries, warningState, setHints, hints, setSlitherWarnings, setSsaWarnings, slitherEnabled)} disabled={(state.data === null || !isSupportedVersion) || (!solhintEnabled && !basicEnabled) } /> :