From e63cb4124eb17bd92291c89a8e83a5e52be499d7 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Mon, 8 Jul 2024 16:54:24 +0530 Subject: [PATCH 1/4] Show Solidity Scan Summary --- .../src/lib/contract-selection.tsx | 9 ++--- .../src/lib/solScanTable.tsx | 22 ++++++------ .../solidity-compiler/src/lib/types/index.ts | 34 +++++++++++++++++++ 3 files changed, 51 insertions(+), 14 deletions(-) diff --git a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx index 312ee0e475..c7f694bc33 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx @@ -1,6 +1,6 @@ import React, {useState, useEffect} from 'react' // eslint-disable-line import { FormattedMessage, useIntl } from 'react-intl' -import { ContractPropertyName, ContractSelectionProps } from './types' +import { ContractPropertyName, ContractSelectionProps, ScanReport } from './types' import {PublishToStorage} from '@remix-ui/publish-to-storage' // eslint-disable-line import {TreeView, TreeViewItem} from '@remix-ui/tree-view' // eslint-disable-line import {CopyToClipboard} from '@remix-ui/clipboard' // eslint-disable-line @@ -312,10 +312,11 @@ export const ContractSelection = (props: ContractSelectionProps) => { const url = data.payload.scan_details.link const { data: scanData } = await axios.post('https://solidityscan.remixproject.org/downloadResult', { url }) - const scanDetails: Record[] = scanData.scan_report.multi_file_scan_details + console.log('scan data--->', scanData) + const scanReport: ScanReport = scanData.scan_report - if (scanDetails && scanDetails.length) { - await plugin.call('terminal', 'logHtml', ) + if (scanReport?.multi_file_scan_details?.length) { + await plugin.call('terminal', 'logHtml', ) } else { const modal: AppModal = { id: 'SolidityScanError', diff --git a/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx b/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx index 5e7a3b4838..81801d9957 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx @@ -1,27 +1,22 @@ // eslint-disable-next-line no-use-before-define import React from 'react' import parse from 'html-react-parser' +import { ScanReport } from './types' const _paq = (window._paq = window._paq || []) interface SolScanTableProps { - scanDetails: Record[], + scanReport: ScanReport fileName: string } export function SolScanTable(props: SolScanTableProps) { - const { scanDetails, fileName } = props + const { scanReport, fileName } = props + const { multi_file_scan_details, multi_file_scan_summary } = scanReport return ( <>
SolidityScan result for {fileName}:
-

{scanDetails.length} warnings found. See the warning details below. For more details,  - _paq.push(['trackEvent', 'solidityCompiler', 'solidityScan', 'goToSolidityScan'])}> - go to SolidityScan. - -

@@ -35,7 +30,7 @@ export function SolScanTable(props: SolScanTableProps) { { - Array.from(scanDetails, (template, index) => { + Array.from(multi_file_scan_details, (template, index) => { return ( @@ -51,6 +46,13 @@ export function SolScanTable(props: SolScanTableProps) {
{index + 1}.
+

warnings found. See the warning details below. For more details,  + _paq.push(['trackEvent', 'solidityCompiler', 'solidityScan', 'goToSolidityScan'])}> + go to SolidityScan. + +

) } diff --git a/libs/remix-ui/solidity-compiler/src/lib/types/index.ts b/libs/remix-ui/solidity-compiler/src/lib/types/index.ts index 0fddf47892..12bca721b8 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/types/index.ts +++ b/libs/remix-ui/solidity-compiler/src/lib/types/index.ts @@ -2,6 +2,40 @@ import { ICompilerApi, ConfigurationSettings, iSolJsonBinData } from '@remix-pro import { CompileTabLogic } from '../logic/compileTabLogic' export type onCurrentFileChanged = (fileName: string) => void +//// SolidityScan Types + +export interface ScanTemplate { + issue_id: string + issue_name: string + issue_remediation?: string + issue_severity: string + issue_status: string + static_issue_description: string + issue_description?: string + issue_confidence: string + metric_wise_aggregated_findings?: Record[] +} + +export interface ScanDetails { + issue_id: string + no_of_findings: string + template_details: ScanTemplate +} + +export interface ScanReport { + details_enabled: boolean + file_url_list: string[] + multi_file_scan_details: ScanDetails[] + multi_file_scan_summary: Record + multi_file_scan_status: string + scan_id: string + scan_status: string + scan_type: string + // others +} + +//// SolidityScan Types + export interface SolidityCompilerProps { api: ICompilerApi } From b2e5175d6061f3abf1d0de7f0bb408469aff7d89 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Mon, 8 Jul 2024 20:41:41 +0530 Subject: [PATCH 2/4] show summary --- .../src/lib/solScanTable.tsx | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx b/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx index 81801d9957..89c56f0d7c 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx @@ -46,13 +46,22 @@ export function SolScanTable(props: SolScanTableProps) { -

warnings found. See the warning details below. For more details,  - _paq.push(['trackEvent', 'solidityCompiler', 'solidityScan', 'goToSolidityScan'])}> - go to SolidityScan. - -

+ + { multi_file_scan_summary ? ( + <> +

Scan Summary:

+

  Lines Analyzed: {multi_file_scan_summary.lines_analyzed_count}

+

  Scan Score: {multi_file_scan_summary.score_v2}

+

  Issue Distribution: { JSON.stringify(multi_file_scan_summary.issue_severity_distribution, null, 1)}

+

For more details,  + _paq.push(['trackEvent', 'solidityCompiler', 'solidityScan', 'goToSolidityScan'])}> + go to SolidityScan. + +

+ + ): null} ) } From 17a982bbdfe377259cd2f4789739953997b1f8c6 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Mon, 8 Jul 2024 20:52:18 +0530 Subject: [PATCH 3/4] fix linting --- .../src/lib/solScanTable.tsx | 20 +++++++++---------- .../solidity-compiler/src/lib/types/index.ts | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx b/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx index 89c56f0d7c..7c64cb4203 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx @@ -49,17 +49,17 @@ export function SolScanTable(props: SolScanTableProps) { { multi_file_scan_summary ? ( <> -

Scan Summary:

-

  Lines Analyzed: {multi_file_scan_summary.lines_analyzed_count}

-

  Scan Score: {multi_file_scan_summary.score_v2}

-

  Issue Distribution: { JSON.stringify(multi_file_scan_summary.issue_severity_distribution, null, 1)}

-

For more details,  - _paq.push(['trackEvent', 'solidityCompiler', 'solidityScan', 'goToSolidityScan'])}> +

Scan Summary:

+

  Lines Analyzed: {multi_file_scan_summary.lines_analyzed_count}

+

  Scan Score: {multi_file_scan_summary.score_v2}

+

  Issue Distribution: { JSON.stringify(multi_file_scan_summary.issue_severity_distribution, null, 1)}

+

For more details,  + _paq.push(['trackEvent', 'solidityCompiler', 'solidityScan', 'goToSolidityScan'])}> go to SolidityScan. - -

+ +

): null} diff --git a/libs/remix-ui/solidity-compiler/src/lib/types/index.ts b/libs/remix-ui/solidity-compiler/src/lib/types/index.ts index 12bca721b8..1aa0b84f25 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/types/index.ts +++ b/libs/remix-ui/solidity-compiler/src/lib/types/index.ts @@ -2,7 +2,7 @@ import { ICompilerApi, ConfigurationSettings, iSolJsonBinData } from '@remix-pro import { CompileTabLogic } from '../logic/compileTabLogic' export type onCurrentFileChanged = (fileName: string) => void -//// SolidityScan Types +//// SolidityScan Types export interface ScanTemplate { issue_id: string @@ -34,7 +34,7 @@ export interface ScanReport { // others } -//// SolidityScan Types +//// SolidityScan Types export interface SolidityCompilerProps { api: ICompilerApi From 56d388c5ff5be14596cc7ed9955d678312449fa0 Mon Sep 17 00:00:00 2001 From: aniket-engg Date: Tue, 9 Jul 2024 11:06:39 +0530 Subject: [PATCH 4/4] updated link --- libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx | 3 +-- libs/remix-ui/solidity-compiler/src/lib/solScanTable.tsx | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx index c7f694bc33..b13f3ddcb3 100644 --- a/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx +++ b/libs/remix-ui/solidity-compiler/src/lib/contract-selection.tsx @@ -312,7 +312,6 @@ export const ContractSelection = (props: ContractSelectionProps) => { const url = data.payload.scan_details.link const { data: scanData } = await axios.post('https://solidityscan.remixproject.org/downloadResult', { url }) - console.log('scan data--->', scanData) const scanReport: ScanReport = scanData.scan_report if (scanReport?.multi_file_scan_details?.length) { @@ -339,7 +338,7 @@ export const ContractSelection = (props: ContractSelectionProps) => { title: , message: