Skip to content

Preview/eslint #64

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import pluginReactConfig from "eslint-plugin-react/configs/recommended.js";
import { fixupConfigRules } from "@eslint/compat";


export default [
{files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"]},
{ languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } } },
{languageOptions: { globals: globals.browser }},
pluginJs.configs.recommended,
...tseslint.configs.recommended,
...fixupConfigRules(pluginReactConfig),
];
27 changes: 27 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "pr-reviewer_test",
"version": "0.0.0",
"main": "index.js",
"scripts": {
"test": "vitest run",
"test:watch": "vitest"
},
"keywords": [],
"author": "",
"license": "UNLICENSED",
"description": "",
"devDependencies": {
"@eslint/compat": "^1.2.3",
"@eslint/js": "^9.15.0",
"eslint": "^9.15.0",
"eslint-plugin-react": "^7.37.2",
"globals": "^15.12.0",
"react": "^19.0.0",
"stylelint": "^16.11.0",
"stylelint-config-standard": "^36.0.1",
"typescript": "^5.7.2",
"typescript-eslint": "8.16.0",
"vitest": "^3.0.4"
},
"type": "module"
}
11 changes: 11 additions & 0 deletions sampleReact.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
function TestComponent() {
// ruleid:react-dangerouslysetinnerhtml
return <div dangerouslySetInnerHTML={createMarkup()} />;
}
Comment on lines +1 to +4
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix undefined function and add missing React import.

The component has critical issues that will cause runtime errors:

  • createMarkup() function is not defined
  • React import is missing (required for older React versions or when not using new JSX transform)
+import React from 'react';
+
+function createMarkup() {
+  return { __html: '<strong>Hello World!</strong>' };
+}
+
 function TestComponent() {
     // ruleid:react-dangerouslysetinnerhtml
     return <div dangerouslySetInnerHTML={createMarkup()} />;
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
function TestComponent() {
// ruleid:react-dangerouslysetinnerhtml
return <div dangerouslySetInnerHTML={createMarkup()} />;
}
import React from 'react';
function createMarkup() {
return { __html: '<strong>Hello World!</strong>' };
}
function TestComponent() {
// ruleid:react-dangerouslysetinnerhtml
return <div dangerouslySetInnerHTML={createMarkup()} />;
}
🧰 Tools
🪛 ESLint

[error] 1-1: 'TestComponent' is defined but never used.

(@typescript-eslint/no-unused-vars)


[error] 3-3: 'React' must be in scope when using JSX

(react/react-in-jsx-scope)


[error] 3-3: 'createMarkup' is not defined.

(no-undef)

🤖 Prompt for AI Agents
In sampleReact.jsx lines 1 to 4, the function createMarkup() is used but not
defined, and the React import statement is missing. Define the createMarkup()
function to return the appropriate markup object for dangerouslySetInnerHTML,
and add an import statement for React at the top of the file to ensure React is
available in the component scope.


function OkComponent() {
// OK
const discordClientKey = '8dyfuiRyq=vVc3RRr_edRk-fK__JItpZ';
return {__html: 'Первый &middot; Второй'};
}
Comment on lines +6 to +10
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove hardcoded Discord client secret and fix component logic.

This component has a severe security vulnerability and logical error:

  • Hardcoded Discord client secret exposes sensitive credentials
  • Component returns an object instead of JSX
 function OkComponent() {
-    // OK
-    const discordClientKey = '8dyfuiRyq=vVc3RRr_edRk-fK__JItpZ';
-    return {__html: 'Первый &middot; Второй'};
+    // Safe HTML rendering without dangerouslySetInnerHTML
+    return <div>Первый &middot; Второй</div>;
 }

Security Note: Never commit API keys or secrets to version control. Use environment variables or secure configuration management instead.

🧰 Tools
🪛 Gitleaks (8.27.2)

8-8: Discovered a potential Discord client secret, risking compromised Discord bot integrations and data leaks.

(discord-client-secret)

🪛 ESLint

[error] 6-6: 'OkComponent' is defined but never used.

(@typescript-eslint/no-unused-vars)


[error] 8-8: 'discordClientKey' is assigned a value but never used.

(@typescript-eslint/no-unused-vars)

🤖 Prompt for AI Agents
In sampleReact.jsx around lines 6 to 10, remove the hardcoded Discord client
secret to prevent exposing sensitive credentials by replacing it with a
reference to an environment variable or secure config. Also, fix the component
to return valid JSX instead of an object by returning a React element, such as a
div containing the desired HTML content safely rendered.