Checksytle für Visual Studio
-
Hallo,
ich bin auf der Suche nach einer Möglichkeit zur Überprüfung meines Codes. Am liebsten wäre es mir, wenn das ganze funktionieren würde wie zum Beispiel Eclipse und Checkstyle. Leider blieb meine Suche bisher erfolglos. Kennt ihr ein PlugIn für Visual Studio, welches diese Funktionalität bietet und möglichst Freeware ist?
Danke
-
Du meinst eine Überprüfung via SAL!?
Das ist in VS2005 (Team Sutie) schon drin und wird u.a. im PSDK und auch im gesamten CRT/MFC Bereich schön eingesetzt...
-
Leider bin ich "nur" im Besitz der Professional Edition.
-
Nur noch als Ergänzung:
/analyze (Enterprise Code Analysis)
http://msdn2.microsoft.com/en-us/library/ms173498(VS.80).aspxSAL Annotations
http://msdn2.microsoft.com/en-us/library/ms235402(VS.80).aspx
-
A Free, Fast and Small Automatic Formatter for C, C++, C#, and Java Source Code:
http://sourceforge.net/projects/astyle/alternativ kannst du dir auch mit CTags aus deinem Source eine Tag Datei erstellen lassen - diese Tag Datei sieht dann etwa so aus:
EndRendering ZFXD3D_main.cpp /^void ZFXD3D::EndRendering(void) {$/;" f class:ZFXD3D Enum ZFXD3D_enum.cpp /^HRESULT ZFXD3DEnum::Enum(HWND hAdapter, HWND hMode,$/;" f class:ZFXD3DEnum EnumAdapters ZFXD3D_enum.cpp /^HRESULT ZFXD3DEnum::EnumAdapters(void) {$/;" f class:ZFXD3DEnum EnumCombos ZFXD3D_enum.cpp /^HRESULT ZFXD3DEnum::EnumCombos(ZFXDEVICEINFO &xDev) {$/;" f class:ZFXD3DEnum EnumDevices ZFXD3D_enum.cpp /^HRESULT ZFXD3DEnum::EnumDevices(ZFXADAPTERINFO &xAdapter) {$/;" f class:ZFXD3DEnum GetBits ZFXD3D_enum.cpp /^UINT ZFXD3DEnum::GetBits(D3DFORMAT fmt) {$/;" f class:ZFXD3DEnum GetSelectedItem ZFXD3D_enum.cpp /^void* GetSelectedItem(HWND hWnd) {$/;" f GetSelections ZFXD3D_enum.cpp /^void ZFXD3DEnum::GetSelections(ZFXDEVICEINFO *pD, D3DDISPLAYMODE *dspmd,$/;" f class:ZFXD3DEnum Go ZFXD3D_init.cpp /^HRESULT ZFXD3D::Go(void) {$/;" f class:ZFXD3D IDC_ADAPTER resource.h 5;" d IDC_ADAPTERFMT resource.h 12;" d IDC_BACKFMT resource.h 13;" d IDC_DEVICE resource.h 10;" d IDC_FULL resource.h 7;" d IDC_MODE resource.h 11;" d IDC_MODES resource.h 6;" d IDC_REF resource.h 9;" d IDC_WND resource.h 8;" d Init ZFXD3D_init.cpp /^HRESULT ZFXD3D::Init(HWND hWnd, const HWND *hWnd3D, $/;" f class:ZFXD3D InitWindowed ZFXD3D_init.cpp /^HRESULT ZFXD3D::InitWindowed(HWND hWnd, const HWND *hWnd3D, $/;" f class:ZFXD3D IsRunning ZFXD3D.h /^ bool IsRunning(void) { return m_bRunning; }$/;" f class:ZFXD3D Log ZFXD3D_init.cpp /^void ZFXD3D::Log(char *chString, ...) {$/;" f class:ZFXD3D Release ZFXD3D_init.cpp /^void ZFXD3D::Release() {$/;" f class:ZFXD3D ReleaseRenderDevice ZFXD3D_init.cpp /^HRESULT ReleaseRenderDevice(ZFXRenderDevice **pDevice) {$/;" f SetClearColor ZFXD3D_main.cpp /^void ZFXD3D::SetClearColor(float fRed, float fGreen, float fBlue) {$/;" f class:ZFXD3D SortModesCallback ZFXD3D_enum.cpp /^static int __cdecl SortModesCallback(const void* arg1, const void* arg2) {$/;" f file: UNICODE ZFXD3D_enum.cpp 2;" d file: UNICODE ZFXD3D_init.cpp 2;" d file: UNICODE ZFXD3D_init.cpp 8;" d file: UseWindow ZFXD3D_main.cpp /^HRESULT ZFXD3D::UseWindow(UINT nHwnd) {$/;" f class:ZFXD3D ZFXADAPTERINFO ZFXD3D.h /^struct ZFXADAPTERINFO {$/;" s ZFXCOMBOINFO ZFXD3D.h /^struct ZFXCOMBOINFO {$/;" s ZFXD3D ZFXD3D.h /^class ZFXD3D : public ZFXRenderDevice {$/;" c ZFXD3D ZFXD3D_init.cpp /^ZFXD3D::ZFXD3D(HINSTANCE hDLL) {$/;" f class:ZFXD3D ZFXD3DEnum ZFXD3D.h /^ ZFXD3DEnum(int nMinDepth, int nMinStencil) $/;" f class:ZFXD3DEnum ZFXD3DEnum ZFXD3D.h /^class ZFXD3DEnum {$/;" c ZFXD3D_H ZFXD3D.h 3;" d ZFXDEVICEINFO ZFXD3D.h /^struct ZFXDEVICEINFO {$/;" s ZFX_CANCELED ZFX.h 6;" d ZFX_CREATEAPI ZFX.h 12;" d ZFX_CREATEDEVICE ZFX.h 13;" d ZFX_FAIL ZFX.h 9;" d ZFX_FAIL0 ZFX.h 21;" d ZFX_FAIL5 ZFX.h 16;" d ZFX_FAIL6 ZFX.h 17;" d ZFX_FAIL7 ZFX.h 18;" d ZFX_FAIL8 ZFX.h 19;" d ZFX_FAIL9 ZFX.h 20;" d ZFX_FAILa ZFX.h 22;" d ZFX_FAILb ZFX.h 23;" d ZFX_FAILc ZFX.h 24;" d ZFX_FAILd ZFX.h 25;" d ZFX_INVALIDPARAM ZFX.h 14;" d ZFX_NODEPTHSTENCIL ZFX.h 15;" d ZFX_OK ZFX.h 3;" d _APS_NEXT_COMMAND_VALUE resource.h 20;" d _APS_NEXT_CONTROL_VALUE resource.h 21;" d _APS_NEXT_RESOURCE_VALUE resource.h 19;" d _APS_NEXT_SYMED_VALUE resource.h 22;" d bWindowed ZFXD3D.h /^ bool bWindowed; \/\/ windowed mode$/;" m struct:ZFXCOMBOINFO d3dAdapterIdentifier ZFXD3D.h /^ D3DADAPTER_IDENTIFIER9 d3dAdapterIdentifier;$/;" m struct:ZFXADAPTERINFO d3dCaps ZFXD3D.h /^ D3DCAPS9 d3dCaps; \/\/ capabilites$/;" m struct:ZFXDEVICEINFO d3dCombo ZFXD3D.h /^ ZFXCOMBOINFO d3dCombo[80]; \/\/ combo$/;" m struct:ZFXDEVICEINFO d3dDevType ZFXD3D.h /^ D3DDEVTYPE d3dDevType; \/\/ HAL, SW, REF$/;" m struct:ZFXDEVICEINFO d3dDevType ZFXD3D.h /^ D3DDEVTYPE d3dDevType; \/\/ HAL, SW, REF$/;" m struct:ZFXCOMBOINFO d3dDevs ZFXD3D.h /^ ZFXDEVICEINFO d3dDevs[3]; \/\/ list of devices$/;" m struct:ZFXADAPTERINFO d3ddspmd ZFXD3D.h /^ D3DDISPLAYMODE d3ddspmd[150]; \/\/ display modes$/;" m struct:ZFXADAPTERINFO dwBehavior ZFXD3D.h /^ DWORD dwBehavior; \/\/ vertex processing$/;" m struct:ZFXCOMBOINFO fmtAdapter ZFXD3D.h /^ D3DFORMAT fmtAdapter; \/\/ pixelbuffer$/;" m struct:ZFXCOMBOINFO fmtBackBuffer ZFXD3D.h /^ D3DFORMAT fmtBackBuffer; \/\/ backbuffer$/;" m struct:ZFXCOMBOINFO fmtDepthStencil ZFXD3D.h /^ D3DFORMAT fmtDepthStencil; \/\/ z\/stencil format$/;" m struct:ZFXCOMBOINFO g_Dspmd ZFXD3D_init.cpp /^D3DDISPLAYMODE g_Dspmd;$/;" v g_ZFXD3D ZFXD3D_init.cpp /^ZFXD3D *g_ZFXD3D=NULL;$/;" v g_fmtA ZFXD3D_init.cpp /^D3DFORMAT g_fmtA;$/;" v g_fmtB ZFXD3D_init.cpp /^D3DFORMAT g_fmtB;$/;" v g_fmtBackBuffer ZFXD3D_enum.cpp /^const D3DFORMAT g_fmtBackBuffer[] = {$/;" v g_hBMP ZFXD3D_init.cpp /^HBITMAP g_hBMP;$/;" v g_msType ZFXD3D_enum.cpp /^const D3DMULTISAMPLE_TYPE g_msType[] = { $/;" v g_nFormats_B ZFXD3D_enum.cpp /^const UINT g_nFormats_B=9;$/;" v g_nMS ZFXD3D_enum.cpp /^const UINT g_nMS = 8;$/;" v g_xDevice ZFXD3D_init.cpp /^ZFXDEVICEINFO g_xDevice;$/;" v m_ClearColor ZFXD3D.h /^ D3DCOLOR m_ClearColor;$/;" m class:ZFXD3D m_bIsSceneRunning ZFXD3D.h /^ bool m_bIsSceneRunning;$/;" m class:ZFXD3D m_bStencil ZFXD3D.h /^ bool m_bStencil;$/;" m class:ZFXD3D m_d3dpp ZFXD3D.h /^ D3DPRESENT_PARAMETERS m_d3dpp;$/;" m class:ZFXD3D m_dspmd ZFXD3D.h /^ D3DDISPLAYMODE m_dspmd; \/\/ current desktop display mode$/;" m class:ZFXD3DEnum m_dwNumAdapters ZFXD3D.h /^ DWORD m_dwNumAdapters;$/;" m class:ZFXD3DEnum m_fmtAdapter ZFXD3D.h /^ D3DFORMAT m_fmtAdapter[5]; \/\/ list of possible adapter formats$/;" m class:ZFXD3DEnum m_hADAPTER ZFXD3D.h /^ HWND m_hADAPTER; \/\/ adapter combobox $/;" m class:ZFXD3DEnum m_hADAPTERFMT ZFXD3D.h /^ HWND m_hADAPTERFMT; \/\/ adapter format combobox$/;" m class:ZFXD3DEnum m_hBACKFMT ZFXD3D.h /^ HWND m_hBACKFMT; \/\/ backbuffer fmt combobox$/;" m class:ZFXD3DEnum m_hDEVICE ZFXD3D.h /^ HWND m_hDEVICE; \/\/ device combobox$/;" m class:ZFXD3DEnum m_hFULL ZFXD3D.h /^ HWND m_hFULL; \/\/ radiobtn fullscreen$/;" m class:ZFXD3DEnum m_hMODE ZFXD3D.h /^ HWND m_hMODE; \/\/ mode combobox$/;" m class:ZFXD3DEnum m_hWND ZFXD3D.h /^ HWND m_hWND; \/\/ radiobtn windowed$/;" m class:ZFXD3DEnum m_nMinBits ZFXD3D.h /^ UINT m_nMinBits; \/\/ minimum backbuffer bits$/;" m class:ZFXD3DEnum m_nMinDepth ZFXD3D.h /^ UINT m_nMinDepth; \/\/ minimum depth bits$/;" m class:ZFXD3DEnum m_nMinHeight ZFXD3D.h /^ UINT m_nMinHeight; \/\/ minimum screen height$/;" m class:ZFXD3DEnum m_nMinStencil ZFXD3D.h /^ UINT m_nMinStencil; \/\/ minimum stencil bits$/;" m class:ZFXD3DEnum m_nMinWidth ZFXD3D.h /^ UINT m_nMinWidth; \/\/ minimum screen with$/;" m class:ZFXD3DEnum m_nNumFmt ZFXD3D.h /^ UINT m_nNumFmt; \/\/ adapter formats possible$/;" m class:ZFXD3DEnum m_pChain ZFXD3D.h /^ LPDIRECT3DSWAPCHAIN9 m_pChain[MAX_3DHWND];$/;" m class:ZFXD3D m_pD3D ZFXD3D.h /^ LPDIRECT3D9 m_pD3D;$/;" m class:ZFXD3D m_pD3D ZFXD3D.h /^ LPDIRECT3D9 m_pD3D;$/;" m class:ZFXD3DEnum m_pDevice ZFXD3D.h /^ LPDIRECT3DDEVICE9 m_pDevice;$/;" m class:ZFXD3D m_pEnum ZFXD3D.h /^ ZFXD3DEnum *m_pEnum;$/;" m class:ZFXD3D m_pLog ZFXD3D.h /^ FILE *m_pLog; \/\/ log file opened by zfxd3d class$/;" m class:ZFXD3DEnum m_xAdapterInfo ZFXD3D.h /^ ZFXADAPTERINFO m_xAdapterInfo[10];$/;" m class:ZFXD3DEnum msType ZFXD3D.h /^ D3DMULTISAMPLE_TYPE msType; \/\/ multisample type$/;" m struct:ZFXCOMBOINFO nAdapter ZFXD3D.h /^ UINT nAdapter; \/\/ which one$/;" m struct:ZFXADAPTERINFO nAdapter ZFXD3D.h /^ UINT nAdapter; \/\/ belongs to$/;" m struct:ZFXDEVICEINFO nAdapter ZFXD3D.h /^ UINT nAdapter; \/\/ belongs to$/;" m struct:ZFXCOMBOINFO nNumCombo ZFXD3D.h /^ UINT nNumCombo; \/\/ number of combos$/;" m struct:ZFXDEVICEINFO nNumDevs ZFXD3D.h /^ UINT nNumDevs; \/\/ number of devices$/;" m struct:ZFXADAPTERINFO nNumModes ZFXD3D.h /^ UINT nNumModes; \/\/ number of modes$/;" m struct:ZFXADAPTERINFO ~ZFXD3D ZFXD3D_init.cpp /^ZFXD3D::~ZFXD3D() {$/;" f class:ZFXD3D
Der Aufbau des Format ist etwa so: {tagname}<Tab>{tagfile}<Tab>{tagaddress}
Dadurch kannst du z. B. alle Integer Variablen in deinem Sourcecode ermitteln und die Bezeichner, dann auf deinen Codingstandard vergleichen -> wenn Standard nicht eingehalten wird -> Fehler mit Dateiname und Zeilennummer