Commit 8cd8a008 authored by aniket-engg's avatar aniket-engg

updates for analyzer

parent 40fd06fd
export { default as CodeAnalysis} from './src/solidity-analyzer'
export { default as CodeAnalysis} from './solidity-analyzer'
import { getStateVariableDeclarationsFromContractNode, getInheritsFromName, getContractName, import { getStateVariableDeclarationsFromContractNode, getInheritsFromName, getContractName,
getFunctionOrModifierDefinitionParameterPart, getType, getDeclaredVariableName, getFunctionDefinitionReturnParameterPart } from './staticAnalysisCommon' getFunctionOrModifierDefinitionParameterPart, getType, getDeclaredVariableName, getFunctionDefinitionReturnParameterPart } from './staticAnalysisCommon'
import { AstWalker } from 'remix-astwalker' import { AstWalker } from '@remix-project/remix-astwalker'
import { FunctionDefinitionAstNode, ParameterListAstNode, ModifierDefinitionAstNode, ContractHLAst, VariableDeclarationAstNode, import { FunctionDefinitionAstNode, ParameterListAstNode, ModifierDefinitionAstNode, ContractHLAst, VariableDeclarationAstNode,
FunctionHLAst, ReportObj, ReportFunction, VisitFunction, ModifierHLAst, CompilationResult } from 'types' FunctionHLAst, ReportObj, ReportFunction, VisitFunction, ModifierHLAst, CompilationResult } from '../../types'
type WrapFunction = ((contracts: ContractHLAst[], isSameName: boolean) => ReportObj[]) type WrapFunction = ((contracts: ContractHLAst[], isSameName: boolean) => ReportObj[])
......
'use strict' 'use strict'
import { FunctionHLAst, ContractHLAst, FunctionCallGraph, ContractCallGraph, Context, FunctionCallAstNode } from "types" import { FunctionHLAst, ContractHLAst, FunctionCallGraph, ContractCallGraph, Context, FunctionCallAstNode } from "../../types"
import { isLocalCallGraphRelevantNode, isExternalDirectCall, getFullQualifiedFunctionCallIdent, import { isLocalCallGraphRelevantNode, isExternalDirectCall, getFullQualifiedFunctionCallIdent,
getFullQuallyfiedFuncDefinitionIdent, getContractName } from './staticAnalysisCommon' getFullQuallyfiedFuncDefinitionIdent, getContractName } from './staticAnalysisCommon'
......
...@@ -3,7 +3,7 @@ import { getDeclaredVariableName, getFullQuallyfiedFuncDefinitionIdent } from '. ...@@ -3,7 +3,7 @@ import { getDeclaredVariableName, getFullQuallyfiedFuncDefinitionIdent } from '.
import { default as algorithm } from './algorithmCategories' import { default as algorithm } from './algorithmCategories'
import AbstractAst from './abstractAstView' import AbstractAst from './abstractAstView'
import { get } from 'fast-levenshtein' import { get } from 'fast-levenshtein'
import { util } from 'remix-lib' import { util } from '@remix-project/remix-lib'
import { AnalyzerModule, ModuleAlgorithm, ModuleCategory, ReportObj, ContractHLAst, FunctionHLAst, VariableDeclarationAstNode, VisitFunction, ReportFunction, SupportedVersion} from './../../types' import { AnalyzerModule, ModuleAlgorithm, ModuleCategory, ReportObj, ContractHLAst, FunctionHLAst, VariableDeclarationAstNode, VisitFunction, ReportFunction, SupportedVersion} from './../../types'
interface SimilarRecord { interface SimilarRecord {
......
...@@ -447,7 +447,7 @@ function getUnAssignedTopLevelBinOps (subScope: BlockAstNode | IfStatementAstNod ...@@ -447,7 +447,7 @@ function getUnAssignedTopLevelBinOps (subScope: BlockAstNode | IfStatementAstNod
if(subScope && subScope.nodeType === 'Block') if(subScope && subScope.nodeType === 'Block')
result = subScope.statements.filter(isBinaryOpInExpression) result = subScope.statements.filter(isBinaryOpInExpression)
// for 'without braces' loops // for 'without braces' loops
else if (subScope && subScope.nodeType && isSubScopeStatement(subScope)) { else if (subScope && subScope.nodeType && subScope.nodeType !== 'Block' && isSubScopeStatement(subScope)) {
if (subScope.nodeType === 'IfStatement'){ if (subScope.nodeType === 'IfStatement'){
if((subScope.trueBody && subScope.trueBody.nodeType === "ExpressionStatement" && isBinaryOpInExpression(subScope.trueBody))) if((subScope.trueBody && subScope.trueBody.nodeType === "ExpressionStatement" && isBinaryOpInExpression(subScope.trueBody)))
result.push(subScope.trueBody) result.push(subScope.trueBody)
......
import { default as test} from "tape" import * as test from "tape"
import { helpers } from 'remix-lib' import { helpers } from '@remix-project/remix-lib'
import { readFileSync } from 'fs' import { readFileSync } from 'fs'
import { join } from 'path' import { join } from 'path'
import { default as StatRunner } from '../../dist/src/solidity-analyzer' import { default as StatRunner } from '../../src/solidity-analyzer'
import * as modules from '../../src/solidity-analyzer/modules/' import * as modules from '../../src/solidity-analyzer/modules/'
import { CompilationResult, AnalysisReportObj, AnalysisReport } from '../../src/types' import { CompilationResult, AnalysisReportObj, AnalysisReport } from '../../src/types'
import { install, require as requireNPMmodule } from 'npm-install-version' import { install, require as requireNPMmodule } from 'npm-install-version'
......
import { default as test} from "tape" import * as test from "tape"
import { helpers } from 'remix-lib' import { helpers } from '@remix-project/remix-lib'
import { readFileSync } from 'fs' import { readFileSync } from 'fs'
import { join } from 'path' import { join } from 'path'
import { default as StatRunner } from '../../dist/src/solidity-analyzer' import { default as StatRunner } from '../../src/solidity-analyzer'
import * as modules from '../../src/solidity-analyzer/modules/' import * as modules from '../../src/solidity-analyzer/modules/'
import { CompilationResult, AnalysisReportObj, AnalysisReport } from '../../src/types' import { CompilationResult, AnalysisReportObj, AnalysisReport } from '../../src/types'
import { install, require as requireNPMmodule } from 'npm-install-version' import { install, require as requireNPMmodule } from 'npm-install-version'
...@@ -301,7 +301,7 @@ test('Integration test similarVariableNames module', function (t: test.Test) { ...@@ -301,7 +301,7 @@ test('Integration test similarVariableNames module', function (t: test.Test) {
test('Integration test blockTimestamp module', function (t: test.Test) { test('Integration test blockTimestamp module', function (t: test.Test) {
t.plan(testFiles.length) t.plan(testFiles.length)
const module: any = require('../../dist/src/solidity-analyzer/modules/blockTimestamp').default const module: any = modules.blockTimestamp
const lengthCheck: Record<string, number> = { const lengthCheck: Record<string, number> = {
'KingOfTheEtherThrone.sol': 1, 'KingOfTheEtherThrone.sol': 1,
'assembly.sol': 0, 'assembly.sol': 0,
......
import { default as test} from "tape" import * as test from "tape"
import { helpers } from 'remix-lib' import { helpers } from '@remix-project/remix-lib'
import { readFileSync } from 'fs' import { readFileSync } from 'fs'
import { join } from 'path' import { join } from 'path'
import { default as StatRunner } from '../../dist/src/solidity-analyzer' import { default as StatRunner } from '../../src/solidity-analyzer'
import { CompilationResult, AnalysisReportObj, AnalysisReport, AnalyzerModule } from '../../src/types' import { CompilationResult, AnalysisReportObj, AnalysisReport, AnalyzerModule } from '../../src/types'
import { checksEffectsInteraction } from '../../src/solidity-analyzer/modules/' import { checksEffectsInteraction } from '../../src/solidity-analyzer/modules/'
import { install, require as requireNPMmodule } from 'npm-install-version' import { install, require as requireNPMmodule } from 'npm-install-version'
......
import { default as test} from "tape" import * as test from "tape"
import { helpers } from 'remix-lib' import { helpers } from '@remix-project/remix-lib'
import { readFileSync } from 'fs' import { readFileSync } from 'fs'
import { join } from 'path' import { join } from 'path'
import { default as StatRunner } from '../../dist/src/solidity-analyzer' import { default as StatRunner } from '../../src/solidity-analyzer'
import { CompilationResult, AnalysisReportObj, AnalysisReport } from '../../src/types' import { CompilationResult, AnalysisReportObj, AnalysisReport } from '../../src/types'
import { checksEffectsInteraction } from '../../src/solidity-analyzer/modules/' import { checksEffectsInteraction } from '../../src/solidity-analyzer/modules/'
import { install, require as requireNPMmodule } from 'npm-install-version' import { install, require as requireNPMmodule } from 'npm-install-version'
......
...@@ -4,9 +4,12 @@ ...@@ -4,9 +4,12 @@
"module": "commonjs", "module": "commonjs",
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"declaration": true, "declaration": true,
"rootDir": "./", "rootDir": "./src",
"types": ["node"] "types": ["node"]
}, },
"exclude": ["**/*.spec.ts"], "exclude": [
"**/*.spec.ts",
"test/"
],
"include": ["**/*.ts"] "include": ["**/*.ts"]
} }
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
"module": "commonjs", "module": "commonjs",
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"declaration": true, "declaration": true,
"rootDir": "./", "rootDir": "./src",
"types": ["node"] "types": ["node"]
}, },
"exclude": ["**/*.spec.ts"], "exclude": [
"**/*.spec.ts",
"tests/"
],
"include": ["**/*.ts"] "include": ["**/*.ts"]
} }
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -135,7 +135,8 @@ ...@@ -135,7 +135,8 @@
"ethereumjs-block": "^2.2.2", "ethereumjs-block": "^2.2.2",
"ethereumjs-tx": "^2.1.2", "ethereumjs-tx": "^2.1.2",
"ethereumjs-vm": "4.1.3", "ethereumjs-vm": "4.1.3",
"http-server": "^0.11.1" "http-server": "^0.11.1",
"npm-install-version": "^6.0.2"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.4.5", "@babel/core": "^7.4.5",
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
}, },
"remix-analyzer": { "remix-analyzer": {
"root": "libs/remix-analyzer", "root": "libs/remix-analyzer",
"sourceRoot": "libs/remix-analyzer", "sourceRoot": "libs/remix-analyzer/src",
"projectType": "library", "projectType": "library",
"schematics": {}, "schematics": {},
"architect": { "architect": {
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
"outputPath": "dist/libs/remix-analyzer", "outputPath": "dist/libs/remix-analyzer",
"tsConfig": "libs/remix-analyzer/tsconfig.lib.json", "tsConfig": "libs/remix-analyzer/tsconfig.lib.json",
"packageJson": "libs/remix-analyzer/package.json", "packageJson": "libs/remix-analyzer/package.json",
"main": "libs/remix-analyzer/index.ts", "main": "libs/remix-analyzer/src/index.ts",
"assets": ["libs/remix-analyzer/*.md"] "assets": ["libs/remix-analyzer/*.md"]
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment