clang-formatによるコーディング規約の統一化

チーム内でコーディング規約を統一するために、

設定ファイルに従って、自動でソースを整形してくれる

clang-formatツールを使用する。

 

以下が、設定ファイルの記載例

 

---
#BasedOnStyle: Google

#コメントを末尾に揃える
AlignTrailingComments: true

#AlignConsecutiveAssignments: true
AccessModifierOffset: -4
#ConstructorInitializerIndentWidth: 4
#AlignEscapedNewlinesLeft: true
#AllowAllParametersOfDeclarationOnNextLine: true
#AllowShortIfStatementsOnASingleLine: true
#AllowShortLoopsOnASingleLine: true
#AlwaysBreakTemplateDeclarations: true
#AlwaysBreakBeforeMultilineStrings: true
#BreakBeforeBinaryOperators: false
#BreakBeforeTernaryOperators: true
#BreakConstructorInitializersBeforeComma: false
#
#関数呼び出しや関数定義のパラメーターを、一行ごとにするか
BinPackParameters: true

#ColumnLimit: 80
#ConstructorInitializerAllOnOneLineOrOnePerLine: true
#DerivePointerBinding: true
#ExperimentalAutoDetectBinPacking: false

#switch ブロック内の case X: 文をインデント
IndentCaseLabels: true

#MaxEmptyLinesToKeep: 1
#
#Namespace のインデント(None:インデントしない)
NamespaceIndentation: None

#ObjCSpaceBeforeProtocolList: false
#PenaltyBreakBeforeFirstCallParameter: 1
#PenaltyBreakComment: 60
#PenaltyBreakString: 1000
#PenaltyBreakFirstLessLess: 120
#PenaltyExcessCharacter: 1000000
#PenaltyReturnTypeOnItsOwnLine: 200
#PointerBindsToType: true
#SpacesBeforeTrailingComments: 2
#Cpp11BracedListStyle: true
Standard: Auto

#インデントに使用する列数
IndentWidth: 4
#TabWidth: 8

#タブの使い方(Never:タブを使わない)
UseTab: Never

#波括弧{}のフォーマットスタイル(Allman:常に波括弧{}の前で改行)
BreakBeforeBraces: Allman

#IndentFunctionDeclarationAfterType: true
#SpacesInParentheses: false
#SpacesInAngles: false
#SpaceInEmptyParentheses: false
#SpacesInCStyleCastParentheses: false
#SpaceAfterControlStatementKeyword: true
#SpaceBeforeAssignmentOperators: true
#ContinuationIndentWidth: 4
#PointerAlignment:'Left'

...

 

vimでC++コーディングする際のおすすめ設定

※後日、編集するとして、まずは殴り書きで作成

最近まで、統合開発環境(VisualStudio)でコーディング&試験していたので、

Linux上での vim+gcc+gdbでのC++開発が結構辛い。。。

 

まずは、少しでも楽になるように、調べたものを記載する。

■■■vim

vim-clang

  ⇒構造体やクラスの変数・IFのコード補完

     注意点はなぜか「set paste」とは共存が出来ない模様。。。

  ・GitHubの以下のURLからclang.vimを取得する。

      https://github.com/justmao945/vim-clang/tree/master/plugin

   ・ホームディレクトリの.vim/pluginディレクトリに配置する。

 ・同フォルダ以外のヘッダを読み込む場合は

       .clangファイルを作成して、参照先のヘッダフォルダパスを記載する

■Tagbar

VimをIDEっぽく(主にC++/Java用)整える

   「:TagbarToggle」で切り替える

 

■SrcExpl

  ⇒関数の定義先ソースを別画面に表示

   https://github.com/wesleyche/SrcExpl

   ctagsを利用するSource Explorer(srcexpl.vim)がすごく便利 - Guyon Diary

   VimをIDEっぽく(主にC++/Java用)整える

      :ScrExplToggleで表示/非表示をトグル。 

■2重インクルード防止定義追加

  ※ファイル名で自動追加

 カレントファイルにインクルードガードを書き込むvimスクリプト

==================================================

"----------------------------------------------------
" Insert include guard to the current file
"----------------------------------------------------
command! -nargs=0 IncGuard call IncludeGuard()
function! IncludeGuard()
"カレントファイル名を取得
let name = fnamemodify(expand('%'),':t')

"大文字にする
let name = toupper(name)

"がーど
let included = '_'.substitute(name,'\.','_','g').'_INCLUDED_'

"書き込み
let res_head = '#ifndef '.included."\n#define ".included."\n\n"
let res_foot = "\n".'#endif //'.included."\n"
silent! execute '1s/^/\=res_head'
silent! execute '$s/$/\=res_foot'
endfunction

==================================================

   

 

=================================== 

"#読み込むcatgを指定する。、ctagファイルが存在するフォルダ以外で
"#ファイルを開いても"適応される
set tags=tags;

"#いい感じにインデントしてくれる
set cindent

" #ファイル保存前に別ファイルを開ける
set hidden

"#tabの可視化
set list
set listchars=tab:≫-,trail:-

" #全角スペース・行末のスペース・タブの可視化
if has("syntax")
syntax on
-
" PODバグ対策
syn sync fromstart
-
function! ActivateInvisibleIndicator()
" 下の行の" "は全角スペース
syntax match InvisibleJISX0208Space " " display containedin=ALL
highlight InvisibleJISX0208Space term=underline ctermbg=Blue guibg=darkgray gui=underline
"syntax match InvisibleTrailedSpace "[ \t]\+$" display containedin=ALL
"highlight InvisibleTrailedSpace term=underline ctermbg=Red guibg=NONE gui=undercurl guisp=darkorange
"syntax match InvisibleTab "\t" display containedin=ALL
"highlight InvisibleTab term=underline ctermbg=white gui=undercurl guisp=darkslategray
endfunction
-
augroup invisible
autocmd! invisible
autocmd BufNew,BufRead * call ActivateInvisibleIndicator()
augroup END
endif

 "#########ここからプラグイン

"# SrcExpl
let g:SrcExpl_RefreshTime = 1

"# tagbar
"let g:tagbar_width = 20
"let g:tagbar_autoshowtag = 1
":TagbarShowTag を叩かなくても有効にする

 "#vim-clang

"#

"let g:clang_c_options = '-std=c11'
"let g:clang_cpp_options = '-std=c++1z -stdlib=libc++ ?pedantic-errors'
"let g:clang_cpp_options = '-std=c++1y'
"let g:clang_format_auto = 1
"let g:clang_format_style = 'Google'
let g:clang_check_syntax_auto = 1

=================================== 

 

 

 参考サイト)

 

■■■GDB

  ■gdbのTUIモードを使用する

    IDEのように、画面上部に現在実行中のソースファイルを表示してくれる凄いやつ。

    gdb起動後、CTRL+x、CTRL+aでTUIモードに移行する。

 

 

 

参考サイト)

Vim幼稚園からVim小学校へ   

vimgrepとQuickfix知らないVimmerはちょっとこっち来い

vimの便利なPlugin(その16)vim-clang | 技術者魂

C++用おすすめvim設定&プラグイン - MyEnigma

vim doxygen コメント挿入 | ZQhDb,pbnDP

脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定

Safx: cgdbとgdbのTUIモードでGoのコンソールデバッグをしてみる

gdb tui コマンド - のねのBlog

カレントファイルにインクルードガードを書き込むvimスクリプト

vimに自作コマンドを実装する

バッチファイルで行数を取得する



@echo off
setlocal enabledelayedexpansion

rem ------変数初期化 START--------

rem 行数取得対象ファイル条件
set CHK_PTN_MOZI1=xxx
set CHK_PTN_MOZI2=yyy

set CHK_FILE_DIR=%~dp0
set OUT_NAME="取得結果.txt"

set /A SUM=0
rem ------変数初期化 END  --------

set /P CHK_FILE_DIR="対象フォルダを指定してください。(サブフォルダは対象外です): "

for /d %%a  in (%CHK_FILE_DIR%\*) do (

    set /A SUM=0
    
    for %%b  in (%%a\*) do (

        echo %%b | findstr "%CHK_PTN_MOZI1% %CHK_PTN_MOZI2%" >NUL
        if not ERRORLEVEL 1 (
           
           for /f "usebackq tokens=1,2,3,4  delims=: " %%c in (` find /v /c "" %%b`) do (
                set /A SUM=!SUM!+%%f
           )
        )
    )
    
    rem コンソール出力
    echo %%a,!SUM!
    
    rem ファイル出力
    echo %%a,!SUM! >>  %OUT_NAME%
)

pause

【バッチファイル】テキストファイル内の文字を取得


@echo off
setlocal enabledelayedexpansion

rem チェックファイル
set CHK_FILE_NAME=C:\xxx.txt

rem 取得先ファイルパス
set CHK_PATH=C:\yyy

rem 対象行キーワード
set CHK_PTN_MOZI=ABC

for /f "tokens=1,2,3,4 delims=," %%a  in (%CHK_FILE_NAME%) do (

    echo %%a | find "%CHK_PTN_MOZI%" >NUL
    if not ERRORLEVEL 1 (
        rem echo %CHK_PATH%%%b
        for %%i in (%CHK_PATH%%%b) do (set SIZE=%%~zi)

        if %%c == !SIZE! (
            echo "%%a %%b %%c : FileSize=[!SIZE!] OK"
        )  else (
            echo "%%a %%b %%c : FileSize=[!SIZE!] NG"
            pause
        )


    )

)
pause

http://troushoo.blog.fc2.com/blog-entry-91.html

http://biz-crew.com/archives/1557

http://srz-zumix.blogspot.jp/2014/01/visual-studio-10.html

visual studioのトピック

■行番号の表示

 メニュー バー⇒ [ツール][オプション] の順にクリックします。

 [テキスト エディター] ノードを展開し、使用中の言語のノードを選択するか、

 [すべての言語] を選択してすべての言語の行番号をオンにします。

 または、[クイック起動] ボックスに行番号を入力します。

 

■スナップショット

 winshot1が便利

デバッグ

 breakpointoの操作

  「$FUNCTION 変数名b={変数名}」

 

■ウォッチウィンドゥの切り替え

 ・CTRL+ALT+W  ⇒ 1~4

■ウォッチ式への手動追加

 名前欄をクリックして式を記入する。

■ウォッチ式の表示指定

 名前,d

 名前,x

 

 

■ソースへのブックマーク追加

 ・追加

  CTRL+K  ⇒ CTRL+K

 ・移動

  CTRL+K  ⇒ CTRL+P

  CTRL+K  ⇒ CTRL+N

 

■括弧への移動

 ・CTRL+]

 

■ビルド

 CTRL+SHIFT+B

 

■検索

  

vba Excelのセル設定パターン

 ・セルの数字設定
  例)行:1、列:2のセルに数字123を設定
  Cells(1, 2).Value = 123

 ・セルの文字列設定
  例)行:1、列:2のセルに文字列Sampleを設定
  Cells(1, 2).Value = 'Sample'

 ・セルの値削除
  例)行:1、列:2のセルをクリア
  Cells(1, 2).Clear

 ・フォントサイズ設定
  例)行:1、列:2のセルを20に設定
  Cells(1, 2).Font.Size = 20

 ・文字の色設定
  例)行:1、列:2のセルをXXXに設定
  Cells(1, 2).Font.Color = RGB(xxx, xxx, xxx)

 ・文字の塗りつぶし設定
  例)行:1、列:2のセルをXXXに設定
  Cells(1, 2).Interior.Color = RGB(xxx, xxx, xxx)

   ※代表的な色
   塗りつぶしなし:RGB(255, 255, 255)
   白色 :RGB(255, 255, 255)
   黒 :RGB( 0, 0, 0)
   黄色 :RGB(255, 255, 0)
   緑 :RGB( 0, 255, 0)
   赤 :RGB(255, 0, 0)

ユーザフォーム

Public Function doModal()
Me.Show
End Function

Private Sub Cancel_btn_Click()
Unload Me
End Sub

Private Sub OK_Btn_Click()

Dim PathName As String
Dim FileName As String
Dim pos As Long

pos = InStrRev(Me.TextBox1.Text, "\")
PathName = Left(Me.TextBox1.Text, pos)
FileName = Mid(Me.TextBox1.Text, pos + 1)

List(0) = Me.TextBox1.Text
List(1) = PathName
List(2) = FileName
List(3) = Me.ComboBox1.Text
Unload Me

End Sub

Private Sub 参照1_btn_Click()

Dim OpenFileName As Variant
Dim mySheet As Worksheet
Dim Local_List() As String: ReDim Local_List(0)
Dim cnt As Integer: cnt = 0

ChDir ActiveWorkbook.Path


OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")

If OpenFileName <> False Then
Me.TextBox1.Text = OpenFileName

Workbooks.Open FileName:=OpenFileName, ReadOnly:=True
For Each mySheet In Worksheets '---(1)
Local_List(cnt) = mySheet.Name
cnt = cnt + 1
ReDim Preserve Local_List(cnt)
Next
ReDim Preserve Local_List(cnt - 1)
Me.ComboBox1.List = Local_List

ActiveWorkbook.Close SaveChanges:=False

End If

End Sub

 

=====

Sub main()

UserForm1.doModal
UserForm1.Hide
End Sub