New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@ggflutter/sumo

Package Overview
Dependencies
Maintainers
0
Versions
740
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ggflutter/sumo - npm Package Compare versions

Comparing version 2.5.75003785 to 2.5.75003786

2

package.json
{
"author": "Luigi Allocca",
"name": "@ggflutter/sumo",
"version": "2.5.75003785",
"version": "2.5.75003786",
"description": "A mutation testing tool for Ethereum smart contracts",

@@ -6,0 +6,0 @@ "repository": {

@@ -10,54 +10,4 @@ const Mutation = require('../../mutation');

const mutations = [];
let hasMutations = false;
// Funzione per gestire una BinaryOperation
function handleBinaryOperation(node, modifiedFunctionCode, functionStart, functionEnd) {
const start = node.range[0];
const end = node.range[1] + 1;
if (start >= functionStart && end <= functionEnd && node.operator === '=' && node.right.type === 'FunctionCall') {
// Rimuovi l'assegnazione dall'originale
const original = source.slice(start, end);
const mutatedString = original.replace(/^[^=]+=\s*/, ""); // Rimuove l'assegnazione
// Modifica il codice della funzione con la mutazione
modifiedFunctionCode = modifiedFunctionCode.replace(original, mutatedString);
hasMutations = true;
}
return modifiedFunctionCode;
}
// Funzione ricorsiva per attraversare i nodi
function visitNode(node, modifiedFunctionCode, functionStart, functionEnd) {
if (!node) return modifiedFunctionCode;
// Se il nodo è una BinaryOperation, prova a fare la mutazione
if (node.type === 'ExpressionStatement' && node.expression.type === 'BinaryOperation') {
modifiedFunctionCode = handleBinaryOperation(node.expression, modifiedFunctionCode, functionStart, functionEnd);
}
// Se il nodo è un IfStatement, visita ricorsivamente i corpi true e false
if (node.type === 'IfStatement') {
if (node.trueBody && node.trueBody.statements) {
for (const trueBodyStatement of node.trueBody.statements) {
modifiedFunctionCode = visitNode(trueBodyStatement, modifiedFunctionCode, functionStart, functionEnd);
}
}
if (node.falseBody && node.falseBody.statements) {
for (const falseBodyStatement of node.falseBody.statements) {
modifiedFunctionCode = visitNode(falseBodyStatement, modifiedFunctionCode, functionStart, functionEnd);
}
}
}
// Se il nodo ha un corpo di dichiarazioni (come un blocco di codice), visita ogni dichiarazione
if (node.body && node.body.statements) {
for (const statement of node.body.statements) {
modifiedFunctionCode = visitNode(statement, modifiedFunctionCode, functionStart, functionEnd);
}
}
return modifiedFunctionCode;
}
visit({

@@ -71,7 +21,21 @@ FunctionDefinition: (functionNode) => {

let modifiedFunctionCode = originalFunctionCode;
hasMutations = false;
let hasMutations = false;
// Visita ricorsivamente ogni nodo del corpo della funzione
modifiedFunctionCode = visitNode(functionNode, modifiedFunctionCode, functionStart, functionEnd);
visit({
BinaryOperation: (node) => {
const start = node.range[0];
const end = node.range[1] + 1;
if (start >= functionStart && end <= functionEnd && node.operator === '=' && (node.right.type === 'FunctionCall' || node.right.type === 'MemberAccess')) {
// Rimuovi l'assegnazione dall'originale
const original = source.slice(start, end);
const mutatedString = original.replace(/^[^=]+=\s*/, "");
// Aggiorna il codice della funzione con la modifica
modifiedFunctionCode = modifiedFunctionCode.replace(original, mutatedString);
hasMutations = true;
}
}
});
// Se sono state fatte modifiche, crea una mutazione per l'intera funzione

@@ -78,0 +42,0 @@ if (hasMutations) {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc