switch solc to remic compiler version

pull/1398/head
aniket-engg 3 years ago committed by Aniket
parent 7432082164
commit 5d69e68263
  1. 6
      libs/remix-ui/static-analyser/src/lib/remix-ui-static-analyser.tsx
  2. 51
      libs/remixd/src/services/slitherClient.ts

@ -108,8 +108,10 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
if (lastCompilationResult && categoryIndex.length > 0) {
let warningCount = 0
const warningMessage = []
props.analysisModule.call('solidity-logic', 'getCompilerState').then(console.log)
// props.analysisModule.call('slither', 'analyse', state.file).then(console.log)
props.analysisModule.call('solidity-logic', 'getCompilerState').then((compilerState) => {
const { currentVersion, optimize, evmVersion } = compilerState
props.analysisModule.call('slither', 'analyse', state.file, { currentVersion, optimize, evmVersion }).then(console.log)
})
runner.run(lastCompilationResult, categoryIndex, results => {
results.map((result) => {
let moduleName

@ -1,6 +1,6 @@
import * as WS from 'ws' // eslint-disable-line
import { PluginClient } from '@remixproject/plugin'
const { spawn } = require('child_process')
const { spawn, execSync } = require('child_process')
export class SlitherClient extends PluginClient {
methods: Array<string>
@ -20,30 +20,43 @@ export class SlitherClient extends PluginClient {
this.currentSharedFolder = currentSharedFolder
}
analyse (filePath: string) {
analyse (filePath: string, compilerConfig) {
return new Promise((resolve, reject) => {
if (this.readOnly) {
const errMsg = '[Slither Analysis]: Cannot analyse in read-only mode'
return reject(new Error(errMsg))
}
const outputFile = 'remix-slitherReport_' + Date.now() + '.json'
const cmd = `slither ${filePath} --json ${outputFile}`
const options = { cwd: this.currentSharedFolder, shell: true }
const child = spawn(cmd, options)
let result = ''
let error = ''
child.stdout.on('data', (data) => {
const msg = `[Slither Analysis]: ${data.toString()}`
console.log('\x1b[32m%s\x1b[0m', msg)
result += msg + '\n'
})
child.stderr.on('data', (err) => {
error += `[Slither Analysis]: ${err.toString()}`
})
child.on('close', () => {
if (error) reject(error)
else resolve(result)
})
const { currentVersion, optimize, evmVersion } = compilerConfig
if(currentVersion) {
const versionString = currentVersion.substring(0, currentVersion.indexOf('+commit') + 16)
const solcOutput = execSync('solc --version', options)
if (!solcOutput.toString().includes(versionString)) {
const version = versionString.substring(0, versionString.indexOf('+commit'))
const solcSelectInstalledVersions = execSync('solc-select versions', options)
if (!solcSelectInstalledVersions.toString().includes(version)) {
execSync(`solc-select install ${version}`, options)
}
execSync(`solc-select use ${version}`, options)
}
}
// const outputFile = 'remix-slitherReport_' + Date.now() + '.json'
// const cmd = `slither ${filePath} --json ${outputFile}`
// const child = spawn(cmd, options)
// let result = ''
// let error = ''
// child.stdout.on('data', (data) => {
// const msg = `[Slither Analysis]: ${data.toString()}`
// console.log('\x1b[32m%s\x1b[0m', msg)
// result += msg + '\n'
// })
// child.stderr.on('data', (err) => {
// error += `[Slither Analysis]: ${err.toString()}`
// })
// child.on('close', () => {
// if (error) reject(error)
// else resolve(result)
// })
})
}
}

Loading…
Cancel
Save