get compiler version using compilation result

pull/10/head
aniket-engg 5 years ago committed by Aniket
parent b3a5c1a66c
commit 5df0146901
  1. 14
      remix-analyzer/src/solidity-analyzer/modules/staticAnalysisCommon.ts
  2. 5
      remix-analyzer/src/types.ts

@ -3,7 +3,7 @@
import { FunctionDefinitionAstNode, ModifierDefinitionAstNode, ParameterListAstNode, ForStatementAstNode,
WhileStatementAstNode, VariableDeclarationAstNode, ContractDefinitionAstNode, InheritanceSpecifierAstNode,
MemberAccessAstNode, BinaryOperationAstNode, FunctionCallAstNode, ExpressionStatementAstNode, UnaryOperationAstNode,
IdentifierAstNode, IndexAccessAstNode, BlockAstNode, AssignmentAstNode, InlineAssemblyAstNode, IfStatementAstNode, CompiledContractObj, ABIParameter } from "types"
IdentifierAstNode, IndexAccessAstNode, BlockAstNode, AssignmentAstNode, InlineAssemblyAstNode, IfStatementAstNode, CompiledContractObj, ABIParameter, CompilationResult, CompiledContract } from "types"
import { util } from 'remix-lib'
type SpecialObjDetail = {
@ -1122,6 +1122,17 @@ function getTypeStringFromComponents(components: ABIParameter[]) {
return typeString
}
function getCompilerVersion(contractFiles: CompiledContractObj): string {
const fileNames: string[] = Object.keys(contractFiles)
const contracts = contractFiles[fileNames[0]]
const contractNames: string[] = Object.keys(contracts)
const contract: CompiledContract = contracts[contractNames[0]]
const metadata = JSON.parse(contract.metadata)
const compilerVersion: string = metadata.compiler.version
if(!compilerVersion.includes('nightly')) return 'v' + compilerVersion.split('+commit')[0]
else return 'develop'
}
const helpers = {
expressionTypeDescription,
nodeType,
@ -1158,6 +1169,7 @@ export {
getFunctionDefinitionReturnParameterPart,
getUnAssignedTopLevelBinOps,
getMethodParamsSplittedTypeDesc,
getCompilerVersion,
// #################### Complex Node Identification
isDeleteOfDynamicArray,

@ -8,6 +8,11 @@ export interface AnalyzerModule {
report: ReportFunction
}
// This version signifies the module support for Solidity version.
// start will be minimum at 0.4.12 as since that version Solidity exports latest AST
// end should be a version in which analysis feature got deprecated.
// This will be helpful in version based analysis in future.
export interface SupportedVersion {
start: string
end?: string

Loading…
Cancel
Save