Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
403355d8
Commit
403355d8
authored
Aug 07, 2024
by
isstuev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
process unexpected response from solidityscan
parent
cec56f19
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
43 additions
and
31 deletions
+43
-31
contract.ts
types/api/contract.ts
+21
-18
marketplace.ts
types/client/marketplace.ts
+2
-2
SolidityscanReport.tsx
ui/address/SolidityscanReport.tsx
+7
-3
ContractListModal.tsx
ui/marketplace/ContractListModal.tsx
+1
-1
ContractSecurityReport.tsx
ui/marketplace/ContractSecurityReport.tsx
+1
-1
SolidityscanReportDetails.tsx
ui/shared/solidityscanReport/SolidityscanReportDetails.tsx
+11
-6
No files found.
types/api/contract.ts
View file @
403355d8
...
...
@@ -104,29 +104,32 @@ export interface SmartContractVerificationError {
name
?:
Array
<
string
>
;
}
// it's an external API proxy, we can't guarantee the responce types
export
type
SolidityscanReport
=
{
scan_report
:
{
contractname
:
string
;
scan_status
:
string
;
scan_summary
:
{
issue_severity_distribution
:
{
critical
:
number
;
gas
:
number
;
high
:
number
;
informational
:
number
;
low
:
number
;
medium
:
number
;
};
lines_analyzed_count
:
number
;
scan_time_taken
:
number
;
score
:
string
;
score_v2
:
string
;
threat_score
:
string
;
scan_report
?:
{
contractname
?:
string
;
scan_status
?:
string
;
scan_summary
?:
{
issue_severity_distribution
?:
SolidityscanReportSeverityDistribution
;
lines_analyzed_count
?:
number
;
scan_time_taken
?:
number
;
score
?:
string
;
score_v2
?:
string
;
threat_score
?:
string
;
};
scanner_reference_url
:
string
;
scanner_reference_url
?
:
string
;
};
}
export
type
SolidityscanReportSeverityDistribution
=
{
critical
?:
number
;
gas
?:
number
;
high
?:
number
;
informational
?:
number
;
low
?:
number
;
medium
?:
number
;
};
type
SmartContractSecurityAudit
=
{
audit_company_name
:
string
;
audit_publish_date
:
string
;
...
...
types/client/marketplace.ts
View file @
403355d8
import
type
{
SolidityscanReport
}
from
'
types/api/contract
'
;
import
type
{
SolidityscanReport
,
SolidityscanReportSeverityDistribution
}
from
'
types/api/contract
'
;
export
type
MarketplaceAppPreview
=
{
id
:
string
;
...
...
@@ -54,7 +54,7 @@ export type MarketplaceAppSecurityReport = {
solidityScanContractsNumber
:
number
;
securityScore
:
number
;
totalIssues
?:
number
;
issueSeverityDistribution
:
SolidityscanReport
[
'
scan_report
'
][
'
scan_summary
'
][
'
issue_severity_distribution
'
]
;
issueSeverityDistribution
:
SolidityscanReport
SeverityDistribution
;
};
contractsData
:
Array
<
{
address
:
string
;
...
...
ui/address/SolidityscanReport.tsx
View file @
403355d8
...
...
@@ -29,13 +29,17 @@ const SolidityscanReport = ({ hash }: Props) => {
},
});
const
score
=
Number
(
data
?.
scan_report
.
scan_summary
.
score_v2
);
if
(
isError
||
!
data
?.
scan_report
?.
scan_summary
)
{
return
null
;
}
const
score
=
Number
(
data
.
scan_report
.
scan_summary
.
score_v2
);
if
(
isError
||
!
score
)
{
if
(
!
score
)
{
return
null
;
}
const
vulnerabilities
=
data
?
.
scan_report
.
scan_summary
.
issue_severity_distribution
;
const
vulnerabilities
=
data
.
scan_report
.
scan_summary
.
issue_severity_distribution
;
const
vulnerabilitiesCounts
=
vulnerabilities
?
Object
.
values
(
vulnerabilities
)
:
[];
const
vulnerabilitiesCount
=
vulnerabilitiesCounts
.
reduce
((
acc
,
val
)
=>
acc
+
val
,
0
);
...
...
ui/marketplace/ContractListModal.tsx
View file @
403355d8
...
...
@@ -42,7 +42,7 @@ const ContractListModal = ({ onClose, onBack, type, contracts }: Props) => {
return
contracts
.
filter
((
contract
)
=>
Boolean
(
contract
.
solidityScanReport
))
.
sort
((
a
,
b
)
=>
(
parseFloat
(
b
.
solidityScanReport
?.
scan_summary
.
score_v2
??
'
0
'
))
-
(
parseFloat
(
a
.
solidityScanReport
?.
scan_summary
.
score_v2
??
'
0
'
)),
(
parseFloat
(
b
.
solidityScanReport
?.
scan_summary
?.
score_v2
??
'
0
'
))
-
(
parseFloat
(
a
.
solidityScanReport
?.
scan_summary
?
.
score_v2
??
'
0
'
)),
);
case
ContractListTypes
.
VERIFIED
:
return
contracts
.
filter
((
contract
)
=>
contract
.
isVerified
);
...
...
ui/marketplace/ContractSecurityReport.tsx
View file @
403355d8
...
...
@@ -27,7 +27,7 @@ const ContractSecurityReport = ({ securityReport }: Props) => {
onToggle
();
},
[
onToggle
]);
if
(
!
securityReport
)
{
if
(
!
securityReport
?.
scan_summary
?.
score_v2
)
{
return
null
;
}
...
...
ui/shared/solidityscanReport/SolidityscanReportDetails.tsx
View file @
403355d8
import
{
Box
,
Flex
,
Text
,
Grid
,
useColorModeValue
,
chakra
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
type
{
SolidityscanReport
}
from
'
types/api/contract
'
;
import
type
{
SolidityscanReport
SeverityDistribution
}
from
'
types/api/contract
'
;
type
DistributionItem
=
{
id
:
keyof
SolidityscanReport
[
'
scan_report
'
][
'
scan_summary
'
][
'
issue_severity_distribution
'
]
;
id
:
keyof
SolidityscanReport
SeverityDistribution
;
name
:
string
;
color
:
string
;
}
...
...
@@ -19,29 +19,34 @@ const DISTRIBUTION_ITEMS: Array<DistributionItem> = [
];
interface
Props
{
vulnerabilities
:
SolidityscanReport
[
'
scan_report
'
][
'
scan_summary
'
][
'
issue_severity_distribution
'
]
;
vulnerabilities
:
SolidityscanReport
SeverityDistribution
;
vulnerabilitiesCount
:
number
;
}
type
ItemProps
=
{
item
:
DistributionItem
;
vulnerabilities
:
SolidityscanReport
[
'
scan_report
'
][
'
scan_summary
'
][
'
issue_severity_distribution
'
]
;
vulnerabilities
:
SolidityscanReport
SeverityDistribution
;
vulnerabilitiesCount
:
number
;
}
const
SolidityScanReportItem
=
({
item
,
vulnerabilities
,
vulnerabilitiesCount
}:
ItemProps
)
=>
{
const
bgBar
=
useColorModeValue
(
'
blackAlpha.50
'
,
'
whiteAlpha.50
'
);
const
yetAnotherGrayColor
=
useColorModeValue
(
'
gray.400
'
,
'
gray.500
'
);
const
vulnerability
=
vulnerabilities
[
item
.
id
];
if
(
vulnerability
===
undefined
)
{
return
null
;
}
return
(
<>
<
Box
w=
{
3
}
h=
{
3
}
bg=
{
item
.
color
}
borderRadius=
"6px"
mr=
{
2
}
></
Box
>
<
Flex
justifyContent=
"space-between"
mr=
{
3
}
>
<
Text
>
{
item
.
name
}
</
Text
>
<
Text
color=
{
vulnerabilit
ies
[
item
.
id
]
>
0
?
'
text
'
:
yetAnotherGrayColor
}
>
{
vulnerabilities
[
item
.
id
]
}
</
Text
>
<
Text
color=
{
vulnerabilit
y
>
0
?
'
text
'
:
yetAnotherGrayColor
}
>
{
vulnerabilities
[
item
.
id
]
}
</
Text
>
</
Flex
>
<
Box
bg=
{
bgBar
}
h=
"10px"
borderRadius=
"8px"
>
<
Box
bg=
{
item
.
color
}
w=
{
vulnerabilit
ies
[
item
.
id
]
/
vulnerabilitiesCount
}
h=
"10px"
borderRadius=
"8px"
/>
<
Box
bg=
{
item
.
color
}
w=
{
vulnerabilit
y
/
vulnerabilitiesCount
}
h=
"10px"
borderRadius=
"8px"
/>
</
Box
>
</>
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment