Projektenként eltérő kódformázási beállítások a Studioban

A Visual Studio egyik kiváló szolgáltatása, hogy segít nekünk megformázni a forráskódot, mégpedig olyanra, ahogyan mi szeretnénk. Irány a Tools > Options > Text Editor beállítások, ahol kedvünkre kapcsolgathatunk (katt a teljes képért):

Visual Studio Text Editor beállítások

Az így összeállított beállításainkat exportálhatjuk, majd később importálhatjuk más gépen vagy éppen megoszthatjuk másokkal. Ehhez van egy Import and Export Settings varázsló a Tools menüben:

Import and Export Settings varázsló

A bökkenő ezzel csak az, hogy ez felhasználónkénti beállítás, és nem projektenkénti. Azaz ha több projekten is dolgozunk, ahol más a kódformázási standard, akkor bajban vagyunk, mert a beállítások hozzánk kötődnek és nem az egyes projektekhez.

Nem vagyok egyedül ezzel a problémával, már más is felvetette, és itt lehet szavazni, hogy megoldódjon a következő Studioban: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2089769-store-per-project-source-formatting-settings-with-

Szerencsére a devenv.exe-nek van egy /ResetSettings parancssori kapcsolója, ami után megadhatjuk a használni kívánt és korábban az export varázslóval létrehozott .vsssettings fájl nevét és elérési útját. Nincs más hátra, minden különböző beállításhoz létre kell hozni egy-egy önálló parancsikont:

Visual Studio indítása ResetSettings kapcsolóval

A dolog működőképes, de nem olyan kényelmes, mint ahogy szeretnénk:

  • A Studio lassabban fog elindulni, gyakorlatilag a háttérben lenyomja az import varázslót. Ez nem gond, ha naponta egyszer indítjuk el, de ha gyakran, akkor zavarni fog.
  • A saját parancsikonnal elindított Studio beállításai lesznek “A Studio beállítások” a gépen (pontosabban az aktuális felhasználónál), azaz ha utána bármikor, bárhogy (Start menüből, .sln fájlra kattintva) indítunk egy Studiot, akkor az utoljára importált beállítások lesznek érvényben. Nincs automatikus visszaállás a gyári értékekre.
  • Le kell szokni arról, hogy az .sln fájlra kattintva nyitjuk meg a forráskódot, hiszen akkor az utoljára importált beállítások lesznek érvényben. Tehát a kötelező ügymenet ezek után mindig az, hogy először elindítjuk a Studiot a  projekt saját parancsikonjával, majd a menüből megnyitjuk a projekthez tartozó solutiont.

Tudtok jobb megoldást?

 

Technorati-címkék:
Advertisements

9 thoughts on “Projektenként eltérő kódformázási beállítások a Studioban

  1. SzLZs

    Lehet hogy szelektíven olvastam, de nálam úgy működik, hogy nyomok egy Ctrl+K, Ctrl+D kombinációt, oszt át van formázva a K&R+BS-re.

    if (alma) {
    körte;
    }
    else {
    paprika;
    }

  2. Balássy György Szerző

    A CTRL+K, CTRL+D az aktuális formázási beállításaid alapján formázza meg a doksit, ez nagyon rendben is van. Az a fő kérdés, hogy mi van akkor, ha többféle formázási beállítást akarsz használni, mert az egyik projektben így szokás kódolni, a másikban meg amúgy.

  3. SzLZs

    Eccerű, mint a faék: egyféle stílusban kódolok; akinek nem teccik, az nyom majd egy Ctrl+K, Ctrl+D kombinációt, oszt nem kell neki rosszul éreznie magát.

    Érdekes jelenség számomra még mindig, hogy vannak esetek, ahol attól is teszik függővé egy projekt sikerességét, hogy a kóderek egyformán tördelik-e a sorokat. Én pl. szarul érezném magam, ha így kellene tördelnem:

    if (alma)
    {
    körte;
    }
    else
    {
    paprika;
    }

    Nem azért, mert Bjarne a király, hanem azért mert pont úgy normális (nekem is).

    Én se várom el senkitől, hogy szarul érezze magát kódolás közben, és nem szeretem, ha valaki ilyen elvárásokat támaszt másokkal szemben, mert azt hiszi, hogy ez számít, közben meg arra sem képes, hogy nyomjon magának egy Ctrl+K, Ctrl+D-t. (2011-et írunk.)

    Komolyan kérdem: ma, amikor két mozdulat a saját ízlésedre formázni egy kódot, miért érdekes, hogy a mások projektjében, amiben részt veszel, mi a kódolási szokás?

    A programozás, művészet, a kódolási stílus pedig e művészet része.
    Ha csoportban dolgozik valaki egy kódon, akkor 2011-ben nyomjon mindenki Ctrl+K, Ctrl+D-t, ha olyan kódfájlba “botlik” bele, ami pont nem úgy van formázva, ahogy neki a legjobban megfelel.

    Az archívumba helyezés előtt meg bingeljen magának a projektvezető egy formázót, aztán ízlése szerint formázza át a gyönyört.

    1. Balássy György Szerző

      Szerintem ez nem ilyen egyszerű. Elvárjuk a fejlesztőeszköztől, hogy formázzon úgy, ahogy nekünk tetszik, de ha ez egy csapatban mindenkinél más, akkor a módosítással létrejövő fájlverziók diffelése borzasztó élménnyé tud válni. Elég csak a tabulátorok és a szóközök különbözőségét nézni: a Studio kicseréli a tabokat szóközre (vagy fordítva), látszólag nem változik semmi, mégis ha összediffeled a két fájlt, akkor minden sort ki fog jelölni módosítottként.

  4. SzLZs

    Teljesen igazad van.

    Akkor a következő VS-verzióhoz kitalálhatunk egy óhajt: a kódfájlok tárolódjanak kötött formába, a Studio meg jelenítse meg abban a stílusban, ahogy beállítottam magamnak. Ha kötelező a projekten belül az egységes “formázás”, bekapcsolod.

    (A tabot meg nem értem, hogy miért jó spészekkel helyettesíteni. Nem megy át a tűzfalon, vagy mi?)

    1. Balássy György Szerző

      Én is tab-párti vagyok, de sokan azt mondják, hogy azért jó a szóköz, mert az tényleg mindig, mindenhol, mindenkinek ugyanúgy, helyesen jelenik meg, függetlenül attól, hogy mivel szerkeszted. Szerintem ez a tab-ra legalább ennyire igaz, de mindegy.

      Arra tippelek, hogy azért nem a megjelenítésnél formáz a Studio, hanem tárolás előtt, mert ez így gondolom sokkal hatékonyabb, ráadásul ha más eszközzel (pl. Blend, Notepad, vi) nyitod meg a forráskódot, akkor is ezt fogod látni.

  5. kketto

    Most csak egy szerény véleményt fogok írni. Tehát a problémát ott látom, hogy egyfelől a formázásnak köze nincs a szemantikához (már ha jól van megírva a nyelvi elemző – úgy mint szintaktikai és szemantikai), másfelől a Visual Studio eleddig összes verziója ún. statikus formázásra képes (értem ez alatt, hogy a forrás file, amit megjelenít, abban benne vannak a space-ek, tab-ok, új sorok…). Mi lehet a megoldás?
    Annak idején még megboldogult egyetemista koromban másod magammal (OTDK részeként) összehoztunk egy olyan jószágot, aminek a neve szintaxis vezérelt editor volt.
    A működés az pedig az volt, hogy adva van a nyelv, annak a szintaxisához kapcsolható egy formázási stílus (nem igazán ez volt a lényeg, de ez is volt), ill. a kód szerkesztése egy (történetesen LL(1) nyelv) a nonterminálisok különböző szabályok szerinti kibontogatásával történt (is, persze mert a tokeneket be kellett néha gépelni). Ja és ez az egész pont 20 éve volt, persze text képernyőn, meg a Borland féle Turbo Pascal-ban, de az volt az érdekes, hogy megvalósított volt.
    Visszatérve a mába, én úgy látom, itt van egy “piaci rés”, miszerint egy VS 2010 extension lenne létrehozható, ami mindig a VS beállítása szerint jelenítené meg a forrás szöveget – függetlenül attól, hogy a file-ban hogyan is van, azaz akár lehetne “csíkban” is – értsd az összes karakter egy sorban – és akkor annyira “degradálódik” a probléma, miszerint legyen feltelepítve ez az extension minden fejlesztő gépére, aki a formázásra “ugrik”.

    1. SzLZs

      Igen, a VS mindig azonos módon tárolná a fájlban, de a megjelenítésnél meg “hazudna” egyet, aszerint, ahogy beállítottam neki a formázási igényemet.

      +++

      A szóközösöknek meg üzenem, hogy az a baj a szóközükkel, hogy nem lehet ízlés szerint megjeleníteni a behúzásokat, mivel pl. a 4 szóköz az négy szóköz, ami ha pl. egy behúzási egységet jelent, akkor ugyanezt tabbal már tudom szabályozni, hogy az ízlésemnek megfelelően mekkorának láccon a képernyőn.

      Idilli állapot:Józsi 8 szóköznyi behúzásra esküszik, és naná, hogy, rendes ember, mert bekapcsolta a kódszerkesztőjében, hogy az tabot tegyen minden leütött TAB-hoz. (Jó, nem, ha TAB-ot nyomok, akkor TAB-ot rögzít a szerkesztő… micsoda hülyeség! …) Én meg rühellem a 8 szóköznyi behúzást behúzásonként, ezért beállítom a szerkeztőbe, hogy 1 TAB = 4 szóközzel. Oszt mindenki megnyugodhat.

      Azok a szerencsétlenek, akik meg a szóközre esküsznek, áhhh szóra sem érdemesek!
      Az ne legyen már érv, hogy egyformán jelenik meg minden szerkesztőben. A behúzás a behúzás; szóközökkel helyettesíteni hülyeség. Akinek ezt magyarázni kell, annak azt sem lehet elmagyarázni, hogy miért nem így:

      for (Int32 i = 0; i < 10; i++) {

      }

      és miért így helyes:

      for (Int32 i = 0; i < 10; ++i) {

      }

      És igen, ez nem C++, csak C#, és mégis.
      Számomra lehangoló, hogy nagy tudású programozók közül is sokan tesznek a szemantikára; a programolók meg nem számítanak.

      1. kketto

        Nem teljesen látom, mi is tkp. a mondandó a “tab vallási fantizmuson” túl.
        Az indító posztban szereplő felvetést – miszerint lehessen project dependent formázást beállítani a Visual Studio-ban, én igazán transzformálnám az általam leírtra. A formázásnak a program működéséhez nincsen köze, az csak a “szegény humán” tényező számára szükséges, annak viszont lényeges tud lenni, és nem biztos, hogy projectenként eltérő formázás az üdvözítő, hiszen nagyjából egy embernek egy formázás a legszebb (azaz a formázások halmazán az egyéni szépséget mint részben rendezést tekintve, egyetlen maximális elem van :)).

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s