코드를 정리하는 가장 좋은 명령줄 도구는 무엇입니까?
제가 C 코드를 쓸 때는 편집기와 gcc만 사용합니다.사용하지 않는 변수, 함수 선언을 찾고 최적화할 수 있는 좋은 간단한 도구를 제안해 줄 수 있는 사람이 있는지 궁금합니다.
좋은 도구 아는 사람?
Dan Fego가 지적했듯이 GCC는 사용되지 않는 변수와 사용되지 않는 정적 함수를 잡을 수 있습니다.일반적으로 한 번에 하나의 소스 파일을 작동하기 때문에 사용되지 않는 외부 기능을 찾지 못합니다.
GCC(v4.3.2)에는 수천 개는 아니더라도 수백 개의 옵션이 있습니다.도움이 될 수 있는 것은 소스 파일을 결합하는 (2023-03-10: 에 대한 지원은 2012년까지 사라졌습니다. 오랫동안 GCC의 선택 사항이 아니었습니다.)--combine
것입니다(다른 소스 파일 안에 동일한 기능이나 변수 이름을 넣는 습관이 없는 한).
--help
더 것을 '합니다. '--help=optimizers
' 그리고 '--help=warnings
몇 백 합니다.경고 내용은 다음과 같습니다.
-Wunused This switch lacks documentation
-Wunused-function Warn when a function is unused
-Wunused-label This switch lacks documentation
-Wunused-macros Warn about macros defined in the main file that
are not used
-Wunused-parameter Warn when a function parameter is unused
-Wunused-value Warn when an expression value is unused
-Wunused-variable Warn when a variable is unused
추가: 이 스크립트는 다음과 같습니다.glint
내 코드를 소독하는 데 사용하는 거죠꽤 오래돼서 '을 사용하지 않습니다.#!/bin/sh
라고' 과"라고 쓰여 있습니다.$*
"$@"
다둘 다 할 는 없습니다.', .가 'GCC 4.x상'를 더 하십시오.-fwriteable-strings
, '' 합니다 '를 합니다.-Wwrite-strings
입니다.
이 스크립트는 적은 양의 작업만으로 기존 도구에서 많은 마일리지를 얻을 수 있음을 보여줍니다.주로 명령줄이 아닌 환경을 통해 사용하는 거의 모든 옵션을 구성할 수 있습니다.물론 추가 경고 옵션을 명령줄에 추가할 수도 있지만, 환경을 제외하고는 미리 지정된 옵션을 제거할 수는 없습니다.하지만 그건 괜찮아요. 그들은 좋은 이유로 기본적으로 선택되기 때문입니다.마를다로 GLINT_ANSI=-std=c99
. 제가 최근에 많이 사용하지 않은 이유는 표준에 상당히 근접한 코드를 사용했기 때문입니다.glint
강제.('(참고 ')에 하십시오.-o /dev/null
만 할 수 합니다. hack to fix!)
: "@(#)$Id: glint.sh,v 1.5 2002/08/09 21:40:52 jleffler Exp jleffler $"
#
# Use GCC as excruciatingly pedantic lint
# Not a complete replacement for lint -- it doesn't do inter-file checking.
# Now configurable via the environment.
# Use GLINT_EXTRA_FLAGS to set extra flags via the environment.
# NB: much Solaris code won't work with -undef enabled.
: ${GLINT_GCC:='gcc'}
: ${GLINT_ANSI='-ansi'}
: ${GLINT_FNO_COMMON='-fno-common'}
: ${GLINT_FSHORT_ENUMS='-fshort-enums'}
: ${GLINT_PEDANTIC='-pedantic'}
: ${GLINT_WAGGREGATE_RETURN='-Waggregate-return'}
: ${GLINT_WALL='-Wall'}
: ${GLINT_WCAST_ALIGN='-Wcast-align'}
: ${GLINT_WCAST_QUAL='-Wcast-qual'}
: ${GLINT_WCONVERSION='-Wconversion'}
: ${GLINT_WMISSING_DECLARATIONS='-Wmissing-declarations'}
: ${GLINT_WREDUNDANT_DECLS='-Wredundant-decls'}
: ${GLINT_WMISSING_PROTOTYPES='-Wmissing-prototypes'}
: ${GLINT_WNESTED_EXTERNS='-Wnested-externs'}
: ${GLINT_WPOINTER_ARITH='-Wpointer-arith'}
: ${GLINT_WSHADOW='-Wshadow'}
: ${GLINT_WSTRICT_PROTOTYPES='-Wstrict-prototypes'}
: # ${GLINT_WTRADITIONAL='-Wtraditional'}
: ${GLINT_WWRITE_STRINGS='-Wwrite-strings'}
exec ${GLINT_GCC} \
${GLINT_ANSI} \
${GLINT_FNO_COMMON} \
${GLINT_FSHORT_ENUMS} \
${GLINT_PEDANTIC} \
${GLINT_WAGGREGATE_RETURN} \
${GLINT_WALL} \
${GLINT_WCAST_ALIGN} \
${GLINT_WCAST_QUAL} \
${GLINT_WCONVERSION} \
${GLINT_WMISSING_DECLARATIONS} \
${GLINT_WREDUNDANT_DECLS} \
${GLINT_WMISSING_PROTOTYPES} \
${GLINT_WNESTED_EXTERNS} \
${GLINT_WPOINTER_ARITH} \
${GLINT_WSHADOW} \
${GLINT_WSTRICT_PROTOTYPES} \
${GLINT_WTRADITIONAL} \
${GLINT_WWRITE_STRINGS} \
${GLINT_EXTRA_FLAGS} \
-o /dev/null -O4 -g -c $*
보풀은 C 프로그램에서 스타일을 확인할 수 있는 대표적인 도구입니다.스플린트라는 더 현대적인 화신이 있습니다.이 위키피디아 항목에는 정적 코드 분석 도구 목록이 있습니다. 무료로 제공되는 것도 있고 상업적인 것도 있습니다.
Although I am sure that this is not a comprehensive list of static code analysis tools, here are my impressions of some different ones that I've worked with in the past. (I work mostly with C.)
Splint: I often use Splint because it is available for many GNU/Linux distributions. It is relatively easy to work with; however, it tends to be overwhelming when operating under the strictest setting. Moreover, the sometimes-necessary use of annotations can clutter and obfuscate easily-readable code. Regardless, I suggest using it.
Uno: Uno is definitely a promising, but it is not as rigorous as Splint (by design). Instead, it focuses on the clarity and usefulness of its warnings. For me, Uno is only useful as a supplement to Splint (to clearly point out warnings hidden among the comparatively many that Splint issues).
PC-lint: I find that PC-lint is unwieldy for a proprietary program. I once used it when developing for MS-DOS and cryptic names it uses for its errors made it very difficult to use. From what I hear, there are many better products to use on MS-DOS.
Pscan: (Dead hyperlink) Pscan is great for finding format string vulnerabilities! As with Uno, I suggest using it as a supplement to Splint.
If you do not work with C, you may also want to check out: Wikipedia - List of tools for static code analysis, Inspection/Review Tools, Source/Binary Code Static Analyzers, and Source Code Security Analyzers.
If you run gcc with -Wall, it'll catch some of the things you mention, such as unused variables (and perhaps unused functions). In terms of optimizations, I don't, though in general the compiler is smart enough to make the kinds of optimizations that matter, so I wouldn't worry too much. Just don't use horrible algorithms. ;-)
splint (http://www.splint.org/) is quite excellent; I've used it on megaline codes to look for this sort of thing,
(Updated: everybody wants to be an art director.)
How about to use a profiler and find what code is running the most, and focus in on those parts.
Gprof가 도와줄 수 있나요?
/조한
편집: 아니면 정리를 말씀하셨으니 위에서 제 답변을 뒤집어서 절대 실행되지 않는 코드를 제거해주세요.
언급URL : https://stackoverflow.com/questions/393208/what-is-the-best-command-line-tool-to-clean-up-code
'programing' 카테고리의 다른 글
Spark SQL: 열 목록에 Aggregate 함수 적용 (0) | 2023.10.05 |
---|---|
아이폰 개발에서 PNG나 JPG를 언제 사용할 것인가요? (0) | 2023.10.05 |
프로그래밍 방식으로 배송 방법 설정 우커머스 (0) | 2023.10.05 |
서비스에서 구성 요소 보기 업데이트 트리거 - ChangeDetectorRef에 대한 공급자 없음 (0) | 2023.10.05 |
MySQL에서 스키마 이름을 변경하는 방법 (0) | 2023.10.05 |