llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-amdgpu Author: None (blazie2004) <details> <summary>Changes</summary> --- Patch is 75.64 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/136829.diff 4551 Files Affected: - (added) check_remote_class_check.py (+86) - (added) check_remote_llvmheader.py (+83) - (added) check_remote_naming_conventions.py (+182) - (added) check_remote_pr_format.py (+182) - (added) check_remote_tidy_format.py (+64) - (added) clang-format-diff.py (+197) - (added) clang-tidy-diff.py (+423) - (modified) clang/lib/AST/ASTConsumer.cpp (+20-8) - (added) config.yaml (+16) - (added) install/bin/amdgpu-arch (+1) - (added) install/bin/analyze-build (+17) - (added) install/bin/bugpoint () - (added) install/bin/c-index-test () - (added) install/bin/clang (+1) - (added) install/bin/clang++ (+1) - (added) install/bin/clang-21 () - (added) install/bin/clang-apply-replacements () - (added) install/bin/clang-change-namespace () - (added) install/bin/clang-check () - (added) install/bin/clang-cl (+1) - (added) install/bin/clang-cpp (+1) - (added) install/bin/clang-doc () - (added) install/bin/clang-extdef-mapping () - (added) install/bin/clang-format () - (added) install/bin/clang-include-cleaner () - (added) install/bin/clang-include-fixer () - (added) install/bin/clang-installapi () - (added) install/bin/clang-linker-wrapper () - (added) install/bin/clang-move () - (added) install/bin/clang-nvlink-wrapper () - (added) install/bin/clang-offload-bundler () - (added) install/bin/clang-offload-packager () - (added) install/bin/clang-query () - (added) install/bin/clang-refactor () - (added) install/bin/clang-reorder-fields () - (added) install/bin/clang-repl () - (added) install/bin/clang-scan-deps () - (added) install/bin/clang-sycl-linker () - (added) install/bin/clang-tblgen () - (added) install/bin/clang-tidy () - (added) install/bin/clangd () - (added) install/bin/diagtool () - (added) install/bin/dsymutil () - (added) install/bin/find-all-symbols () - (added) install/bin/git-clang-format (+858) - (added) install/bin/hmaptool (+297) - (added) install/bin/intercept-build (+17) - (added) install/bin/llc () - (added) install/bin/lli () - (added) install/bin/llvm-addr2line (+1) - (added) install/bin/llvm-ar () - (added) install/bin/llvm-as () - (added) install/bin/llvm-bcanalyzer () - (added) install/bin/llvm-bitcode-strip (+1) - (added) install/bin/llvm-c-test () - (added) install/bin/llvm-cat () - (added) install/bin/llvm-cfi-verify () - (added) install/bin/llvm-cgdata () - (added) install/bin/llvm-config () - (added) install/bin/llvm-cov () - (added) install/bin/llvm-ctxprof-util () - (added) install/bin/llvm-cvtres () - (added) install/bin/llvm-cxxdump () - (added) install/bin/llvm-cxxfilt () - (added) install/bin/llvm-cxxmap () - (added) install/bin/llvm-debuginfo-analyzer () - (added) install/bin/llvm-debuginfod () - (added) install/bin/llvm-debuginfod-find () - (added) install/bin/llvm-diff () - (added) install/bin/llvm-dis () - (added) install/bin/llvm-dlltool (+1) - (added) install/bin/llvm-dwarfdump () - (added) install/bin/llvm-dwarfutil () - (added) install/bin/llvm-dwp () - (added) install/bin/llvm-exegesis () - (added) install/bin/llvm-extract () - (added) install/bin/llvm-gsymutil () - (added) install/bin/llvm-ifs () - (added) install/bin/llvm-install-name-tool (+1) - (added) install/bin/llvm-jitlink () - (added) install/bin/llvm-lib (+1) - (added) install/bin/llvm-libtool-darwin () - (added) install/bin/llvm-link () - (added) install/bin/llvm-lipo () - (added) install/bin/llvm-lto () - (added) install/bin/llvm-lto2 () - (added) install/bin/llvm-mc () - (added) install/bin/llvm-mca () - (added) install/bin/llvm-ml () - (added) install/bin/llvm-ml64 (+1) - (added) install/bin/llvm-modextract () - (added) install/bin/llvm-mt () - (added) install/bin/llvm-nm () - (added) install/bin/llvm-objcopy () - (added) install/bin/llvm-objdump () - (added) install/bin/llvm-opt-report () - (added) install/bin/llvm-otool (+1) - (added) install/bin/llvm-pdbutil () - (added) install/bin/llvm-profdata () - (added) install/bin/llvm-profgen () - (added) install/bin/llvm-ranlib (+1) - (added) install/bin/llvm-rc () - (added) install/bin/llvm-readelf (+1) - (added) install/bin/llvm-readobj () - (added) install/bin/llvm-readtapi () - (added) install/bin/llvm-reduce () - (added) install/bin/llvm-remarkutil () - (added) install/bin/llvm-rtdyld () - (added) install/bin/llvm-sim () - (added) install/bin/llvm-size () - (added) install/bin/llvm-split () - (added) install/bin/llvm-stress () - (added) install/bin/llvm-strings () - (added) install/bin/llvm-strip (+1) - (added) install/bin/llvm-symbolizer () - (added) install/bin/llvm-tblgen () - (added) install/bin/llvm-tli-checker () - (added) install/bin/llvm-undname () - (added) install/bin/llvm-windres (+1) - (added) install/bin/llvm-xray () - (added) install/bin/modularize () - (added) install/bin/nvptx-arch (+1) - (added) install/bin/offload-arch () - (added) install/bin/opt () - (added) install/bin/pp-trace () - (added) install/bin/reduce-chunk-list () - (added) install/bin/run-clang-tidy (+627) - (added) install/bin/sancov () - (added) install/bin/sanstats () - (added) install/bin/scan-build (+1985) - (added) install/bin/scan-build-py (+17) - (added) install/bin/scan-view (+149) - (added) install/bin/verify-uselistorder () - (added) install/include/clang-c/BuildSystem.h (+153) - (added) install/include/clang-c/CXCompilationDatabase.h (+174) - (added) install/include/clang-c/CXDiagnostic.h (+379) - (added) install/include/clang-c/CXErrorCode.h (+62) - (added) install/include/clang-c/CXFile.h (+83) - (added) install/include/clang-c/CXSourceLocation.h (+296) - (added) install/include/clang-c/CXString.h (+73) - (added) install/include/clang-c/Documentation.h (+619) - (added) install/include/clang-c/ExternC.h (+39) - (added) install/include/clang-c/FatalErrorHandler.h (+32) - (added) install/include/clang-c/Index.h (+6829) - (added) install/include/clang-c/Platform.h (+53) - (added) install/include/clang-c/Rewrite.h (+63) - (added) install/include/clang-tidy/ClangTidy.h (+125) - (added) install/include/clang-tidy/ClangTidyCheck.h (+537) - (added) install/include/clang-tidy/ClangTidyDiagnosticConsumer.h (+332) - (added) install/include/clang-tidy/ClangTidyForceLinker.h (+142) - (added) install/include/clang-tidy/ClangTidyModule.h (+98) - (added) install/include/clang-tidy/ClangTidyModuleRegistry.h (+25) - (added) install/include/clang-tidy/ClangTidyOptions.h (+340) - (added) install/include/clang-tidy/ClangTidyProfiling.h (+55) - (added) install/include/clang-tidy/ExpandModularHeadersPPCallbacks.h (+146) - (added) install/include/clang-tidy/FileExtensionsSet.h (+19) - (added) install/include/clang-tidy/GlobList.h (+70) - (added) install/include/clang-tidy/NoLintDirectiveHandler.h (+49) - (added) install/include/clang-tidy/abseil/AbseilMatcher.h (+59) - (added) install/include/clang-tidy/abseil/CleanupCtadCheck.h (+33) - (added) install/include/clang-tidy/abseil/DurationAdditionCheck.h (+31) - (added) install/include/clang-tidy/abseil/DurationComparisonCheck.h (+31) - (added) install/include/clang-tidy/abseil/DurationConversionCastCheck.h (+31) - (added) install/include/clang-tidy/abseil/DurationDivisionCheck.h (+33) - (added) install/include/clang-tidy/abseil/DurationFactoryFloatCheck.h (+33) - (added) install/include/clang-tidy/abseil/DurationFactoryScaleCheck.h (+33) - (added) install/include/clang-tidy/abseil/DurationRewriter.h (+138) - (added) install/include/clang-tidy/abseil/DurationSubtractionCheck.h (+31) - (added) install/include/clang-tidy/abseil/DurationUnnecessaryConversionCheck.h (+31) - (added) install/include/clang-tidy/abseil/FasterStrsplitDelimiterCheck.h (+34) - (added) install/include/clang-tidy/abseil/NoInternalDependenciesCheck.h (+34) - (added) install/include/clang-tidy/abseil/NoNamespaceCheck.h (+34) - (added) install/include/clang-tidy/abseil/RedundantStrcatCallsCheck.h (+37) - (added) install/include/clang-tidy/abseil/StrCatAppendCheck.h (+34) - (added) install/include/clang-tidy/abseil/StringFindStartswithCheck.h (+46) - (added) install/include/clang-tidy/abseil/StringFindStrContainsCheck.h (+35) - (added) install/include/clang-tidy/abseil/TimeComparisonCheck.h (+31) - (added) install/include/clang-tidy/abseil/TimeSubtractionCheck.h (+34) - (added) install/include/clang-tidy/abseil/UpgradeDurationConversionsCheck.h (+39) - (added) install/include/clang-tidy/altera/IdDependentBackwardBranchCheck.h (+79) - (added) install/include/clang-tidy/altera/KernelNameRestrictionCheck.h (+31) - (added) install/include/clang-tidy/altera/SingleWorkItemBarrierCheck.h (+36) - (added) install/include/clang-tidy/altera/StructPackAlignCheck.h (+37) - (added) install/include/clang-tidy/altera/UnrollLoopsCheck.h (+74) - (added) install/include/clang-tidy/android/CloexecAccept4Check.h (+30) - (added) install/include/clang-tidy/android/CloexecAcceptCheck.h (+30) - (added) install/include/clang-tidy/android/CloexecCheck.h (+100) - (added) install/include/clang-tidy/android/CloexecCreatCheck.h (+30) - (added) install/include/clang-tidy/android/CloexecDupCheck.h (+31) - (added) install/include/clang-tidy/android/CloexecEpollCreate1Check.h (+30) - (added) install/include/clang-tidy/android/CloexecEpollCreateCheck.h (+30) - (added) install/include/clang-tidy/android/CloexecFopenCheck.h (+33) - (added) install/include/clang-tidy/android/CloexecInotifyInit1Check.h (+30) - (added) install/include/clang-tidy/android/CloexecInotifyInitCheck.h (+30) - (added) install/include/clang-tidy/android/CloexecMemfdCreateCheck.h (+30) - (added) install/include/clang-tidy/android/CloexecOpenCheck.h (+35) - (added) install/include/clang-tidy/android/CloexecPipe2Check.h (+30) - (added) install/include/clang-tidy/android/CloexecPipeCheck.h (+30) - (added) install/include/clang-tidy/android/CloexecSocketCheck.h (+30) - (added) install/include/clang-tidy/android/ComparisonInTempFailureRetryCheck.h (+38) - (added) install/include/clang-tidy/boost/UseRangesCheck.h (+44) - (added) install/include/clang-tidy/boost/UseToStringCheck.h (+35) - (added) install/include/clang-tidy/bugprone/ArgumentCommentCheck.h (+61) - (added) install/include/clang-tidy/bugprone/AssertSideEffectCheck.h (+48) - (added) install/include/clang-tidy/bugprone/AssignmentInIfConditionCheck.h (+31) - (added) install/include/clang-tidy/bugprone/BadSignalToKillThreadCheck.h (+34) - (added) install/include/clang-tidy/bugprone/BitwisePointerCastCheck.h (+34) - (added) install/include/clang-tidy/bugprone/BoolPointerImplicitConversionCheck.h (+37) - (added) install/include/clang-tidy/bugprone/BranchCloneCheck.h (+37) - (added) install/include/clang-tidy/bugprone/CapturingThisInMemberVariableCheck.h (+45) - (added) install/include/clang-tidy/bugprone/CastingThroughVoidCheck.h (+32) - (added) install/include/clang-tidy/bugprone/ChainedComparisonCheck.h (+34) - (added) install/include/clang-tidy/bugprone/ComparePointerToMemberVirtualFunctionCheck.h (+36) - (added) install/include/clang-tidy/bugprone/CopyConstructorInitCheck.h (+34) - (added) install/include/clang-tidy/bugprone/CrtpConstructorAccessibilityCheck.h (+32) - (added) install/include/clang-tidy/bugprone/DanglingHandleCheck.h (+38) - (added) install/include/clang-tidy/bugprone/DynamicStaticInitializersCheck.h (+33) - (added) install/include/clang-tidy/bugprone/EasilySwappableParametersCheck.h (+62) - (added) install/include/clang-tidy/bugprone/EmptyCatchCheck.h (+37) - (added) install/include/clang-tidy/bugprone/ExceptionEscapeCheck.h (+45) - (added) install/include/clang-tidy/bugprone/FoldInitTypeCheck.h (+39) - (added) install/include/clang-tidy/bugprone/ForwardDeclarationNamespaceCheck.h (+54) - (added) install/include/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.h (+40) - (added) install/include/clang-tidy/bugprone/ImplicitWideningOfMultiplicationResultCheck.h (+50) - (added) install/include/clang-tidy/bugprone/InaccurateEraseCheck.h (+39) - (added) install/include/clang-tidy/bugprone/IncDecInConditionsCheck.h (+35) - (added) install/include/clang-tidy/bugprone/IncorrectEnableIfCheck.h (+34) - (added) install/include/clang-tidy/bugprone/IncorrectEnableSharedFromThisCheck.h (+35) - (added) install/include/clang-tidy/bugprone/IncorrectRoundingsCheck.h (+34) - (added) install/include/clang-tidy/bugprone/InfiniteLoopCheck.h (+31) - (added) install/include/clang-tidy/bugprone/IntegerDivisionCheck.h (+31) - (added) install/include/clang-tidy/bugprone/LambdaFunctionNameCheck.h (+49) - (added) install/include/clang-tidy/bugprone/MacroParenthesesCheck.h (+39) - (added) install/include/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.h (+27) - (added) install/include/clang-tidy/bugprone/MisplacedOperatorInStrlenInAllocCheck.h (+32) - (added) install/include/clang-tidy/bugprone/MisplacedPointerArithmeticInAllocCheck.h (+32) - (added) install/include/clang-tidy/bugprone/MisplacedWideningCastCheck.h (+41) - (added) install/include/clang-tidy/bugprone/MoveForwardingReferenceCheck.h (+47) - (added) install/include/clang-tidy/bugprone/MultiLevelImplicitPointerConversionCheck.h (+33) - (added) install/include/clang-tidy/bugprone/MultipleNewInOneExpressionCheck.h (+31) - (added) install/include/clang-tidy/bugprone/MultipleStatementMacroCheck.h (+32) - (added) install/include/clang-tidy/bugprone/NarrowingConversionsCheck.h (+109) - (added) install/include/clang-tidy/bugprone/NoEscapeCheck.h (+35) - (added) install/include/clang-tidy/bugprone/NonZeroEnumToBoolConversionCheck.h (+36) - (added) install/include/clang-tidy/bugprone/NondeterministicPointerIterationOrderCheck.h (+39) - (added) install/include/clang-tidy/bugprone/NotNullTerminatedResultCheck.h (+63) - (added) install/include/clang-tidy/bugprone/OptionalValueConversionCheck.h (+38) - (added) install/include/clang-tidy/bugprone/ParentVirtualCallCheck.h (+30) - (added) install/include/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.h (+41) - (added) install/include/clang-tidy/bugprone/PosixReturnCheck.h (+26) - (added) install/include/clang-tidy/bugprone/RedundantBranchConditionCheck.h (+34) - (added) install/include/clang-tidy/bugprone/ReservedIdentifierCheck.h (+55) - (added) install/include/clang-tidy/bugprone/ReturnConstRefFromParameterCheck.h (+40) - (added) install/include/clang-tidy/bugprone/SharedPtrArrayMismatchCheck.h (+34) - (added) install/include/clang-tidy/bugprone/SignalHandlerCheck.h (+79) - (added) install/include/clang-tidy/bugprone/SignedCharMisuseCheck.h (+44) - (added) install/include/clang-tidy/bugprone/SizeofContainerCheck.h (+31) - (added) install/include/clang-tidy/bugprone/SizeofExpressionCheck.h (+39) - (added) install/include/clang-tidy/bugprone/SmartPtrArrayMismatchCheck.h (+48) - (added) install/include/clang-tidy/bugprone/SpuriouslyWakeUpFunctionsCheck.h (+33) - (added) install/include/clang-tidy/bugprone/StandaloneEmptyCheck.h (+34) - (added) install/include/clang-tidy/bugprone/StringConstructorCheck.h (+39) - (added) install/include/clang-tidy/bugprone/StringIntegerAssignmentCheck.h (+33) - (added) install/include/clang-tidy/bugprone/StringLiteralWithEmbeddedNulCheck.h (+30) - (added) install/include/clang-tidy/bugprone/StringviewNullptrCheck.h (+45) - (added) install/include/clang-tidy/bugprone/SuspiciousEnumUsageCheck.h (+37) - (added) install/include/clang-tidy/bugprone/SuspiciousIncludeCheck.h (+38) - (added) install/include/clang-tidy/bugprone/SuspiciousMemoryComparisonCheck.h (+31) - (added) install/include/clang-tidy/bugprone/SuspiciousMemsetUsageCheck.h (+33) - (added) install/include/clang-tidy/bugprone/SuspiciousMissingCommaCheck.h (+39) - (added) install/include/clang-tidy/bugprone/SuspiciousReallocUsageCheck.h (+32) - (added) install/include/clang-tidy/bugprone/SuspiciousSemicolonCheck.h (+31) - (added) install/include/clang-tidy/bugprone/SuspiciousStringCompareCheck.h (+35) - (added) install/include/clang-tidy/bugprone/SuspiciousStringviewDataUsageCheck.h (+38) - (added) install/include/clang-tidy/bugprone/SwappedArgumentsCheck.h (+27) - (added) install/include/clang-tidy/bugprone/SwitchMissingDefaultCaseCheck.h (+38) - (added) install/include/clang-tidy/bugprone/TaggedUnionMemberCountCheck.h (+41) - (added) install/include/clang-tidy/bugprone/TerminatingContinueCheck.h (+31) - (added) install/include/clang-tidy/bugprone/ThrowKeywordMissingCheck.h (+37) - (added) install/include/clang-tidy/bugprone/TooSmallLoopVariableCheck.h (+42) - (added) install/include/clang-tidy/bugprone/UncheckedOptionalAccessCheck.h (+45) - (added) install/include/clang-tidy/bugprone/UndefinedMemoryManipulationCheck.h (+32) - (added) install/include/clang-tidy/bugprone/UndelegatedConstructorCheck.h (+34) - (added) install/include/clang-tidy/bugprone/UnhandledExceptionAtNewCheck.h (+34) - (added) install/include/clang-tidy/bugprone/UnhandledSelfAssignmentCheck.h (+39) - (added) install/include/clang-tidy/bugprone/UnintendedCharOstreamOutputCheck.h (+39) - (added) install/include/clang-tidy/bugprone/UniquePtrArrayMismatchCheck.h (+34) - (added) install/include/clang-tidy/bugprone/UnsafeFunctionsCheck.h (+60) - (added) install/include/clang-tidy/bugprone/UnusedLocalNonTrivialVariableCheck.h (+44) - (added) install/include/clang-tidy/bugprone/UnusedRaiiCheck.h (+36) - (added) install/include/clang-tidy/bugprone/UnusedReturnValueCheck.h (+47) - (added) install/include/clang-tidy/bugprone/UseAfterMoveCheck.h (+34) - (added) install/include/clang-tidy/bugprone/VirtualNearMissCheck.h (+63) - (added) install/include/clang-tidy/cert/CommandProcessorCheck.h (+33) - (added) install/include/clang-tidy/cert/DefaultOperatorNewAlignmentCheck.h (+34) - (added) install/include/clang-tidy/cert/DontModifyStdNamespaceCheck.h (+34) - (added) install/include/clang-tidy/cert/FloatLoopCounter.h (+32) - (added) install/include/clang-tidy/cert/LimitedRandomnessCheck.h (+33) - (added) install/include/clang-tidy/cert/MutatingCopyCheck.h (+34) - (added) install/include/clang-tidy/cert/NonTrivialTypesLibcMemoryCallsCheck.h (+40) - (added) install/include/clang-tidy/cert/ProperlySeededRandomGeneratorCheck.h (+42) - (added) install/include/clang-tidy/cert/SetLongJmpCheck.h (+35) - (added) install/include/clang-tidy/cert/StaticObjectExceptionCheck.h (+34) - (added) install/include/clang-tidy/cert/StrToNumCheck.h (+31) - (added) install/include/clang-tidy/cert/ThrownExceptionTypeCheck.h (+33) - (added) install/include/clang-tidy/cert/VariadicFunctionDefCheck.h (+33) - (added) install/include/clang-tidy/concurrency/MtUnsafeCheck.h (+39) - (added) install/include/clang-tidy/concurrency/ThreadCanceltypeAsynchronousCheck.h (+30) - (added) install/include/clang-tidy/cppcoreguidelines/AvoidCapturingLambdaCoroutinesCheck.h (+33) - (added) install/include/clang-tidy/cppcoreguidelines/AvoidConstOrRefDataMembersCheck.h (+34) - (added) install/include/clang-tidy/cppcoreguidelines/AvoidDoWhileCheck.h (+37) - (added) install/include/clang-tidy/cppcoreguidelines/AvoidGotoCheck.h (+34) - (added) install/include/clang-tidy/cppcoreguidelines/AvoidNonConstGlobalVariablesCheck.h (+34) - (added) install/include/clang-tidy/cppcoreguidelines/AvoidReferenceCoroutineParametersCheck.h (+36) - (added) install/include/clang-tidy/cppcoreguidelines/InitVariablesCheck.h (+38) - (added) install/include/clang-tidy/cppcoreguidelines/InterfacesGlobalInitCheck.h (+30) - (added) install/include/clang-tidy/cppcoreguidelines/MacroUsageCheck.h (+53) - (added) install/include/clang-tidy/cppcoreguidelines/MisleadingCaptureDefaultByValueCheck.h (+36) - (added) install/include/clang-tidy/cppcoreguidelines/MissingStdForwardCheck.h (+38) - (added) install/include/clang-tidy/cppcoreguidelines/NoMallocCheck.h (+59) - (added) install/include/clang-tidy/cppcoreguidelines/NoSuspendWithLockCheck.h (+44) - (added) install/include/clang-tidy/cppcoreguidelines/OwningMemoryCheck.h (+64) - (added) install/include/clang-tidy/cppcoreguidelines/PreferMemberInitializerCheck.h (+33) - (added) install/include/clang-tidy/cppcoreguidelines/ProBoundsArrayToPointerDecayCheck.h (+33) - (added) install/include/clang-tidy/cppcoreguidelines/ProBoundsConstantArrayIndexCheck.h (+40) - (added) install/include/clang-tidy/cppcoreguidelines/ProBoundsPointerArithmeticCheck.h (+32) - (added) install/include/clang-tidy/cppcoreguidelines/ProTypeConstCastCheck.h (+39) ``````````diff diff --git a/check_remote_class_check.py b/check_remote_class_check.py new file mode 100644 index 0000000000000..2bd8f75ee9084 --- /dev/null +++ b/check_remote_class_check.py @@ -0,0 +1,86 @@ +import subprocess +import sys +import re +import requests +import yaml + +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + + + + +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] + +# GitHub API to fetch the PR diff +url = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}" +diff_url = f"{url}.diff" + +# Fetch the diff from GitHub API +print(f"š„ Fetching PR diff for PR #{PR_NUMBER} from GitHub...") +response = requests.get(diff_url, headers={"Accept": "application/vnd.github.v3.diff"}) + +if response.status_code != 200: + print(f"ā Failed to fetch PR diff or no changes found. Status Code: {response.status_code}") + sys.exit(1) + +# Get the diff content (only .cpp and .h files) +diff_text = response.text +if not diff_text.strip(): + print("ā No changes in the PR.") + sys.exit(0) + +# Get the list of modified .cpp and .h files in the PR +pr_files = [line.split(" ")[1][2:] for line in diff_text.splitlines() if line.startswith("+++")] +pr_files = [file for file in pr_files if file.endswith(".cpp") or file.endswith(".h")] + +if not pr_files: + print("ā No relevant .cpp or .h files to check in PR #$PR_NUMBER.") + sys.exit(0) + +# Initialize a list to store missing documentation info +missing_docs = [] + +# Process each file in the diff +for file in pr_files: + # Check if the file is a .cpp or .h file + if file.endswith(".cpp") or file.endswith(".h"): + # Get the diff for the modified file + file_diff = "\n".join( + [line[1:] for line in diff_text.splitlines() if line.startswith(('+', '-')) and line[2:].startswith(file)] + ) + + # Loop through each modified line in the file + for line in file_diff.splitlines(): + # Check if the line creates a class (i.e., contains "class ") + if "class " in line: + # Check the previous line to see if it has Doxygen documentation + prev_line = None + lines = file_diff.splitlines() + idx = lines.index(line) + if idx > 0: + prev_line = lines[idx - 1] + + # If the previous line is not a Doxygen comment, it's missing documentation + if prev_line and not prev_line.strip().startswith("/**"): + missing_docs.append((file, line)) + print(f"The following class is missing documentation: {file}") + print(f"Before: {prev_line}") + print(f"After: {line}") + print("Action: Please add a Doxygen comment above this class explaining its purpose and functionality.") + print("Example:") + print(" /**") + print(" * @brief Class description: What this class does.") + print(" * @details More detailed explanation if needed.") + print(" */") + print() + +# If missing documentation was found, exit with status 1 +if missing_docs: + sys.exit(1) +else: + print("All modified classes are properly documented.") + +print("LLVM CLASS CHECK COMPLETE") diff --git a/check_remote_llvmheader.py b/check_remote_llvmheader.py new file mode 100644 index 0000000000000..91ef567e166ad --- /dev/null +++ b/check_remote_llvmheader.py @@ -0,0 +1,83 @@ +import sys +import subprocess +import re +import yaml +import requests + +# === Load config.yaml === +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + +# === Configuration === +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] +LLVM_HEADER_TEMPLATE = "//===----------------------------------------------------------------------===//" +LLVM_LICENSE = "// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception" +FILE_EXTENSIONS = (".cpp", ".h") + +# === GitHub PR Diff URL === +DIFF_URL = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}.diff" + +# === Fetch PR Diff === +print(f"š„ Fetching PR diff for PR #{PR_NUMBER}...") +response = requests.get(DIFF_URL, headers={"Accept": "application/vnd.github.v3.diff"}) + +if response.status_code != 200: + print(f"ā Failed to fetch PR diff. Status: {response.status_code}") + sys.exit(1) + +diff_text = response.text +if not diff_text.strip(): + print("ā No changes in the PR.") + sys.exit(0) + +# === Extract Modified .cpp/.h Files === +pr_files = [ + line.split(" ")[1][2:] for line in diff_text.splitlines() + if line.startswith("+++ b/") and line.endswith(FILE_EXTENSIONS) +] + +if not pr_files: + print("ā No .cpp or .h files modified in this PR.") + sys.exit(0) + +print("\nš Checking headers in the following modified files:") +for file in pr_files: + print(" ā¢", file) + +# === Check Each File for LLVM Header in Modified Lines === +missing_header_files = [] + +for file in pr_files: + raw_url = f"https://raw.githubusercontent.com/{OWNER}/{REPO}/pull/{PR_NUMBER}/head/{file}" + file_response = requests.get(raw_url) + + if file_response.status_code != 200: + continue # Skip without printing a message if file is not found in PR head + + content = file_response.text + # Extract modified lines from the diff + modified_lines = [ + line[1:] for line in diff_text.splitlines() if line.startswith("+") and line[1:] not in content + ] + + # Check only the modified lines for the header + header_found = any( + LLVM_HEADER_TEMPLATE in line or LLVM_LICENSE in line for line in modified_lines + ) + + if not header_found: + print(f"\nā Missing or incorrect LLVM-style header in the modified lines of: {file}") + print("Expected header must include:") + print(f" {LLVM_HEADER_TEMPLATE}") + print(f" {LLVM_LICENSE}") + missing_header_files.append(file) + +# === Final Report === +if missing_header_files: + print(f"\nā {len(missing_header_files)} file(s) missing proper LLVM-style headers in modified lines.") + sys.exit(1) +else: + print("\nā All modified files contain correct LLVM-style headers in modified lines!") + sys.exit(0) diff --git a/check_remote_naming_conventions.py b/check_remote_naming_conventions.py new file mode 100644 index 0000000000000..10b68b83a7ef3 --- /dev/null +++ b/check_remote_naming_conventions.py @@ -0,0 +1,182 @@ +import sys +import requests +import re +import yaml + +# === Load Configuration === +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] + +EXTENSIONS = (".cpp", ".h") +DIFF_URL = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}.diff" + +# === Fetch PR Diff === +print(f"š„ Fetching PR diff for PR #{PR_NUMBER}...") +response = requests.get(DIFF_URL, headers={"Accept": "application/vnd.github.v3.diff"}) + +if response.status_code != 200: + print(f"ā Failed to fetch PR diff. Status: {response.status_code}") + sys.exit(1) + +diff_text = response.text +if not diff_text.strip(): + print("ā No changes in the PR.") + sys.exit(0) + +# === Regex Patterns === +class_pattern = re.compile(r"\bclass\s+([a-z]\w*)") +var_pattern = re.compile(r"\b(?:int|float|double|char|bool)\s+([A-Z]\w*)") +func_pattern = re.compile(r"\bvoid\s+([A-Z]\w*)\s*\(") +enum_pattern = re.compile(r"\benum\s+([a-z]\w*)") +enum_kind_pattern = re.compile(r"\benum\s+(?!.*Kind\b)(\w+)\b") + +# === Exempted Names === +EXEMPT_NAMES = {'RecursiveASTVisitor'} # Add any class or function names that you want to exempt + +violations = [] +current_file = None +line_number = 0 + +# === Process Diff === +for line in diff_text.splitlines(): + if line.startswith("+++ b/") and line.endswith(EXTENSIONS): + current_file = line[6:] + line_number = 0 + continue + + if not current_file: + continue + + if line.startswith("@@"): + match = re.search(r"\+(\d+)", line) + if match: + line_number = int(match.group(1)) - 1 + continue + + if line.startswith("+") and not line.startswith("+++"): + + line_number += 1 + code_line = line[1:] + + if (m := class_pattern.search(code_line)): + class_name = m.group(1) + # Skip if the class is in the exempted list + if class_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Class '{class_name}' should start with an uppercase letter.")) + + if (m := var_pattern.search(code_line)): + var_name = m.group(1) + # Skip if the variable is in the exempted list + if var_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Variable '{var_name}' should start with a lowercase letter in camelCase.")) + + if (m := func_pattern.search(code_line)): + func_name = m.group(1) + # Skip if the function is inimport sys +import requests +import re +import yaml + +# === Load Configuration === +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] + +EXTENSIONS = (".cpp", ".h") +DIFF_URL = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}.diff" + +# === Fetch PR Diff === +print(f"š„ Fetching PR diff for PR #{PR_NUMBER}...") +response = requests.get(DIFF_URL, headers={"Accept": "application/vnd.github.v3.diff"}) + +if response.status_code != 200: + print(f"ā Failed to fetch PR diff. Status: {response.status_code}") + sys.exit(1) + +diff_text = response.text +if not diff_text.strip(): + print("ā No changes in the PR.") + sys.exit(0) + +# === Regex Patterns === +class_pattern = re.compile(r"\bclass\s+([a-z]\w*)") +var_pattern = re.compile(r"\b(?:int|float|double|char|bool)\s+([A-Z]\w*)") +func_pattern = re.compile(r"\bvoid\s+([A-Z]\w*)\s*\(") +enum_pattern = re.compile(r"\benum\s+([a-z]\w*)") +enum_kind_pattern = re.compile(r"\benum\s+(?!.*Kind\b)(\w+)\b") + +# === Exempted Names === +EXEMPT_NAMES = {'RecursiveASTVisitor'} # Add any class or function names that you want to exempt + +violations = [] +current_file = None +line_number = 0 + +# === Process Diff === +for line in diff_text.splitlines(): + if line.startswith("+++ b/") and line.endswith(EXTENSIONS): + current_file = line[6:] + line_number = 0 + continue + + if not current_file: + continue + + if line.startswith("@@"): + match = re.search(r"\+(\d+)", line) + if match: + line_number = int(match.group(1)) - 1 + continue + + if line.startswith("+") and not line.startswith("+++"): + + line_number += 1 + code_line = line[1:] + + if (m := class_pattern.search(code_line)): + class_name = m.group(1) + # Skip if the class is in the exempted list + if class_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Class '{class_name}' should start with an uppercase letter.")) + + if (m := var_pattern.search(code_line)): + var_name = m.group(1) + # Skip if the variable is in the exempted list + if var_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Variable '{var_name}' should start with a lowercase letter in camelCase.")) + + if (m := func_pattern.search(code_line)): + func_name = m.group(1) + # Skip if the function is in the exempted list + if func_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Function '{func_name}' should start with a lowercase letter in camelCase.")) + + if (m := enum_pattern.search(code_line)): + enum_name = m.group(1) + violations.append((current_file, line_number, code_line, f"Enum '{enum_name}' should start with an uppercase letter.")) + + if (m := enum_kind_pattern.search(code_line)): + enum_kind_name = m.group(1) + violations.append((current_file, line_number, code_line, f"Enum type '{enum_kind_name}' should end with 'Kind' if used as a discriminator.")) + + elif line.startswith("-") or line.startswith(" "): + line_number += 1 + +# === Report Violations === +if violations: + print("\nā Naming convention violations found:\n") + for file, line, code, message in violations: + print(f"šø File: {file}, Line: {line}") + print(f"š¹ Code: {code.strip()}") + print(f"ā ļø {message}\n") + sys.exit(1) +else: + print("\nā All modified lines follow naming conventions.") + sys.exit(0) diff --git a/check_remote_pr_format.py b/check_remote_pr_format.py new file mode 100644 index 0000000000000..10b68b83a7ef3 --- /dev/null +++ b/check_remote_pr_format.py @@ -0,0 +1,182 @@ +import sys +import requests +import re +import yaml + +# === Load Configuration === +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] + +EXTENSIONS = (".cpp", ".h") +DIFF_URL = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}.diff" + +# === Fetch PR Diff === +print(f"š„ Fetching PR diff for PR #{PR_NUMBER}...") +response = requests.get(DIFF_URL, headers={"Accept": "application/vnd.github.v3.diff"}) + +if response.status_code != 200: + print(f"ā Failed to fetch PR diff. Status: {response.status_code}") + sys.exit(1) + +diff_text = response.text +if not diff_text.strip(): + print("ā No changes in the PR.") + sys.exit(0) + +# === Regex Patterns === +class_pattern = re.compile(r"\bclass\s+([a-z]\w*)") +var_pattern = re.compile(r"\b(?:int|float|double|char|bool)\s+([A-Z]\w*)") +func_pattern = re.compile(r"\bvoid\s+([A-Z]\w*)\s*\(") +enum_pattern = re.compile(r"\benum\s+([a-z]\w*)") +enum_kind_pattern = re.compile(r"\benum\s+(?!.*Kind\b)(\w+)\b") + +# === Exempted Names === +EXEMPT_NAMES = {'RecursiveASTVisitor'} # Add any class or function names that you want to exempt + +violations = [] +current_file = None +line_number = 0 + +# === Process Diff === +for line in diff_text.splitlines(): + if line.startswith("+++ b/") and line.endswith(EXTENSIONS): + current_file = line[6:] + line_number = 0 + continue + + if not current_file: + continue + + if line.startswith("@@"): + match = re.search(r"\+(\d+)", line) + if match: + line_number = int(match.group(1)) - 1 + continue + + if line.startswith("+") and not line.startswith("+++"): + + line_number += 1 + code_line = line[1:] + + if (m := class_pattern.search(code_line)): + class_name = m.group(1) + # Skip if the class is in the exempted list + if class_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Class '{class_name}' should start with an uppercase letter.")) + + if (m := var_pattern.search(code_line)): + var_name = m.group(1) + # Skip if the variable is in the exempted list + if var_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Variable '{var_name}' should start with a lowercase letter in camelCase.")) + + if (m := func_pattern.search(code_line)): + func_name = m.group(1) + # Skip if the function is inimport sys +import requests +import re +import yaml + +# === Load Configuration === +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] + +EXTENSIONS = (".cpp", ".h") +DIFF_URL = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}.diff" + +# === Fetch PR Diff === +print(f"š„ Fetching PR diff for PR #{PR_NUMBER}...") +response = requests.get(DIFF_URL, headers={"Accept": "application/vnd.github.v3.diff"}) + +if response.status_code != 200: + print(f"ā Failed to fetch PR diff. Status: {response.status_code}") + sys.exit(1) + +diff_text = response.text +if not diff_text.strip(): + print("ā No changes in the PR.") + sys.exit(0) + +# === Regex Patterns === +class_pattern = re.compile(r"\bclass\s+([a-z]\w*)") +var_pattern = re.compile(r"\b(?:int|float|double|char|bool)\s+([A-Z]\w*)") +func_pattern = re.compile(r"\bvoid\s+([A-Z]\w*)\s*\(") +enum_pattern = re.compile(r"\benum\s+([a-z]\w*)") +enum_kind_pattern = re.compile(r"\benum\s+(?!.*Kind\b)(\w+)\b") + +# === Exempted Names === +EXEMPT_NAMES = {'RecursiveASTVisitor'} # Add any class or function names that you want to exempt + +violations = [] +current_file = None +line_number = 0 + +# === Process Diff === +for line in diff_text.splitlines(): + if line.startswith("+++ b/") and line.endswith(EXTENSIONS): + current_file = line[6:] + line_number = 0 + continue + + if not current_file: + continue + + if line.startswith("@@"): + match = re.search(r"\+(\d+)", line) + if match: + line_number = int(match.group(1)) - 1 + continue + + if line.startswith("+") and not line.startswith("+++"): + + line_number += 1 + code_line = line[1:] + + if (m := class_pattern.search(code_line)): + class_name = m.group(1) + # Skip if the class is in the exempted list + if class_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Class '{class_name}' should start with an uppercase letter.")) + + if (m := var_pattern.search(code_line)): + var_name = m.group(1) + # Skip if the variable is in the exempted list + if var_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Variable '{var_name}' should start with a lowercase letter in camelCase.")) + + if (m := func_pattern.search(code_line)): + func_name = m.group(1) + # Skip if the function is in the exempted list + if func_name not in EXEMPT_NAMES: + violations.append((current_file, line_number, code_line, f"Function '{func_name}' should start with a lowercase letter in camelCase.")) + + if (m := enum_pattern.search(code_line)): + enum_name = m.group(1) + violations.append((current_file, line_number, code_line, f"Enum '{enum_name}' should start with an uppercase letter.")) + + if (m := enum_kind_pattern.search(code_line)): + enum_kind_name = m.group(1) + violations.append((current_file, line_number, code_line, f"Enum type '{enum_kind_name}' should end with 'Kind' if used as a discriminator.")) + + elif line.startswith("-") or line.startswith(" "): + line_number += 1 + +# === Report Violations === +if violations: + print("\nā Naming convention violations found:\n") + for file, line, code, message in violations: + print(f"šø File: {file}, Line: {line}") + print(f"š¹ Code: {code.strip()}") + print(f"ā ļø {message}\n") + sys.exit(1) +else: + print("\nā All modified lines follow naming conventions.") + sys.exit(0) diff --git a/check_remote_tidy_format.py b/check_remote_tidy_format.py new file mode 100644 index 0000000000000..b4d7c4dfdd048 --- /dev/null +++ b/check_remote_tidy_format.py @@ -0,0 +1,64 @@ +import subprocess +import sys +import re +import requests +import yaml + +# === Load config.yaml === +with open("config.yaml", "r") as f: + config = yaml.safe_load(f) + +# === Configuration === +PR_NUMBER = str(config["project"]["pr_number"]) +OWNER = config["project"]["owner"] +REPO = config["project"]["repo"] + +headers = { + "Accept": "application/vnd.github.v3.diff" +} + +# === Fetch PR Diff === +url = f"https://api.github.com/repos/{OWNER}/{REPO}/pulls/{PR_NUMBER}" +diff_url = f"{url}.diff" + +print(f"š„ F... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/136829 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits