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
「:TagbarToggle」で切り替える
■SrcExpl
⇒関数の定義先ソースを別画面に表示
https://github.com/wesleyche/SrcExpl
ctagsを利用するSource Explorer(srcexpl.vim)がすごく便利 - Guyon Diary
: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モードに移行する。
参考サイト)
vimgrepとQuickfix知らないVimmerはちょっとこっち来い
vimの便利なPlugin(その16)vim-clang | 技術者魂
C++用おすすめvim設定&プラグイン - MyEnigma
vim doxygen コメント挿入 | ZQhDb,pbnDP
脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定
Safx: cgdbとgdbのTUIモードでGoのコンソールデバッグをしてみる
バッチファイルで行数を取得する
@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