Comments (2)
Hi @Fakorede if you could give more specific info on what goes wrong that would be helpful. I wouldn't be surprised if WALA runs into scalability issues as React codes can be huge if you include the full React library.
from wala.
Thanks for your response Professor @msridhar. I am using the below code to generate IR:
public static void generateIR(String filename) throws ClassHierarchyException {
JSCallGraphUtil.setTranslatorFactory(
new CAstRhinoTranslatorFactory());
IClassHierarchy cha =
JSCallGraphUtil.makeHierarchyForScripts(filename);
IRFactory<IMethod> factory = AstIRFactory.makeDefaultFactory();
for (IClass klass : cha) {
if (!klass.getName().toString().startsWith("prologue.js")) {
IMethod m = klass.getMethod(AstMethodReference.fnSelector);
if (m != null) {
IR ir = factory.makeIR(m, Everywhere.EVERYWHERE,
new SSAOptions());
System.out.println(ir);
}
}
}
}
I have created a file which contains a simple javascript function (as below), tested it and works quite alright
function testFunctionWithCallback() {
var b = 3
var c = 5
var a = f(b * c)
}
If I replace the the js function with a sample react code snippet as below, i observe the IMethod
for every IClass
is null.
import { useState } from 'react';
export default function Form() {
const [answer, setAnswer] = useState('');
const [error, setError] = useState(null);
const [status, setStatus] = useState('typing');
if (status === 'success') {
return <h1>That's right!</h1>
}
async function handleSubmit(e) {
e.preventDefault();
setStatus('submitting');
try {
await submitForm(answer);
setStatus('success');
} catch (err) {
setStatus('typing');
setError(err);
}
}
function handleTextareaChange(e) {
setAnswer(e.target.value);
}
return (
<>
<h2>City quiz</h2>
<p>
In which city is there a billboard that turns air into drinkable water?
</p>
<form onSubmit={handleSubmit}>
<textarea
value={answer}
onChange={handleTextareaChange}
disabled={status === 'submitting'}
/>
<br />
<button disabled={
answer.length === 0 ||
status === 'submitting'
}>
Submit
</button>
{error !== null &&
<p className="Error">
{error.message}
</p>
}
</form>
</>
);
}
function submitForm(answer) {
// Pretend it's hitting the network.
return new Promise((resolve, reject) => {
setTimeout(() => {
let shouldError = answer.toLowerCase() !== 'lima'
if (shouldError) {
reject(new Error('Good guess but a wrong answer. Try again!'));
} else {
resolve();
}
}, 1500);
});
}
Output attached below. Thanks sir.
from wala.
Related Issues (20)
- Unable to Download WALA Tutorial PDF HOT 1
- Request for WALA Slicer Tutorial HOT 2
- broken logo URL in top-level README
- Dalvik tests do not pass on JDK 21 HOT 1
- Figure out how to update Eclipse version dependence HOT 2
- A crash bug about points-to analysis in ZeroCFA HOT 1
- How can I get call graph of multiple js files? HOT 1
- Question about control flow graph for synchronized statement HOT 3
- Found bug in JUnitEntryPoints HOT 4
- Clarification Needed on Nodes in JavaScript Call Graph Using Field-Based Algorithm HOT 1
- A bug about the class hierarchy HOT 1
- `com.ibm.wala.core.util.ref.ReferenceCleanser.clearSoftCaches()` throws `java.util.ConcurrentModificationException` HOT 10
- `AbstractScriptEntity.toString()` should call `AbstractScriptEntity.getName()` HOT 1
- Unexpected results in call graph constuction HOT 1
- An inconsistent behaviour between different call graphs HOT 1
- A Wala crash bug when I set entry point HOT 1
- A runtime crash of points to analysis HOT 2
- CHA missed an invocation about interface HOT 1
- False positive of RTA points-to analysis HOT 1
- How to use an older version of WALA? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wala.