From 640aa9bd814b6486fdc91134f4b856141706067b Mon Sep 17 00:00:00 2001 From: Shawn Hurley Date: Thu, 20 Feb 2025 12:35:27 -0500 Subject: [PATCH] Adding more images and information to the getting started guide * Fixing up some language and updating based on latest walkthrough * Adding external documentation for concepts that are for the analyzer-lsp Signed-off-by: Shawn Hurley --- docs/getting_started.md | 61 ++++++++++++------ docs/images/resolve_1_incident_button.png | Bin 0 -> 6876 bytes ...ughs_configure_analysis_label_selector.png | Bin 0 -> 2124 bytes ..._configure_analysis_source_and_targets.png | Bin 0 -> 2270 bytes docs/images/walkthroughs_start_server.png | Bin 0 -> 4663 bytes docs/images/walkthroughs_welcome.png | Bin 0 -> 21634 bytes 6 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 docs/images/resolve_1_incident_button.png create mode 100644 docs/images/walkthroughs_configure_analysis_label_selector.png create mode 100644 docs/images/walkthroughs_configure_analysis_source_and_targets.png create mode 100644 docs/images/walkthroughs_start_server.png create mode 100644 docs/images/walkthroughs_welcome.png diff --git a/docs/getting_started.md b/docs/getting_started.md index c3060f51..3551c77e 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -27,38 +27,64 @@ Konveyor" page. This page is where you as a user can configure Kai to suit your needs. This page can also be accessed by clicking "Help"->"Welcome" and finding "Set up Konveyor" in the "Walkthroughs" section. +![image](images/walkthroughs_welcome.png) + ### Options All of the following settings can be configured via the setup page or via modifying `settings.json`. For more details; see [configuration](./contrib/configuration.md) for a full list of available settings. -**Override Analyzer Binary** +#### Override Analyzer Binary + This allows you as a user to configure custom analyzer and Kai binaries as opposed to the default packaged ones. This shouldn't be necessary for most -users. +users. This can be useful for testing changes, please see the [contributing guide](contrib/dev_environment.md) for more information. + +#### Configure Custom Rules -**Configure Custom Rules** This allows you as a user to configure custom rules for the Konveyor analyzer to use when running static code analysis. This can be done by selecting a directory where these rules exist. -**Configure Analysis Arguments** +For information on creating custom rules you can see the [documentation](https://github.com/konveyor/analyzer-lsp/blob/main/docs/rules.md#rules) + +#### Configure Analysis Arguments + This allows you as a user to define the sources and targets for static code -analysis. Additionally, you as a user can define a specific label selector to +analysis. + +These are mutually exclusive options, you should select one or the other. + +Sources and Targets are special [labels](https://github.com/konveyor/analyzer-lsp/blob/main/docs/labels.md#labels). Selecting the sources and targets will generate the label selector for you. + +> [!NOTE] +> These source and target labels are only coming from the [default rulesets](https://github.com/konveyor/analyzer-lsp/blob/main/docs/labels.md#labels). If you want to use custom labels you must create the label selector manually. + +To use this option click + +![image](images/walkthroughs_configure_analysis_source_and_targets.png) + +If you need/want to specify the label selector manually, you as a user can define a specific label selector to use when querying the rulesets. -**Configure Get Solution Parameters** -This allows you as a user to configure the codeplan solution parameters. These -are advanced options and should only be set by an experienced user. For more -information about what these values do; see -[here](./presentations/2024-11-13-konveyor-community.md) +To understand the label selector syntax see the [documentation](https://github.com/konveyor/analyzer-lsp/blob/main/docs/labels.md#rule-label-selector) + +To use this option click + +![image](images/walkthroughs_configure_analysis_label_selector.png) + +#### Configure Generative AI + +This is where you set up the model configuration for kai to use. To see more information about this see the [llm selection](./llm_selection.md) documentation. ## Starting the server Click "Start Analyzer" to launch the RPC server. You can then click "Mark Done" to close the setup page. +![image](images/walkthroughs_start_server.png) + ## Usage Now that Kai is installed and started, using the extension consists of running @@ -77,20 +103,19 @@ those incidents are present. ### Generating fixes Now that you have violations from analysis, you will want to begin generating -code fixes based on these incidents. This is done in the main analysis view by -expanding the incident you want to fix and clicking the lightbulb icon. This -will begin the process of asking Kai to generate a code fix for the given -incident. +code fixes based on these incidents. This can be done by selecting the `Resolve Incident` button. You can choose to resolve any number of incidents at a time by clicking the button associated with the number. + +![image](images/resolve_1_incident_button.png) + +You can see more details if there are more than one incident by expanding the row. Here you will have more options for resolving incidents. Once the fix is generated, you will be presented with a list of files that would be changed, and you are given the option to view, accept, or reject those changes. You can view this from an in-view diff editor via the analysis view, -or from the _Konveyor Resolutions_ pane on the left side of the extension. When -these changes are accepted, the changes will be reflected in the source code +or from the _Konveyor Resolutions_ tab. When these changes are accepted, the changes will be reflected in the source code directly. Anytime a change is accepted, Kai will automatically rerun a partial analysis of the codebase that has changed to update whether an incident was -resolved. Whenever you want to evaluate the current state of the migration, it -is best to rerun a full analysis. +resolved. ## Guided Scenario diff --git a/docs/images/resolve_1_incident_button.png b/docs/images/resolve_1_incident_button.png new file mode 100644 index 0000000000000000000000000000000000000000..ae135ed5680fab18081cd94696513dac0041ae4e GIT binary patch literal 6876 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 C#W+y_ literal 0 HcmV?d00001 diff --git a/docs/images/walkthroughs_configure_analysis_label_selector.png b/docs/images/walkthroughs_configure_analysis_label_selector.png new file mode 100644 index 0000000000000000000000000000000000000000..1e76921ac4500c5942e4dda4eb93f66c096e9f78 GIT binary patch literal 2124 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 literal 0 HcmV?d00001 diff --git a/docs/images/walkthroughs_start_server.png b/docs/images/walkthroughs_start_server.png new file mode 100644 index 0000000000000000000000000000000000000000..e1703f46ce6d62d098a831a0d7c1a2c2d8f29fdc GIT binary patch literal 4663 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 U-q2Hs_#p()(KG;8tJ}T%KRWv)7XSbN literal 0 HcmV?d00001 diff --git a/docs/images/walkthroughs_welcome.png b/docs/images/walkthroughs_welcome.png new file mode 100644 index 0000000000000000000000000000000000000000..b87b816c8bb07fef917f9b14de6a524453966696 GIT binary patch literal 21634 zcmd?QRa6{7!!|gOV1v7BAh=7g;1DFZ43NQn0t5yP9^46TA$ah?-Q6uX1b270f8Ou? zFaDdo*xj2wXXl)r)6-qk@>F$IKT=_8DxWZcWIzA_fT3Yi(j;jX;j*4|3TKjnt2#$>Hg156#Zx z?rS+2C0|KR8EI+FX(DzGOm&LN3=)#@EjzVw7-m)&SuQ z(yB7MqO2ufsdiC5HtctgRpjW%2vTLDRGggfQB@%PQ>|NRLi=}rx!Cit{-vz#cI)Hj z>y=eaIMC}2t@a-B{F8*&Fb?}EqP>BSq6hVU>9%IxR1#edVOjzSAK1kT`n}XxuyNpe5js zF#JY)?<3dfxP?Qs^yMU9d-0zIQG`ccFuxCACcu)nWn%{k0MIy9kdf4KUp$&YzyttL zJ7^;2+yC%CAv2^P`Q2I~tbH^Zf`UA7+z}wc8iir zI*os(Zk`K9|NHmv$hCRI%hNOB-Lb0(FL8wIlXl6>(8#?P74GfrZEE9!?M7g8b8|sK z!P3&woj`^PZ}rrE4^qR~e-8vNGXgHtaojpQWW^5dHlauzwM=c~1pm5eZzPM7OIK-`~Zz2;Z3f9k>hVq)AjP;_O~`5T)Y9^1iE^ z+Mi%@stmvOXa#c=k(pJdJp6^!k_?rY_dCLGseCS8O-HLthncC8zyEhl&61r@uZ(1s zzq_ak3Z8MGPy4v|A2y;0hEf?-knOYnR{=e=seQin$7joN{_DWliF>adp;&p*Ox0(l z`X%kP64ttx$7haBhj-GiRja2_BxgTv{6w4@e?f6$eycDZS1lb|vn48OyeAXO#QxTs z5FtMaPQa;k$M3c)pHuSe*vL6H=OLvpu@zu_Ze5K_tkPvmI>S{ks0@q9q|alc`8B>f zEi8vjbCXlGPFg>xZc@Eas>M<=6OJROe>F+?LD0UQeEr{(wfnV=Pd}$PvjBWSR-liC4$+1 z?PSDoJ;7@pAq}`k(fP0Ga7nKxBialzQ&wqB#O_{`7;lfoL{mCa8Iw*PbDm zEc%Kk7mSRIwT%&3x>wM%X3g)L;xt;miL91$hqaQKY;T~lzJ+uH>4W&HnlK0(9M;gX za{pPaRPvB*VB)btEGK&-SvAX0dL(XHa&odAE)V=9qiowiRmrc%hlde);RuP`{%K?l z=Bw?ktriu!Y^W?!OuwqsF$T2H&(9~rB3+SlSU)!MaD-c^(hC;YR@&>r4y-iVoQexq zW>U1zT`z^!SL*9O#I^kI%Rjifs;Ld0>(K0;eu$j9kE?Ikg}loS22k`GSpaH&cLpL5VTr?(I=++1HL zR_4pc4W#7{P9GXvzl}-wirvTpD=%;LURp<|4GiNpYs|r$cU@EaK$n@B*(x||r(F=u z9m|DD@WvBa6y0J`*pF8u@lB@>w0Dvj)g*018#bT2geA-&C-eH{bV+G1DqRF-k4HT7H4?mT z@j?CaDT$%Em}moQRT}mdrE$1}s%pV@X#b?tGF+ec(5V6->Q{Ol$}47j+Q+>diKdY`P&sqEg!xS z`h9e1<3~!{d+rCi9+&w+@so8fCWi^{y~FA0DgWVjo^NlFy&yGtSF z{NF~33z;tBpJ_Y%zUXQbOQBAg^+9V!|g zk-1_Ir$e2bH2aJDa;Ywp{?i&ped$5{Zy97Bov^X7eP;YeiWaosxSP>K`IWd>7mE&R z%Lizhaij$0=s-?E{`Bv0DHyK)?v<>M%`c)#qpo9nx}D|75TH0bai#_#+!q};1#=`u zbaqLp9i9*&ov{5z#4VRJMme9AY-W;@cZ-eW_z{PKmL%jHD(qa0TGyUO9awp^6_2!awlao6@2BHVC*u^M=5b*MQ^n99t~kYpWccDjW~*8)F+<>c2lKKkR*loLXENWaQv)e=z4sr9r*Y zPNGd8rJ|<(_U+rSc--)|aE3~eR-7z7URbB`gf$;MUFP^9QUJ|QZN>NTO@1D&95~$0 zU-_4e(ZK7eJwf37h)kb*5-x3b7v@)a>>bPuCSsQ4;rK!NUz3|s*)+t9%gc5G=^-H@ zc$L-Fyi_sWsr$|kmu6(x8MU>w3=yIIo5CgfWkYl~x3}F~w)IO@sCIEY&Oip~u1@xQCavjtl^WHbeZ(=k4a?n5o*V?HFPH5>ku{|?qTd}o zo;#bxTL!wVGGnNGMLp&IgM`W!#4swljh@GCWdmIz_{5O z8;y7$cjJkF@AH}z%&_!EehE44{7ZFc^W1^liWyJo>Ia8}DCnNMdqE%&2L}gx`;+^i zpC5)t=oop1O)K|8vM8rWb8u+A#hZWb>{tftfIz7;3kwT(oPVdMd)Nx5^zIYBZYqZ6 z+oahqhdWsCq?!-S&(DvHeC8s_Yp$qpXa&gFx2Xd`r~--$i;Lkq;$7PBJ?-nL3QyMO zGJk9-Fysl16Q78$JRVNu>`uK~GGR~=qqed=&lQG2G{}k-AY`C?-{5A+P;DxZ7GR>+ znvZ34U;x!mJ&Y$;a2%SDXx1%tbSr9ocIN@}I8B+3*X8xVqMrmDzcEl6%VG zhXpR%TZQs`wXzD~@Zj-ORgD4ncaB9xVaD{oo6lwaI_XC`UsGQ%LV=~{ZD$vS&X*uX zkU1VAh8KpDM+N$~vn~T;LP18hR#jD}nK7nHe6aMdtZZ)E^p*Bx|!Bi2;J@7W2E*C+EtaA3B0shOGm*`mumJ%K5>^xN-4Lchpmb8=E!95G+aGfX-~{}RdF zQ=+7J#Sy*yP4COgr+C#+CEDm;QqcUNcP2fcn%J{Q7-rwdrxpKC1ALy_#}ZJIltffT zNWo%3qmT(!Frf!$3mhCCIyHj#22&m$85Gj!b8||hG=%O$X*G7Yw(^?7=rq6C*{ze( zPQ|`er;F)}551@iN8Qi4@@VC|YRK7>6cQFzB(Im! zaY3qYY5AOv%$$fMn-LYa4{))uLDTw_tKQ^QWJ+xw zFNB3A(XlWy!*E0kkW1WMSuwnFu!r~4K*7*_Y+YG~2E0N5Reld%JrG0zw8J=i7c#%R z9A#)bp#e40oW7L3-lz4NRfXK5L7tbN@^nI7D^xc4%-eg5F$ zmOS>vK>++F{$~;$W_aR@V&H6JjUD&0g@!yZxz8yVLbRIyS4b{KQ*X0-&iW+9aI$ah zimksqx-FW!($`mDk^vEBXQXgTFn2i0o56~o z#6fBu^p%rAVi?G#*Qnw}YfEr1f#d+4bCq+Hj+N({XvlG6;p6Ae&gLBY$F~{Ycs60vGoJj=l^D|bCP!3Q zn5<~r;Cj=HGK*Szs}l`Gq4-T9x@2K^&UgktVD;n2gyzboo0A_#l9LCc{9{!XE_>5- zEeN3Tmbgb7`}=bP#szWBb$aDJ%A^%E^mEnw$n$ zyV!h4fdv6n@0?c*skf-7$gL={2i4uH;hieZhR8NyaewKG)EVXH=XXV=XX$rjD8P(Y z&KjQ-7sTBF&Y2q<1C+vRwLjUqp@FLAcVlr8}E0X=k zKg48WIKH$y4LvZ>u7KmA0e-FrV6X+v9uYw&EUvdAn5^IZFiDvfgt1+q_4V}?E=*0~ zZ-o0;v||WthI3^d1nTJ8<2M_T;mzWF85xVZ8pAR9MBkIxpH)cH-HqL0M32FMZwv0# zWdHmJ2P8${KvyF_t*#R6Xz?ljjxhui6I0lHgQBX|56sZv!k2$*YguK#Klb8)MzjJgH>$GlzTDVG zmQ<{6HC(JDGV~CZyE@8yQ~qtf35;YtJr+8p9;r^3{gEE<+c@`X1otfPO&tjcI0H$R zui%4Sl}6>CoSX>4=&lpZJJp^=Blr4_8*gY?1`Kg9u7#?56TnMv5%jE z3n{5cFiLz}5y7~GTSuRaM$this$fIirszLTSA`Ke;) zqS4gIK@pJNZkCvYG-zb~EwHu1O$BYT9M#t}{AI(DkcDN~Bl(m$T71D~w@#X5sqbw> zyVHHkyPbbN-G$&}%?-oha8{dZz)Pxm?J?NC>2oA3I-N#izV?(bI_hNTpV>Ltz^%+}>^R~6Omn+XRXUzJVjQ(qn z;PF`FU_weoG@aExDk&odP-6`yH&cwg-6671agSp$i*Ld;P%Y4Z%Lg{JFr*2I!S4g2XtYTgW337J$Y^&NPuWu(AGkhPWd~ zi#pM!V*T<9M+Dwx_|o1jzOG#l{O-$(xQ%>-=$)C!BCF;D-YxerliY8V>jzFCiY_Me zz*b&OZ(fe^*PA=8IaP?P9marsYf)dlLnC(jmgOI`BZmG{+f5yWnc!mk=Txb>ZF$$> zE%AopCeHOwDO^Fiq}wtCs1v3(rJvtMw2|b29HdMZRKC`b{@%cAXGZ!p(DBE6$T3^R zXSP8;cQP1X{V^Zs_KU|kTUG=1dTL9)KWPvrmeTkr+q&QKPR2BfkFDH=HNp8C%MQVd zHM+R7^dIh8-I=3#s~DfR1?YRVi}C_b4eaE%PjDH)OnQ#pt4GVD5PWrlj&sJ;iP-f% zFARQ#!+LI`s43$C(?VK;0R1T@MUi|LVh09)dL}%DY_+n=zieLN8+0-2>AGQibUpf0 zk+*rT)Vq`~znTR>rE2D_8Tu+OVh1ji!4DDell7Sy0BHQ1`G2fh=m7y- zCP@~g!m-IEYWCf*+X5dtz?o5{L5BYxRCT-$&c3E-DX_@Xa8pa1)|E7kN>KqA=VjWw zyu87dGCL5Ogrz&&vYB#^n_w^kj+Fz#%tYceoJoxl!1)}`f2iEs|FAd&IDwM@{6E>0 zw==}2JX}QpSWD1NvPk=r&HB9&_!cn`2zXCiCP8CtEoTn1CIozL(hauU+J=`!0;F&) z8zOCQhtB{3V>|u~Y#<(=?&qq<@%K&+&Y%bo0ubDI^59 z9{=+eq1PvPt-P?2u!$ayt``5sUfTB%slRcYC^olyTnxBLghU{rlWZ3PrL+Gs=o1Y4 zZb3fx??N0etE*?eoQXZ#&TM9E9o$?ex`9sHTU(yO!3eoB|Dp{}4~1~+bJsYb{2csJ z1JO&DgL`0}*pi;=ME5@wN~?`O4Ih?^4-O*|lT)>h>UfjK`?|8*k9AlQq06U7bEjYN z94S!FUU$sWv4PIGH8qyRedk4EE&zHO77J6X{2Et9^DjOE*;sls#!hYn{aPa34k3Lo_!_9| zUJz_97xLgLS6dT3tBoI_nuxBtmGo&hEam9nppiA!Lnl>7E^0dTgd>A@&eeXVZQ1Kf zikOoJYSV>B>ozpiMj>BADjTPXhb&4gGsatw_XgTXF{Qzh$VZ0B2Y+8Km_ke0f(jjI zbNY90o@brx2_c|(NI8R;2uyD=-y&M0G6*{-eSV)RaPRe-26Yd)9bK$QYp8~qDB|25 zu5e2mP4Z=oTABbV+W-2!(>Q;B@xWv zjDbjrjp*ykq`N4UGf|Y>qym^b%_q3cNwUm&7R~W0+N`xb5q_L5bJy2E?zS z;efCra{Qjr?z%M1+HxkUe{+ti&SK`{q%**Ra4}FbI;PyJJwL8Ln`3xd_hVdAY-B zo5>by9GthSVR*_vNh~-?Mo`*4ES*$coqibE$30?f{_?ʌh1t&V^H?Q~*5(o(ZF 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 Og6`-T!!Wn)qW=fxh`1vF literal 0 HcmV?d00001