@@ -437,14 +437,14 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
437437 props . event . trigger ( "staticAnaysisWarning" , [
438438 slitherTotal + ssaTotal + hintsTotal === 0
439439 ? - 1
440- : slitherTotal + ssaTotal + hintsTotal ,
440+ : ! solhintEnabled && ! basicEnabled && ! slitherEnabled ? - 1 : slitherTotal + ssaTotal + hintsTotal ,
441441 ] ) ;
442442 }
443443 if ( ! hideWarnings && showLibsWarning ) {
444444 props . event . trigger ( "staticAnaysisWarning" , [
445445 slitherWarnings . length + ssaWarnings . length + hints . length === 0
446446 ? - 1
447- : slitherWarnings . length + ssaWarnings . length + hints . length ,
447+ : ! solhintEnabled && ! basicEnabled && ! slitherEnabled ? - 1 : slitherWarnings . length + ssaWarnings . length + hints . length ,
448448 ] ) ;
449449 }
450450 if ( hideWarnings ) {
@@ -466,57 +466,71 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
466466 : slitherTotal + ssaTotal + hintsTotal ,
467467 ] ) ;
468468 }
469- } , [ hideWarnings , showLibsWarning ] ) ;
469+ if ( hideWarnings && ! solhintEnabled && ! slitherEnabled && ! basicEnabled ) {
470+ props . event . trigger ( "staticAnaysisWarning" , [ - 1 ] )
471+ }
472+ } , [ hideWarnings , showLibsWarning ] )
470473
471474 useEffect ( ( ) => {
472- const slitherTotal =
473- slitherEnabled &&
475+ let slitherTotal = 0
476+ if ( slitherEnabled &&
474477 showSlither &&
475478 slitherWarnings &&
476479 state . data &&
477- state . source !== null
478- ? slitherWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning )
479- . length
480- : 0 ;
481- const ssaTotal =
482- basicEnabled && ssaWarnings && state . data && state . source !== null
483- ? ssaWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning ) . length
484- : 0 ;
485- const hintsTotal =
486- solhintEnabled && hints && state . data && state . source !== null
487- ? hints . length
488- : 0 ;
480+ state . source !== null ) {
481+ slitherTotal = slitherWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning ) . length
482+ props . analysisModule . slitherEnabled = true
483+ }
484+ let ssaTotal = 0
485+ if ( basicEnabled && ssaWarnings && state . data && state . source !== null ) {
486+ ssaTotal = ssaWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning ) . length
487+ props . analysisModule . basicEnabled = true
488+ }
489+
490+ let hintsTotal = 0
491+ if ( solhintEnabled && hints && state . data && state . source !== null ) {
492+ hintsTotal = hints . length
493+ props . analysisModule . solhintEnabled = true
494+ }
489495 props . event . trigger ( "staticAnaysisWarning" , [
490496 slitherTotal + ssaTotal + hintsTotal === 0
491497 ? - 1
492498 : slitherTotal + ssaTotal + hintsTotal ,
493499 ] ) ;
494- } , [ hints . length , slitherWarnings . length , ssaWarnings . length ] ) ;
500+ } , [ hints . length , slitherWarnings . length , ssaWarnings . length ] )
495501
496502 useEffect ( ( ) => {
497- const slitherTotal =
498- slitherWarnings &&
503+ let slitherTotal = 0
504+ if ( slitherWarnings &&
499505 slitherEnabled &&
500506 showSlither &&
501507 state . data &&
502- state . source !== null
503- ? slitherWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning )
504- . length
505- : 0 ;
506- const ssaTotal =
507- ssaWarnings && basicEnabled && state . data && state . source !== null
508- ? ssaWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning ) . length
509- : 0 ;
510- const hintsTotal =
511- hints && solhintEnabled && state . data && state . source !== null
512- ? hints . length
513- : 0 ;
508+ state . source !== null ) {
509+ slitherTotal = slitherWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning )
510+ . length
511+ props . analysisModule . slitherEnabled = true
512+ }
513+
514+ let ssaTotal = 0
515+ if ( ssaWarnings && basicEnabled && state . data && state . source !== null ) {
516+ ssaTotal = ssaWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning ) . length
517+ props . analysisModule . basicEnabled = true
518+ }
519+
520+ let hintsTotal = 0
521+ if ( hints && solhintEnabled && state . data && state . source !== null ) {
522+ hintsTotal = hints . length
523+ }
514524 props . event . trigger ( "staticAnaysisWarning" , [
515525 slitherTotal + ssaTotal + hintsTotal === 0
516526 ? - 1
517527 : slitherTotal + ssaTotal + hintsTotal ,
518- ] ) ;
519- } , [ solhintEnabled , basicEnabled , slitherEnabled , showSlither ] ) ;
528+ ] )
529+ } , [ solhintEnabled , basicEnabled , slitherEnabled , showSlither ] )
530+
531+ useEffect ( ( ) => {
532+
533+ } , [ ] )
520534
521535 const handleSlitherEnabled = async ( ) => {
522536 const checkRemixd = await props . analysisModule . call (
@@ -525,36 +539,42 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
525539 "remixd"
526540 ) ;
527541 if ( showSlither ) {
528- setShowSlither ( false ) ;
542+ setShowSlither ( false )
543+ props . analysisModule . slitherEnabled = false
529544 }
530545 if ( ! showSlither ) {
531- setShowSlither ( true ) ;
546+ setShowSlither ( true )
547+ props . analysisModule . slitherEnabled = true
532548 }
533549 } ;
534550
535551 const handleBasicEnabled = ( ) => {
536552 if ( basicEnabled ) {
537- setBasicEnabled ( false ) ;
553+ setBasicEnabled ( false )
554+ props . analysisModule . basicEnabled = false
538555 if ( solhintEnabled ) {
539- setSelectedTab ( "solhint" ) ;
556+ setSelectedTab ( "solhint" )
540557 }
541- props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] ) ;
558+ props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] )
542559 } else {
543- setBasicEnabled ( true ) ;
544- props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] ) ;
560+ setBasicEnabled ( true )
561+ props . analysisModule . basicEnabled = true
562+ props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] )
545563 }
546564 } ;
547565
548566 const handleLinterEnabled = ( ) => {
549567 if ( solhintEnabled ) {
550568 setSolhintEnabled ( false ) ;
569+ props . analysisModule . solhintEnabled = false
551570 if ( basicEnabled ) {
552- setSelectedTab ( "remix" ) ;
571+ setSelectedTab ( "remix" )
553572 }
554- props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] ) ;
573+ props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] )
555574 } else {
556- setSolhintEnabled ( true ) ;
557- props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] ) ;
575+ setSolhintEnabled ( true )
576+ props . analysisModule . solhintEnabled = true
577+ props . event . trigger ( "staticAnalysisWarning" , [ - 1 ] )
558578 }
559579 } ;
560580
@@ -635,7 +655,59 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
635655 </ div >
636656 </ div >
637657 ) )
638- : hintErrors . map ( ( hint , index ) => (
658+ : ! hideWarnings && ! showLibsWarning && ! basicEnabled && solhintEnabled ? hints . map ( ( hint , index ) => (
659+ < div
660+ key = { index }
661+ className = { `${
662+ hint . type === "warning"
663+ ? "alert alert-warning"
664+ : "alert alert-danger"
665+ } `}
666+ style = { {
667+ cursor : "pointer" ,
668+ overflow : "hidden" ,
669+ textOverflow : "ellipsis" ,
670+ } }
671+ onClick = { async ( ) => {
672+ await props . analysisModule . call (
673+ "editor" ,
674+ "discardHighlight"
675+ ) ;
676+ await props . analysisModule . call (
677+ "editor" ,
678+ "highlight" ,
679+ {
680+ end : {
681+ line : hint . line ,
682+ column : hint . column + 1 ,
683+ } ,
684+ start : {
685+ line : hint . line ,
686+ column : hint . column ,
687+ } ,
688+ } ,
689+ state . file ,
690+ "" ,
691+ { focus : true }
692+ ) ;
693+ } }
694+ >
695+ < div >
696+ < span className = "text-wrap" >
697+ { hint . formattedMessage }
698+ </ span >
699+ < br />
700+ < CustomTooltip
701+ placement = "right"
702+ tooltipId = "errorTooltip"
703+ tooltipText = { `Position in ${ state . file } ` }
704+ tooltipClasses = "text-nowrap"
705+ >
706+ < span > { `Pos: ${ hint . column } :${ hint . line } ` } </ span >
707+ </ CustomTooltip >
708+ </ div >
709+ </ div >
710+ ) ) : hintErrors . map ( ( hint , index ) => (
639711 < div
640712 key = { index }
641713 className = "alert alert-danger"
@@ -748,7 +820,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
748820 ) ,
749821 child : (
750822 < >
751- { Object . entries ( warningState ) . length > 0 ? (
823+ { ssaWarnings . length > 0 ? (
752824 < div id = "staticanalysisresult" >
753825 < div className = "mb-4 pt-2" >
754826 < div >
@@ -788,7 +860,24 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
788860 />
789861 </ div >
790862 ) )
791- : null }
863+ : ! hideWarnings && ! showLibsWarning && basicEnabled
864+ ? ssaWarnings . filter ( ( x ) => ! x . options . isLibrary && x . hasWarning )
865+ . map ( ( x , i ) => (
866+ < div
867+ data-id = { `staticAnalysisModule${ x . warningModuleName } ${ i } ` }
868+ id = { `staticAnalysisModule${ x . warningModuleName } ${ i } ` }
869+ key = { i }
870+ >
871+ < ErrorRenderer
872+ name = { `staticAnalysisModule${ x . warningModuleName } ${ i } ` }
873+ message = { x . msg }
874+ opt = { x . options }
875+ warningErrors = { "" }
876+ ssaState = { state }
877+ editor = { props . analysisModule }
878+ />
879+ </ div >
880+ ) ) : null }
792881 </ div >
793882 </ div >
794883 </ div >
@@ -912,7 +1001,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
9121001 </ >
9131002 ) ,
9141003 } ,
915- ] ;
1004+ ]
9161005
9171006 const checkBasicStatus = ( ) => {
9181007 return Object . values ( groupedModules )
@@ -923,7 +1012,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
9231012 } )
9241013 . flat ( )
9251014 . every ( ( el ) => categoryIndex . includes ( el ) ) ;
926- } ;
1015+ }
9271016 return (
9281017 < div className = "analysis_3ECCBV px-3 pb-1" >
9291018 < div className = "my-2 d-flex flex-column align-items-left" >
@@ -1027,7 +1116,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
10271116 buttonText = { `Analyze ${ state . file } ` }
10281117 title = { `${ runButtonTitle } ` }
10291118 classList = "btn btn-sm btn-primary btn-block"
1030- onClick = { async ( ) =>
1119+ onClick = { async ( ) => {
10311120 await run (
10321121 state . data ,
10331122 state . source ,
@@ -1055,15 +1144,15 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
10551144 solhintEnabled ,
10561145 basicEnabled
10571146 )
1058- }
1147+ } }
10591148 disabled = {
10601149 state . data === null ||
10611150 ! isSupportedVersion ||
10621151 ( ! solhintEnabled && ! basicEnabled )
10631152 }
10641153 />
10651154 ) }
1066- { ssaWarnings . length > 0 && hints . length > 0 ? (
1155+ { ssaWarnings . length > 0 || hints . length > 0 ? (
10671156 < div className = "d-flex border-top flex-column" >
10681157 { slitherWarnings . length > 0 ||
10691158 hints . length > 0 ||
@@ -1130,7 +1219,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
11301219 </ Nav . Item >
11311220 ) : null }
11321221 { solhintEnabled ? (
1133- < Nav . Item className = "text-decoration-none font-weight-bold px-2" >
1222+ < Nav . Item >
11341223 < Nav . Link
11351224 className = "text-decoration-none font-weight-bold px-2"
11361225 eventKey = { tabKeys [ 0 ] . tabKey }
@@ -1140,7 +1229,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
11401229 </ Nav . Item >
11411230 ) : null }
11421231 { slitherEnabled && showSlither ? (
1143- < Nav . Item className = "text-decoration-none font-weight-bold px-2" >
1232+ < Nav . Item >
11441233 < Nav . Link
11451234 className = "text-decoration-none font-weight-bold px-2"
11461235 eventKey = { tabKeys [ 2 ] . tabKey }
@@ -1168,7 +1257,7 @@ export const RemixUiStaticAnalyser = (props: RemixUiStaticAnalyserProps) => {
11681257 </ div >
11691258 </ div >
11701259 </ div >
1171- ) ;
1172- } ;
1260+ )
1261+ }
11731262
11741263export default RemixUiStaticAnalyser ;
0 commit comments