mcp-server-semgrep
Version:
MCP Server for Semgrep Integration - static code analysis with AI
100 lines (90 loc) • 2.04 kB
JSX
class Test1 extends React.Component {
constructor() {
// ruleid:react-props-in-state
this.state = {
foo: 'bar',
color: this.props.color,
one: 1
};
}
render() {
const { color } = this.state;
return (
<button className={'Button-' + color}>
{this.props.children}
</button>
);
}
}
class Test2 extends React.Component {
constructor() {
// ruleid:react-props-in-state
this.state = {
textColor: slowlyCalculateTextColor(this.props.color)
};
}
render() {
return (
<button className={
'Button-' + this.props.color +
' Button-text-' + this.state.textColor
}>
{this.props.children}
</button>
);
}
}
class OkTest extends React.Component {
// ok: react-props-in-state
constructor() {
this.state = {
foo: 'bar',
initialColor: this.props.color,
one: 1
};
}
render() {
const { color } = this.state;
return (
<button className={'Button-' + color}>
{this.props.children}
</button>
);
}
}
function Test3({ text }) {
// ruleid:react-props-in-state
const [buttonText] = useState(text)
return <button>{buttonText}</button>
}
function Test4(props) {
// ruleid:react-props-in-state
const [formattedText] = useState(() => slowlyFormatText(props.text))
return <button>{formattedText}</button>
}
function OkTest1({ color, children }) {
const textColor = useMemo(
// ok: react-props-in-state
() => slowlyCalculateTextColor(color),
[color]
);
return (
<button className={'Button-' + color + ' Button-text-' + textColor}>
{children}
</button>
);
}
class OkTest2 extends React.PureComponent {
render() {
// ok: react-props-in-state
const textColor = slowlyCalculateTextColor(this.props.color);
return (
<button className={
'Button-' + this.props.color +
' Button-text-' + textColor
}>
{this.props.children}
</button>
);
}
}